C++ 数组问题

标签 c++ arrays

我试图构建一个井字游戏,由于某种原因,当我尝试将一个值放入任何值时,似乎遇到了一个错误,它似乎给了选定的角色(比如它的玩家 1,和因此一个'X'),进入用户选择的值(他想要它的位置),但也烦人地进入数组的[1] [2]和[2] [0]。附上代码。

#include "stdafx.h"
#include <iostream>
#include <string>
#include <ctime>
#include <cstdlib>

using namespace System;
using namespace std;

string game_board[2][2];
bool exit_condition = false;
int x_coords;
int y_coords;
int current_player;
string cp_char;

int returnxwin();
int returnowin();

int main()
{
    cout << "Welcome to Tic-Tac-Toe Console!\n" << endl;

    //Start of game
    while(exit_condition != true){
        cout << "This is the game board: " << endl;
        cout << " - | 1 | 2 | 3 | " << endl;
        cout << " 1 | " << game_board[0][0] <<" | " <<game_board[1][0] << " | " << game_board[2][0] << " | " <<endl;
        cout << " 2 | " << game_board[0][1] <<" | " <<game_board[1][1] << " | " << game_board[2][1] << " | "<<endl;
        cout << " 3 | " << game_board[0][2] <<" | " <<game_board[1][2] << " | " << game_board[2][2] << " | \n"<<endl;

        //TESTING PURPOSES BE SURE TO REMOVE!
        current_player = 1;

        //Says which player is first
        cout << "Player " << current_player << " is first!" << endl;

        //Determines which player is first, and if so, which character to give to them.
        if(current_player == 1)
        {
            cp_char = "X";
        } else if(current_player == 2) 
        {
            cp_char = "Y";
        }

        bool valid_input = false;

        while(valid_input != true){
            cout << "Where would you like to place your " << cp_char << " ? (X co-ordinates(top row))\n" ;
            cin >> x_coords;
            cout << "Where would you like to place your " << cp_char << " ? (Y co-ordinates(side row))\n" ;
            cin >> y_coords;

            if((x_coords <= 3) && (y_coords <=3))
            {
                if(game_board[x_coords-1][y_coords-1] == "")
                {
                    game_board[1][2] = "";
                    game_board[2][0] = "";
                    //Problem Here!
                    game_board[x_coords-1][y_coords-1] = cp_char;
                    break;
                    valid_input = true;
                }
                else
                {
                    cout << "Invalid Input! Somebody has already taken the slot!" << endl;
                }
            }
            else
            {
                cout << "Invalid input! Please enter a number from 1 to 3" << endl;
            }
        }
        //End of Valid Input Loop

        //make sure to remove break; 
        // break;
    }

    system("pause");
    return 0;
}

我还没有完成游戏,但不知道为什么会这样:s

另一方面,我也在寻找一种随机决定玩家 1 或 2 先走的方法。

编辑:我尝试按照建议执行 [3][3],但它仍然给我一个错误。想法?

最佳答案

game_board 定义为 2x2 字符串数组,应该是 3x3 吗?

string game_board[3][3]

我猜你正在遍历数组,所以你得到了未定义的结果..

关于随机选择哪个玩家开始的方法,只需使用 rand()功能:

srand(time(NULL)); // to initialize the random sequence

current_player = rand()%2 + 1; //player will be either 1 or 2

关于C++ 数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9336107/

相关文章:

c++ - Xorshift1024* 跳转不可交换?

arrays - PowerShell从函数返回单个元素数组

java - 如何将项目添加到列表类型的字符串数组中?

php - MySQL中具有两个以上维度的表

c - ~ 标准输出没有响应 ~ C 语言

c++ - 字节串转十六进制串

c++ - 创建密文时出现 Crypto++ 错误

c++ - 在 C++ 中使用临时对象时的返回值优化 (RVO)

c++ - 使用从 unique_ptr 到基类的 shared_ptr 时,enable_shared_from_this 未初始化。为什么?

.net - 在 python 数组和 .NET 数组之间转换