Java 安卓等距棋盘

Java 安卓等距棋盘,java,android,Java,Android,使用此代码,我从单棋盘中绘制等距棋盘bmpWhite和bmpBlack for (int i = 0; i < 7; i++) { for (int j = 0; j < 7; j++) { if (white == true) { color[i][j] = 0; white = false; } else { co

使用此代码,我从单棋盘中绘制等距棋盘
bmpWhite
bmpBlack

for (int i = 0; i < 7; i++) {
        for (int j = 0; j < 7; j++) {
            if (white == true) {
            color[i][j] = 0;
            white = false;
            }
            else {
                color[i][j] = 1;
                white = true;
            }
        }
    }
}
for(int i=0;i<7;i++){
对于(int j=0;j<7;j++){
如果(白色==真){
颜色[i][j]=0;
白色=假;
}
否则{
颜色[i][j]=1;
白色=真;
}
}
}
}

public void onDraw(画布)
{
如果(gameViewWidth==0)
{
gameViewWidth=theGameView.getWidth();
GameView高度=GameView.getHeight();
}
对于(int xx=0;xx<7;xx++)
{
对于(int-yy=0;yy<7;yy++)
{
int x_start=(yy*23);
int y_start=(游戏视图高度/2)+(yy*12);
int xx1=x_开始+(xx*23);
int yy1=y_开始-(xx*12);
如果(颜色[xx][yy]==0)
{
canvas.drawBitmap(bmpWhite,xx1,yy1,null);
}
else if(颜色[xx][yy]==1)
{
canvas.drawBitmap(bmpBlack,xx1,yy1,null);
}
}
}
输出应为具有交替颜色的棋盘(8x8)。但输出如下:

正如您所看到的,底部和顶部的最后两行是相同的颜色。 我做错了什么?

你写了:

for (int i = 0; i < 7; i++) {
    for (int j = 0; j < 7; j++) {
        if (white == true) {
            color[i][j] = 0;
            white = false;
        }
        else {
            color[i][j] = 1;
            white = true;
        }
    }
}
for(int i=0;i<7;i++){
对于(int j=0;j<7;j++){
如果(白色==真){
颜色[i][j]=0;
白色=假;
}
否则{
颜色[i][j]=1;
白色=真;
}
}
}
但是你有一块8*8的板。所以你必须写:

for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
        if (white) {
        color[i][j] = 0;
        white = false;
        }
        else {
            color[i][j] = 1;
            white = true;
        }
    }
}
for(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
如果(白色){
颜色[i][j]=0;
白色=假;
}
否则{
颜色[i][j]=1;
白色=真;
}
}
}
对于代码的第二部分,您已经编写了:

for (int i = 0; i < 7; i++) {
    for (int j = 0; j < 7; j++) {
        if (white == true) {
            color[i][j] = 0;
            white = false;
        }
        else {
            color[i][j] = 1;
            white = true;
        }
    }
}
for(int i=0;i<7;i++){
对于(int j=0;j<7;j++){
如果(白色==真){
颜色[i][j]=0;
白色=假;
}
否则{
颜色[i][j]=1;
白色=真;
}
}
}
但是你有一块8*8的板。所以你必须写:

for (int i = 0; i < 8; i++) {
    for (int j = 0; j < 8; j++) {
        if (white) {
        color[i][j] = 0;
        white = false;
        }
        else {
            color[i][j] = 1;
            white = true;
        }
    }
}
for(int i=0;i<8;i++){
对于(int j=0;j<8;j++){
如果(白色){
颜色[i][j]=0;
白色=假;
}
否则{
颜色[i][j]=1;
白色=真;
}
}
}

同样,对于代码的第二部分,for循环只循环了6次。从0开始是正确的,但要使其
int i=0;i<7;i++
it循环短1。尝试使其
int i=0;ifor循环只循环6次。从0开始是正确的,但要使其
int i=0;i<7;i++
it循环1短。试着让它
int i=0;我好了,现在我知道问题出在哪里了:当应用程序画最后一行时,它会把它画成两行。但是为什么?我想在每个循环中,你都会把黑板上剩下的东西涂上颜色。我不完全理解你的代码。好了,现在我知道问题出在哪里了:当应用程序画最后一行时,它会把它画成两行。但是,为什么是吗?我想在每个循环中,你都会给电路板上留下的东西上色。我不完全理解你的代码。