Использование микробита BBC.
На микробите есть две кнопки, и в моем коде кнопка A предназначена для четных чисел, а кнопка B - для отрицательных чисел.Игра работает нормально, если числа равны только 1 или 0, в противном случае игра заканчивается, и я не уверен, почему это больше.порядок массива, первый номер в массиве является единственным, который будет принят.
#include "MicroBit.h"
MicroBit uBit;
bool game = true;
bool press = false;
int i;
int score;
int number;
int nextNumber;
int odd[5] = {1, 3, 5, 7, 9};
int even[5] = {0, 2, 4, 6, 8};
void endGame()
{
game = false;
}
void evenNumber()
{
if(number == even[i])
{
score++;
//number = nextNumber;
}
else
{
endGame();
}
}
void oddNumber()
{
if(number == odd[i])
{
score++;
//number = nextNumber;
}
else
{
endGame();
}
}
void onButtonA(MicroBitEvent)
{
evenNumber();
press = true;
}
void onButtonB(MicroBitEvent)
{
oddNumber();
press = true;
}
void reset(MicroBitEvent)
{
game = true;
}
int main()
{
// Initialise the micro:bit runtime.
uBit.init();
// Random number between 0 - 10
uBit.seedRandom(uBit.random(10));
number = uBit.random(10);
nextNumber = number;
while (game == true)
{
press = false;
number = nextNumber;
nextNumber = uBit.random(10);
// If numbers are the same, randomise again.
while(nextNumber == number)
{
nextNumber = uBit.random(10);
}
uBit.display.print(number);
// Button press and shake
uBit.messageBus.listen(MICROBIT_ID_BUTTON_A, MICROBIT_BUTTON_EVT_CLICK, onButtonA);
uBit.messageBus.listen(MICROBIT_ID_BUTTON_B, MICROBIT_BUTTON_EVT_CLICK, onButtonB);
uBit.messageBus.listen(MICROBIT_ID_ACCELEROMETER, MICROBIT_ACCELEROMETER_EVT_SHAKE, reset);
while (press == false){
uBit.sleep(100);
}
}
// Make sure we don't exit main
uBit.sleep(1000);
// Shows score
uBit.display.scroll("YOUR SCORE IS:", 80);
uBit.display.scroll(score, 80);
release_fiber();
}
Все четные числа до 8 должны работать при нажатии кнопки A и нечетные числа при нажатии кнопки B до9.