国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#十五子游戲編寫代碼

2019-10-29 21:10:53
字體:
來源:轉載
供稿:網友

本文實例為大家分享了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 WindowsFormsApplication15{ public partial class Form1 : Form {  public Form1()  {   InitializeComponent();  }  const int N = 4;//按鈕的行、列數  Button[,] buttons = new Button[N, N];//按鈕的數組  private void Form1_Load(object sender, EventArgs e)  {   //產生所有按鈕   GenerateAllButtons();  }  private void button1_Click(object sender, EventArgs e)  {   //點擊“開始”按鈕,打亂順序   Shuffle();  }  //打亂順序函數  void Shuffle()  {   //多次隨機交換兩個按鈕   Random rnd = new Random();   for(int i = 0; i < 100; i++)   {    int a = rnd.Next(N);    int b = rnd.Next(N);    int c = rnd.Next(N);    int d = rnd.Next(N);    Swap(buttons[a, b], buttons[c, d]);//交換兩個按鈕位置   }  }  //生成所有按鈕函數  void GenerateAllButtons()  {   int x0 = 100, y0 = 10, w = 45, d = 50;   for (int r = 0; r < N; r++)   {    for (int c = 0; c < N; c++)    {     int num = r * N + c;     Button btn = new Button();     btn.Text = (num + 1).ToString();//設置按鈕顯示的數字     btn.Top = y0 + r * d;//設置按鈕的左邊緣與容器的上邊緣之間的距離     btn.Left = x0 + c * d;//設置按鈕的左邊緣與容器的左邊緣之間的距離     btn.Width = w;//按鈕寬度     btn.Height = w;//按鈕高度     btn.Visible = true;//是否顯示按鈕     btn.Tag = r * N + c;//Tag屬性是給程序員自己用的,做點標記,類似于按鈕的ID,此處這個數據用來表示它所在的行列位置     //注冊事件     btn.Click += new EventHandler(btn_click);     buttons[r, c] = btn;//放到數組中     this.Controls.Add(btn);//加到界面上    }   }   buttons[N - 1, N - 1].Visible = false;//定義最后一個按鈕不可見  }  //交換兩個按鈕函數  void Swap(Button btna,Button btnb)  {   //兩個按鈕的值交換   string t = btna.Text;   btna.Text = btnb.Text;   btnb.Text = t;   //兩個按鈕的可見屬性交換   bool v = btna.Visible;   btna.Visible = btnb.Visible;   btnb.Visible = v;  }  //按鈕點擊事件處理  void btn_click(object sender,EventArgs e)  {   Button btn = sender as Button;//當前點中的按鈕   Button blank = FindHiddenButton();//空白按鈕   //判斷是否與空白按鈕相鄰,如果是,則交換   if (IsNeighbor(btn,blank))   {    Swap(btn, blank);    blank.Focus();   }   //判斷是否完成了游戲   if (ResultIsOk())   {    MessageBox.Show("OK");   }  }  //查找要隱藏的按鈕函數  Button FindHiddenButton()  {   for (int r = 0; r < N; r++)   {    for (int c = 0; c < N; c++)    {     if (!buttons[r,c].Visible)     {      return buttons[r, c];     }    }   }   return null;  }  //判斷是否相鄰函數  bool IsNeighbor(Button btnA,Button btnB)  {   int a = (int)btnA.Tag;//獲取Tag中保存的位置信息(0-15的值)   int b = (int)btnB.Tag;   int r1 = a / N, c1 = a % N;//算出第幾行第幾列   int r2 = b / N, c2 = b % N;      //判斷左右相鄰或者上下相鄰   if ( (r1 == r2 && (c1 == c2 - 1 || c1 == c2 + 1)) || (c1 == c2 && (r1 == r2 - 1 || r1 == r2 + 1)) )   {    return true;   }   return false;      }  //檢查是否完成  bool ResultIsOk()  {   for (int r = 0; r < N; r++)   {    for (int c = 0; c < N; c++)    {     if(buttons[r,c].Text != (r * N + c + 1).ToString())     {      return false;     }    }   }   return true;  }  private void Btn_Click(object sender, EventArgs e)  {   throw new NotImplementedException();  } }}

效果:

C#,十五子,游戲

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台东县| 丰镇市| 柳州市| 桐柏县| 大庆市| 河西区| 化州市| 靖州| 广德县| 安陆市| 韩城市| 神农架林区| 锡林浩特市| 商洛市| 府谷县| 惠水县| 绵阳市| 防城港市| 吉隆县| 阳江市| 九江市| 韩城市| 柳河县| 盈江县| 阳东县| 新泰市| 屏东县| 高平市| 宜州市| 富源县| 青岛市| 天峨县| 梁山县| 延津县| 德化县| 大埔区| 扬州市| 石屏县| 龙海市| 安吉县| 新野县|