// // Rafraîchit l'affichage pendant une partie. // Affiche le plateau de jeu, ainsi qu'un résumé des informations sur la partie en cours. // void refreshGameDisplay(GameState *state) { if(state == NULL) return; clear(); set_tabsize(4); //taille des tabulations displayGameBoard(state); //affichage du plateau de jeu displayGameStatus(state); //affichage d'infos sur le déroulement du jeu displayScores(state); //affichage des scores displayCommands(); //affichage d'une aide sur les commandes disponibles //si on est en solo : affichage des messages de capture if(state->playersCount == 1) displayRobotCaptureMessage(state->robots); }
void robotPlace(int *recEmptiesArray, int recCurPos) { int ChosenColIndex=0; //determines which columns are possible (not full) based on empites array int PossibleIndices[MAXCOL] = {0, 0, 0, 0, 0, 0, 0}; int count = 0; ChosenColIndex = Strategy(); if (ChosenColIndex == -1) { for (int col = 0; col < MAXCOL; col ++) { if (recEmptiesArray[col] >= 0) { PossibleIndices[count] = col; count += 1; } } count -= 1; /*corrects for count going one too far at this point, Possible indices contains the column indices of non-full columns and count contains how many not full columns there are */ ChosenColIndex = PossibleIndices[random[count]]; // random number between 0 and count displayString(4, "ChosenCol: %d", ChosenColIndex); } //now place piece in the selected column GameBoard[recEmptiesArray[ChosenColIndex]][ChosenColIndex] = 2; updateEmpties(recEmptiesArray); displayEmpties(recEmptiesArray); displayGameBoard(); moveHor(recCurPos, ChosenColIndex); //wait to give robot a change to stabilize wait1Msec(stabilize); dropPiece(); }
int P_moveUpdate(int *emptiesToCheck) { //Assumed home position is at 3,-2 int curCol = -2; int curRow = 3; //moves to each column for(int i = 0; i < MAXCOL; i ++) { moveHor(curCol, i); curCol = i; wait1Msec(stabilize); //if it is necessary to check for a piece in this column if (emptiesToCheck[i] >= 0) { moveVert(curRow, emptiesToCheck[i]); curRow = emptiesToCheck[i]; displayString(MAXROW+2, "check Row: %i ", curRow); displayString(MAXROW+3, "check Col: %i ", curCol); if (SensorRaw(S2) > redVal) { GameBoard[curRow][curCol] = 1; //updates gameboard that a piece is there displayGameBoard(); updateEmpties(emptiesToCheck); displayEmpties(emptiesToCheck); playSound(soundBeepBeep); moveVert(curRow, 3); //resets light sensor to bottom return curCol; } } } moveVert(curRow, 3); //resets light sensor to bottom return curCol; //in theory, this will never be required, just for compiling }
task main() { int EmptiesArray[MAXCOL] = {3, 3, 3, 3, 3, 3, 3}; SensorType[S1] = sensorI2CCustom9V; SensorType[S2] = sensorColorNxtRED; SensorType[S3] = sensorTouch; //used for recalibration SensorType[S4] = sensorSONAR; while(SensorValue(S4) == 255){} playSound(soundDownwardTones); time1[T1] = 0; int curPos = -2; motor[motorA] = 10; motor[motorB] = 10; while(SensorValue[S3] != 1) {} motor[motorA] = 0; motor[motorB] = 0; displayGameBoard(); do { updateEmpties(EmptiesArray); robotPlace(EmptiesArray, curPos); if (!isFinish()) { clearTimer(T1); while (time1[T1]<5000) { if (time1[T1]%1000==0) { playTone (650,50); wait1Msec(800); clearSounds(); } } playTone (850, 50); curPos = P_moveUpdate(EmptiesArray); } } while(!isFinish()); playTone(695, 14); while(bSoundActive); playTone(695, 14); while(bSoundActive); playTone(695, 14); while(bSoundActive); playTone(929, 83); while(bSoundActive); playTone(1401, 83); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1188, 14); while(bSoundActive); playTone(1054, 14); while(bSoundActive); playTone(1841, 83); while(bSoundActive); playTone(1401, 41); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1188, 14); while(bSoundActive); playTone(1054, 14); while(bSoundActive); playTone(1841, 83); while(bSoundActive); playTone(1401, 41); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1188, 14); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1054, 55); while(bSoundActive); wait1Msec(280); playTone(695, 14); while(bSoundActive); playTone(695, 14); while(bSoundActive); playTone(695, 14); while(bSoundActive); playTone(929, 83); while(bSoundActive); playTone(1401, 83); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1188, 14); while(bSoundActive); playTone(1054, 14); while(bSoundActive); playTone(1841, 83); while(bSoundActive); playTone(1401, 41); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1188, 14); while(bSoundActive); playTone(1054, 14); while(bSoundActive); playTone(1841, 83); while(bSoundActive); playTone(1401, 41); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1188, 14); while(bSoundActive); playTone(1251, 14); while(bSoundActive); playTone(1054, 55); while(bSoundActive);//[3] wait1Msec(280); }