我错过了什么我不知道这是一个简单的tic tac toe游戏的方式。
另外,如何将列表框与水平滚动条合并以选择播放器?
Player1 =(x)或Player2 =(O)
提前致谢!!!
主要表格 - xGameForm
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MyGame
{
public partial class xGameForm : Form
{
public Button xGameButton9;
public Button xGameButton8;
public Button xGameButton7;
public Button xGameButton6;
public Button xGameButton5;
public Button xGameButton4;
public Button xGameButton3;
public Button xGameButton2;
public Button xGameButton1;
public Button[] _buttonArray;
public bool isX;
public bool isGameOver;
Button tempButton = (Button)sender;
public xGameForm()
{
InitializeComponent();
}
public void xGameForm_Load(object sender, EventArgs e)
{
_buttonArray = new Button[9] { xGameButton1, xGameButton2, xGameButton3, xGameButton4, xGameButton5, xGameButton6, xGameButton7, xGameButton8, xGameButton9 };
for (int i = 0; i < 9; i++)
this._buttonArray[i].Click += new System.EventHandler(this.ClickHandler);
InitTicTacToe();
}
public void InitTicTacToe()
{
for (int i = 0; i < 9; i++)
{
_buttonArray[i].Text = "";
_buttonArray[i].ForeColor = Color.Black;
_buttonArray[i].BackColor = Color.LightGray;
_buttonArray[i].Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
}
this.isX = true;
this.isGameOver = false;
}
public void ClickHandler(object sender, System.EventArgs e)
{
Button tempButton = (Button)sender;
if( this.isGameOver )
{
MessageBox.Show("press reset to start a new game!","Game End",MessageBoxButtons.OK);
return;
}
if( tempButton.Text != "" )
{
return;
}
if( isX)
tempButton.Text = "X";
else
tempButton.Text = "O";
isX = !isX;
this.isGameOver = Result1.CheckWinner(_buttonArray );
}
public void xGameResetButton_Click(object sender, EventArgs e)
{
InitTicTacToe();
}
}
}
类Result1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyGame
{
public class Result1
{
static private int[,] Winners = new int[,]
{
{0,1,2},
{3,4,5},
{6,7,8},
{0,3,6},
{1,4,7},
{2,5,8},
{0,4,8},
{2,4,6}
};
static public bool CheckWinner(Button[] myControls)
{
bool gameOver = false;
for (int i = 0; i < 8; i++)
{
int a = Winners[i, 0], b = Winners[i, 1], c = Winners[i, 2];
Button b1 = myControls[a], b2 = myControls[b], b3 = myControls[c];
if (b1.Text == "" || b2.Text == "" || b3.Text == "")
continue;
if (b1.Text == b2.Text && b2.Text == b3.Text)
{
b1.BackColor = b2.BackColor = b3.BackColor = Color.LightCoral;
b1.Font = b2.Font = b3.Font = new System.Drawing.Font("Microsoft Sans Serif", 32F, System.Drawing.FontStyle.Italic & System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
gameOver = true;
MessageBox.Show(b1.Text + " .... Wins the game!", "Game End", MessageBoxButtons.OK);
break;
}
}
return gameOver;
}
}
}
答案 0 :(得分:1)
Button
是System.Windows.Forms
命名空间中的一个类
除非您导入命名空间,否则编译器将不知道您想要哪个类。
您需要通过将using System.Windows.Forms;
添加到类的顶部来导入命名空间..
答案 1 :(得分:0)
您需要添加using指令以将System.Windows.Forms用于其中包含result1类的文件,或者显式引用System.Windows.Forms.Button。否则complire不知道按钮是什么。