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