所以我正在为一个学校项目制作一个基本的tic-tac-toe程序,我正在尝试使用bool值来结束激活组合时的游戏。我目前正在使用C ++ WinForm来显示游戏。我有一个运行代码的MyForm.cpp和MyForm.h。
代码在MyForm.h文件中,我在MyForm.cpp中唯一拥有的是运行Form的命令。
如果您需要MyForm.cpp代码:
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThread]
void Main(array<String^>^ args)
{
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
Tic_Tac_Toe::MyForm form;
Application::Run(%form);
}
MyForm.h代码的开头
以下是我的bool值:
char player = 'X';
bool b1x = false;
bool b1o = false;
以下是单击按钮时触发bool的代码:
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
if (player == 'X' && b1o == false) {
button1->BackgroundImage = Image::FromFile("File_Location");
b1x = true;
player = 'O';
}
else if (player == 'O' && b1x == false) {
button1->BackgroundImage = Image::FromFile("File_Location");
b1o = true;
player = 'X';
}
}
以下是在合并时显示消息的代码
public:
MyForm(void)
{
InitializeComponent(); \
if (b1x == true && b2x == true && b3x == true) {
MessageBox::Show("X Wins!");
}
}
我试图尽一切可能找出代码,并且我试图以各种方式将bool绑在一起,但是当我组合时(例如,Tile 1,Tile 2和Tile 3)它只是继续前进。它没有显示消息,我仍然能够点击图块(一旦组合被点击,我将链接一种重启游戏的方式)
其他失败的尝试:
public:
MyForm(void)
{
InitializeComponent(); \
if (b1x && b2x && b3x) {
MessageBox::Show("X Wins!");
}
}
//////////////////////////////////////
public:
MyForm(void)
{
InitializeComponent(); \
if (b1x && b2x && b3x) {
system("PAUSE");
}
}
我确定bool值有问题,因为当我点击图块时,它会更改图像,然后将bool设置为true(基于图块编号和播放器所在的图像(x或o)它只是不知道什么时候所有三个bool值都是真的。请帮助,我已经尝试了好几天来解决这个问题,并且我已经使用所有可用资源搜索了网页。
[编辑]过去一周,我尝试过几百次运行我的代码,并尝试了每个可以想象的网站给我的解决方案。我已经更改了调试器上的设置,以向我显示程序中的警告,并且它没有给我任何信息。如果有人能告诉我代码中的错误,我会非常感激。
答案 0 :(得分:0)
在我看来,你的胜利测试只会写入MyForm的构造函数。
构造函数ONLY在最初创建对象时开始运行! 我假设没有球员做过任何动作,所以没有人赢过。
在玩家移动后,您需要重新运行测试以获得胜利。