为什么我的数组只接受它们中的第一个数字
Why are my arrays only accepting the first digits in the both of them?
使用 BBC Micro bit。
微型位上有两个按钮,在我的代码中,按钮 A 用于偶数,按钮 B 用于负数。如果数字只有 1 或 0,游戏运行良好,其他任何东西都会结束游戏,我不确定为什么了。
尝试在数组中仅使用 1 个数字并且它有效,甚至更改数组的顺序,数组中的第一个数字是唯一被接受的数字。
#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。
欢迎来到 Stackoverflow。我复制了你的问题。这是一些对我有用的代码。我删除了一些不再需要的行。正如@RetiredNinja所说,您需要更改检查奇数和偶数的方式。
#include "MicroBit.h"
MicroBit uBit;
bool game = true;
bool press = false;
int score;
int number;
int nextNumber;
void endGame()
{
game = false;
}
void evenNumber()
{
if(number%2 == 0)
{
score++;
//number = nextNumber;
}
else
{
endGame();
}
}
void oddNumber()
{
if(number%2 == 1)
{
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();
}
相关文章:
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 我必须更改我的数字最后一个数字和第一个数字,但不要使用仅带有整数或循环的函数.例如从 12345 到 52341
- 为什么字符串流只读取整数中的第一个数字?如何使它只在空白处移动?
- 说单精度碰撞的第一个数字是 131072.02 是否正确?(阳性,将 2 位数字视为尾数)
- 如何在 c++ 中将第一个数字移动到数字的末尾
- C 搜索算法第一个数字= n
- 为什么我的数组只接受它们中的第一个数字
- 给定一个数字n,打印序列中大于或等于n的第一个数字
- 如何从文件中获取数字行并忽略第一个数字
- 打印由用户定义的数组,第一个数字确定单词的大小,第二个数字确定行的大小
- 两个非常大的数字的乘积的第一个数字
- for循环在将第一个数字放入数组后退出
- 查找双精度数组中的第一个数字
- 获取线 CIN 忽略输入中的第一个数字
- 默认值仅适用于 8 和 9.之后,它使用第一个数字并将其视为 1,2,3
- Atoi 仅返回 char* 参数的第一个数字
- 如何从C++文件中读取第一个数字
- c++中的随机数生成第一个数字不是随机的
- 如何打印输入的第一个数字?
- 计算文本文件每行的第一个数字