/** * Twitch or shudder. */ void ModeLibrary::twitch() { // Pick random motors to twitch double twitchValA = 0.0; double twitchValB = 0.0; double twitchValC = 0.0; if ( coinFlip() ) { twitchValA = 0.2; } if ( coinFlip() ) { twitchValB = 0.2; } if ( coinFlip() ) { twitchValC = 0.2; } for ( int i=0; i<rand()%20+10; i++ ) { robotDo( servoA + twitchValA, servoB + twitchValB, servoC + twitchValC, ledR, ledG, ledB ); robotDo( servoA, servoB, servoC, ledR, ledG, ledB ); } }
float randomFloat(int max, int divide, bool neg) { if (neg) if (coinFlip()) return ((static_cast<float>(rand() % max) / divide) * -1); return (static_cast<float>(rand() % max) / divide); }
/** * Jab in some direction and return back */ void ModeLibrary::jab() { // Remember our starting position. double svA = servoA; double svB = servoB; double svC = servoC; // Pick a random direction to jab in. switch( rand()%6 ) { case 0: servoC =- 0.5; updateServos(); robotRamp(2, 1.0, 1.0, -1.0 ); break; case 1: servoB =- 0.5; updateServos(); robotRamp(2, 1.0, -1.0, 1.0 ); break; case 2: servoB =- 0.5; servoC =- 0.5; updateServos(); robotRamp(2, 1.0, -1.0, -1.0 ); break; case 3: servoA =- 0.5; servoC =- 0.5; updateServos(); robotRamp(2, -1.0, 1.0, -1.0 ); break; case 4: servoA =- 0.5; servoB =- 0.5; updateServos(); robotRamp(2, -1.0, -1.0, 1.0 ); break; case 5: servoA =- 0.5; updateServos(); robotRamp(2, -1.0, 1.0, 1.0 ); break; } pause(100, 300); // Sometimes recoil from jab if ( coinFlip() ) { robotRamp( 6, svA, svB, svC ); pause(1, 300); } }
/** * Set up game with default values */ void setUpGame (ticTacToeBoard* selector, char *charPtr, unsigned short int* intPtr) { // Sets turn number to 0 *intPtr = 1; // Stores number of players as "num_players" intPtr[1] = numberOfPlayers(); // Stores selected player as "user" charPtr[41] = playerSelect(); // If there is an AI, ask for difficulty if(intPtr[1] == 1) intPtr[2] = findDifficulty(selector); // Flip coin to see who goes first coinFlip(charPtr); // Create a fresh board initBoard(charPtr); }