C# 井字遊戲
開始畫面。
專案檔下載。
遊戲畫面。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace CSharp_井字遊戲
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Symbol1_tb.TextChanged += SymbolTextChenge;
Symbol2_tb.TextChanged += SymbolTextChenge;
Symbol1_tb.MouseClick += Symbol_tb_MouseClick;
Symbol2_tb.MouseClick += Symbol_tb_MouseClick;
}
private void Symbol_tb_MouseClick(object sender, MouseEventArgs e)
{
TextBox tb = sender as TextBox;
tb.SelectAll();
}
private void SymbolTextChenge(object sender, EventArgs e)
{
TextBox tb = sender as TextBox;
if (tb.TextLength >= 2)
{
tb.SelectAll();
MessageBox.Show("只能輸入一個字!", "錯誤!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Button[,] btn = new Button[3, 3];
Label label;
Font font = new Font("微軟正黑體", 12);
bool nowIndex = false;
string symbol1, symbol2;
int count;
DialogResult result;
Panel panel;
private void Start_btn_Click(object sender, EventArgs e)
{
StartGame();
}
private void StartGame()
{
symbol1 = Symbol1_tb.Text;
symbol2 = Symbol2_tb.Text;
panel1.Visible = false;
if (panel != null)
{
panel.Visible = true;
Start_btn.Enabled = false;
}
nowIndex = false;
this.Size = new Size(420, 440);
if (panel == null)
{
panel = new Panel();
panel.Size = new Size(this.DisplayRectangle.Width, this.DisplayRectangle.Height);
}
this.Controls.Add(panel);
Creat_btn_label();
}
private void Creat_btn_label()
{
for (int x = 0; x < btn.GetLength(0); x++)
for (int y = 0; y < btn.GetLength(0); y++)
{
panel.Controls.Remove(btn[x, y]);
if (btn[x, y] != null)
btn[x, y].Dispose();
}
btn = new Button[3, 3];
for (int x = 0; x < btn.GetLength(0); x++)
for (int y = 0; y < btn.GetLength(1); y++)
{
btn[x, y] = new Button();
btn[x, y].Size = new Size(100, 100);
btn[x, y].Text = "";
btn[x, y].Location = new Point(50 + x * 100, 50 + y * 100);
btn[x, y].Font = font;
btn[x, y].Click += ButtonsClick;
panel.Controls.Add(btn[x, y]);
}
if (label == null)
label = new Label();
label.Font = font;
label.Size = new Size(200, 20);
label.Text = "玩家一,請選擇。";
label.Location = new Point(50, 20);
panel.Controls.Add(label);
}
private void ButtonsClick(object sender, EventArgs e)
{
Button btn = sender as Button;
if (btn.Text == "" && count < 9)
{
btn.Text = nowIndex == true ? symbol2 : symbol1;
nowIndex = !nowIndex;
label.Text = nowIndex == true ? "玩家二,請選擇。" : "玩家一,請選擇。";
Check();
count++;
if (count == 9)
{
label.Text = "GameOver!";
GameOver("GameOver");
}
Console.WriteLine(count);
}
}
private void Check()
{
for (int x = 0; x < btn.GetLength(0); x++)
if (btn[x, 0].Text == btn[x, 1].Text && btn[x, 1].Text == btn[x, 2].Text && btn[x, 0].Text != "" && btn[x, 1].Text != "" && btn[x, 2].Text != "")
GameOver(btn[x, 0].Text);
for (int y = 0; y < btn.GetLength(1); y++)
if (btn[0, y].Text == btn[1, y].Text && btn[1, y].Text == btn[2, y].Text && btn[0, y].Text != "" && btn[1, y].Text != "" && btn[2, y].Text != "")
GameOver(btn[0, y].Text);
if (btn[0, 0].Text == btn[1, 1].Text && btn[1, 1].Text == btn[2, 2].Text && btn[0, 0].Text != "" && btn[1, 1].Text != "" && btn[2, 2].Text != "")
GameOver(btn[0, 0].Text);
if (btn[2, 0].Text == btn[1, 1].Text && btn[1, 1].Text == btn[0, 2].Text && btn[2, 0].Text != "" && btn[1, 1].Text != "" && btn[0, 2].Text != "")
GameOver(btn[2, 0].Text);
}
private void GameOver(string str)
{
count = 10;
string msg = "";
if (str == symbol1)
{
msg = "玩家一獲勝!";
count = -1;
}
else if (str == symbol2)
{
msg = "玩家二獲勝!";
count = -1;
}
else if (str == "GameOver")
{
msg = "平局";
count = 0;
}
label.Text = "GameOver!";
result = MessageBox.Show(msg, "", MessageBoxButtons.OKCancel, MessageBoxIcon.None);
if (result == DialogResult.OK)
StartGame();
else
{
panel1.Visible = true;
Start_btn.Enabled = true;
panel.Visible = false;
this.Size = new Size(307, 254);
}
}
}
}
專案檔下載。


留言
張貼留言