C++ tic tac toe仅使用功能。在C++;

C++ tic tac toe仅使用功能。在C++;,c++,C++,我被要求做一个只有一个人玩的井字游戏。使用2d数组和函数。我不允许全局声明数组或任何变量。 . 数组必须在main函数中声明。 . 但我认为,除了在全球范围内宣布这一点之外,没有其他办法。 虽然游戏运行正常,但我只是想帮助您根据要求的条件编写此代码 #include <iostream> #include <cstdlib> #include <time.h> #include <windows.h> using namespace s

我被要求做一个只有一个人玩的井字游戏。使用2d数组和函数。我不允许全局声明数组或任何变量。 . 数组必须在main函数中声明。 . 但我认为,除了在全球范围内宣布这一点之外,没有其他办法。 虽然游戏运行正常,但我只是想帮助您根据要求的条件编写此代码

#include  <iostream>
#include   <cstdlib>
#include    <time.h>
#include <windows.h>
using namespace std;

  char choice, O, X;
  char matrix[3][3];  //intitial size matrix declaration    
  //         [y][x] 

void  choice_sign  (void);
void  init_matrix  (void);
void  human_input  (void);
void  count_down   (void);
void  comp_input   (void);
void  disp_matrix  (void);
char  check        (void);

int main(){

start:  
     char win =' ';
     init_matrix();
     choice_sign();


do{

     disp_matrix();                         // displaying the initial empty matrix
     human_input();                         // getting human input
     win = check();            // if the winner is found by check(),by the 
#包括
#包括
#包括
#包括
使用名称空间std;
字符选择,O,X;
字符矩阵[3][3]//初始大小矩阵声明
//[y][x]
无效选择标志(无效);
void init_矩阵(void);
作废人工输入(作废);
作废倒计时(作废);
无效组件输入(无效);
void disp_矩阵(void);
字符检查(无效);
int main(){
开始:
char-win='';
init_矩阵();
选择符号();
做{
disp_matrix();//显示初始空矩阵
人工输入();//获取人工输入
win=check();//如果通过check()找到获胜者,则

一种方法是将数组传递给函数调用

int main(){
     char matrix[3][3];
     init_matrix(matrix);
}
您实际上是在传递一个指向
矩阵
中第一个元素的指针,因此在函数调用中可以看到更改

但是,您可以放弃使用静态数组,使用一种现代的数组,如
std::vector
std::array
,并通过引用在函数调用中传递它:

#include <vector>
using std::vector;
int main(){
    vector<vector<char>> matrix(3, vector<char> (3, ' '));
    // In that case you don't need init_matrix.
    disp_matrix(matrix); 
}
#包括
使用std::vector;
int main(){
向量矩阵(3,向量(3,');
//在这种情况下,不需要init_矩阵。
显示矩阵(矩阵);
}
void disp_矩阵(向量和矩阵);{//使用与`&`运算符通过引用传递。
//....
}

你用C++学习的教科书,它一定很老,而且显示的代码使用了许多过时的语法,这些语法在几十年内都没有被使用。你能尝试找到并切换到一个更新的C++教科书吗?虽然这看起来很有效,但是有一个更好的方法来传递数组,而不是指针,所以你可以在里面显示。事实上,这里使用的适当数据结构可能是
std::vector
std::array
,因此您可能也想演示如何使用它。@cigien确实如此。但是,“我不允许全局声明数组或任何变量。”Goto语法让我觉得这是一种学校作业,在某些情况下是不允许使用内置容器的,不过谢谢你的提示,我会更新我的答案。谢谢你更新答案,现在好多了。注意回答时有2件事要考虑:一是帮助OP,这是YO的第一部分。你的答案是这样的。第二个是为未来的访客提供一个有用的答案,他们可能不会受到与OP完全相同的限制。现在,你答案的第二部分也这样做:)@cigien谢谢你的提示,请记住。@a.Li,我无法得到这个答案。它向我显示了同样的声明错误。
#include <vector>
using std::vector;
int main(){
    vector<vector<char>> matrix(3, vector<char> (3, ' '));
    // In that case you don't need init_matrix.
    disp_matrix(matrix); 
}
void disp_matrix(vector<vector<char>>& matrix); { // passing by reference using ampersand `&` operator. 
    //....
}