不能在同一个函数中更改数组两次? (C++)

问题描述 投票:0回答:1

但是,我试图从添加它们的同一函数中删除添加到数组中的字符。它似乎不起作用。因为它根本不做任何事情。

(这是我作为业余爱好制作的贪吃蛇游戏)

我预计数组会正常更改,并且蛇的先前部分会被删除。但它实际上并没有这样做。 并将之前的部分留在那里,不会给我错误或删除任何内容。 我已经尝试在 movesnake 函数移动蛇后每次调用 resetboard 函数,但是这使得蛇只是在一个地方闲逛而没有移动。我还尝试更改蛇的起始位置,以防 0-1 在我的数组中给我一个错误,但这也没有做任何事情。 (这只是一个非常粗略的练习版本,让我更多地了解c++,所以在完成的游戏中所有这些代码都会被更改)

#include <iostream>
#include <string>
#include <windows.h>
#include <stdlib.h>
#include <thread>

using namespace std;

char board[10][10];

void resetboard(){
    for (int i=0;i <= 9;i++){
        for(int y=0;y <= 9;y++){
            board[i][y] = 'x';
}
}
}



//COMPLETELY CHANGE THE MOVESNAKE FUNCTION

void movesnake(){
    while(1){
            unsigned int snakecoord1 = 0;
            unsigned int snakecoord2 = 0;
            while(snakecoord1 <= 9){
               board[snakecoord1][snakecoord2] = 'E';
               /*code thats "broken"
               board[snakecoord1-1][snakecoord2] = 'x';
               */
               snakecoord1++;
        
               Sleep(1*1000);
            }
            }


}


void updateboard(){


while(1){
int rows = 0;
int columns = 0;



    do{
    do{
    cout << board[rows][columns];
    cout << " ";
    rows++;


    }while(rows <= 9);
    rows = 0;
    cout << "\n";
    columns++;

    }while(columns <= 9);
    Sleep(1*1000);
    thread moveplayer(movesnake);
    moveplayer.detach();

   
    system("CLS");
}
}




int main(){
resetboard();
thread printboard(updateboard);
printboard.detach();
Sleep(10*1000);
system("CLS");
}


c++ multidimensional-array
1个回答
0
投票

我的程序中似乎有太多线程都想同时访问板。我以这样的方式更改了它,以便唯一分离的线程是更新板线程。

© www.soinside.com 2019 - 2024. All rights reserved.