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); } } } }
專案檔下載。
留言
張貼留言