我目前正在开发一个自动跳棋板。我已经使用三个类在 C++ 中对其进行了编码,然后进行了必要的更改以将其用作 Arduino 上的库。C++ 代码分为三个类,它们为棋盘的位置启动一个 8 x 8 数组,并跟踪棋盘上棋子的移动。
我认为转换为 Arduino 库是正确的,因为我能够编译草图而没有任何错误。但是当我将它上传到 ADK Mega 时,即使是简单的命令,例如Serial.print()
.
这是草图:
#include <Board.h>
Board myBoard ;
int currentTurn=0;
int order[4][4]={{0,2,1,3},{1,5,2,4},{4,2,5,3},{2,4,0,2}};
int k=0;
int *A;
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
A=myBoard.arr();
for (int i=0; i<98; i++)
{
Serial.print(A[i]);
}
command[0]=order[k][0];
command[1]=order[k][1];
command[2]=order[k][2];
command[3]=order[k][3];
myBoard.processCommand(command,currentTurn);
if(myBoard.nextTurn())
{
if(currentTurn==0)
{
currentTurn=1;
digitalWrite(13,HIGH);
delay(3000);
}
else
{
currentTurn=0;
digitalWrite(13,LOW);
delay(3000);
}
}
k++;
}
基本上,该类返回一个由 0 和 1 组成的数组,其中包含有关棋子位置的信息。但是,一旦我上传草图,什么都没有发生!
有谁知道为什么会发生这种情况?
如果有人认为问题可能存在,这是 Board 类的构造函数
编辑
Board::Board()
{
bool gameFinished=false;
bool turnChange=false;
initBoard();
initPawns();
}
我已经更改了构造函数以简化事情。对象数组现在被创建为标题中的公共成员:Pawn myPawns[24]。程序现在可以正常运行,我可以打印数组,但仅限于 void loop() 中的第一次迭代,之后打印的数组对应于空棋盘(不存在棋子)。我怀疑程序在第一次迭代后没有正确访问 Pawns 数组 - 当调用构造函数时 - 。动态分配 Pawns 数组会解决这个问题吗?