bool CGlass::UseWithOtherMsg(CUseWithOtherMsg *msg) { CSauceDispensor *dispensor = dynamic_cast<CSauceDispensor *>(msg->_other); CChicken *chicken = dynamic_cast<CChicken *>(msg->_other); if (dispensor && _condiment == "None") { CUse useMsg(this); useMsg.execute(dispensor); } else if (msg->_other->isEquals("Chicken") && _condiment == "None") { if (chicken->_condiment != "None") { if (!chicken->_greasy) { CActMsg actMsg(_condiment); actMsg.execute("Chicken"); } _condiment = "None"; loadFrame(0); _visibleFrame = 0; } petAddToInventory(); } else if (msg->_other->isEquals("Napkin") && _condiment == "None") { petAddToInventory(); _condiment = "None"; loadFrame(0); _visibleFrame = 0; } else { petAddToInventory(); } return true; }
bool CGlass::MouseDragEndMsg(CMouseDragEndMsg *msg) { showMouse(); if (msg->_dropTarget) { if (msg->_dropTarget->isPet()) { petAddToInventory(); } else { CCharacter *npc = dynamic_cast<CCharacter *>(msg->_dropTarget); if (npc) { CUseWithCharMsg useMsg(npc); useMsg.execute(this); } else { CUseWithOtherMsg otherMsg(msg->_dropTarget); otherMsg.execute(this); } } } else if (compareViewNameTo(_fullViewName) && msg->_mousePos.y < 360) { setPosition(_origPos); } else { petAddToInventory(); } return true; }
int main( int argc, char **argv ) { char *progname = argv[0]; FILE *in , *out; char opt; int i; double startTime; C = 0; kernelType = -1; degree = 0; sigmaSqr = 0; binaryFeature = 0; /* Check command line options */ optarg = NULL; while (((opt = getopt(argc, argv, OPTSTRING)) != -1)) { switch(opt) { case 't': if ( strcmp(optarg, "0") == 0 ) kernelType = 0; else if ( strcmp(optarg, "1") == 0 ) kernelType = 1; else if ( strcmp(optarg, "2") == 0 ) kernelType = 2; else { fprintf( stderr, "kernel type is either 0,1 or 2\n"); exit(1); } break; case 'c': if( sscanf(optarg, "%f", &C) == 0 ) { fprintf(stderr,"Expect a positive number for C.\n"); exit(1); } else C = atof(optarg); if( C <= 0 ) { fprintf( stderr, "C has to be > 0\n"); exit(1); } break; case 'd': if( sscanf(optarg, "%d", °ree) == 0 ) { fprintf( stderr, "Expect degree to be a positive integer.\n"); exit(1); } else degree = atoi(optarg); if ( degree <= 0 ) { fprintf( stderr, "degree has to be a positive integer.\n"); exit(1); } break; case 'v': if( sscanf(optarg, "%f", &sigmaSqr) == 0 ) { fprintf(stderr,"Expect a positive number for variance.\n"); exit(1); } else sigmaSqr = atof(optarg); if( sigmaSqr <= 0 ) { fprintf( stderr, "variance has to be > 0\n"); exit(1); } rbfConstant = 1/(2*sigmaSqr); break; case 'b': if( sscanf(optarg, "%d", &binaryFeature) == 0 ) { fprintf( stderr, "binaryFeature option is either 0 or 1.\n"); exit(1); } else binaryFeature = atoi(optarg); if ( binaryFeature != 0 && binaryFeature != 1 ) { fprintf( stderr, "binaryFeature option is either 0 or 1.\n"); exit(1); } break; case 'h': useMsg( progname ); exit(1); break; default: useMsg( progname ); exit(1); break; } } /* Check all necessary parameters are in */ if( kernelType == -1 ) { fprintf( stderr, "Kernel type has not been specified.\n"); exit(2); } else if( kernelType == 1 && degree == 0 ) { fprintf( stderr, "Degree has not been specified.\n"); exit(2); } else if( kernelType == 2 && sigmaSqr == 0 ){ fprintf( stderr, "Variance has not been specified.\n"); exit(2); } else if( C == 0 ) C = DEFAULT; /* Check training file and model file */ printf("INPUT FILE %s\n", argv[argc-2]); if (( in = fopen( argv[argc-2], "r") ) == NULL ) { fprintf( stderr, "Can't open %s\n", argv[argc-2] ); exit(2); } if (( out = fopen( argv[argc-1], "w") ) == NULL ) { fprintf( stderr, "Can't open %s\n", argv[argc-1] ); exit(2); } printf("smo_learn is preparing to learn. . .\n"); if( ! readFile( in ) ) { fprintf( stderr, "Error in initializing. Program exits.\n" ); exit (1); } else fclose( in ); if( !initializeTraining()) { fprintf( stderr, "Error in initializing data structure. Program exits.\n"); exit(1); } printf("Start training . . .\n"); startTime = clock()/CLOCKS_PER_SEC; startLearn(); printf("Training is completed\n"); /* Print training statistics */ printf("CPU time is %f secs\n", clock()/CLOCKS_PER_SEC-startTime); printf("Writing training results . . .\n"); writeModel( out ); fclose( out ); printf("Finish writing training results.\n"); printf("no of iteration is %f\n", iteration); printf("threshold b is %f\n", getb()); if ( kernelType == 0 ) printf("norm of weight vector is %f\n", calculateNorm()); printf("no. of unBound multipliers is %d\n", unBoundSv ); printf("no. of bounded multipliers is %d\n", boundSv ); /* Free memory */ free( target ); free( lambda ); free( nonZeroFeature ); free( error ); free( nonBound ); free( weight ); free( unBoundIndex ); free( nonZeroLambda ); for( i = 0; i <= numExample; i++ ) { free( example[i] ); } free( example ); free( errorCache ); return 0; }