最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#實(shí)現(xiàn)數(shù)字華容道游戲

 更新時(shí)間:2022年02月17日 16:14:15   作者:____-7  
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)數(shù)字華容道游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C#實(shí)現(xiàn)數(shù)字華容道游戲的具體代碼,供大家參考,具體內(nèi)容如下

代碼如下:

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 WindowsFormsApp6
{undefined
? ? public partial class Form1 : Form
? ? {undefined
? ? ? ? public Form1()
? ? ? ? {undefined
? ? ? ? ? ? InitializeComponent();
? ? ? ? }


? ? ? ? const int N = 4;
? ? ? ? Button[,] buttons = new Button[N, N];


? ? ? ? private void Form1_Load(object sender, EventArgs e)
? ? ? ? {undefined
? ? ? ? ? ? //產(chǎn)生所有按鈕
? ? ? ? ? ? GenerateAllButtons();
? ? ? ? }


? ? ? ? private void button1_Click(object sender, EventArgs e)
? ? ? ? {undefined
? ? ? ? ? ? Shuffle();
? ? ? ? }


? ? ? ? //打亂順序
? ? ? ? void Shuffle()
? ? ? ? {undefined
? ? ? ? ? ? //多次隨機(jī)交換兩個(gè)按鈕
? ? ? ? ? ? Random rnd = new Random();
? ? ? ? ? ? for (int i=0;i<100;i++)
? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? 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()
? ? ? ? {undefined
? ? ? ? ? ? int x0 = 100, y0 = 10, w = 45, d = 50;
? ? ? ? ? ? for(int r=0;r<N;r++)
? ? ? ? ? ? ? ? for(int c = 0; c < N; c++)
? ? ? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? ? ? 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;//這個(gè)數(shù)據(jù)用來(lái)表示它所在的行列位置
? ? ? ? ? ? ? ? ? ? //注冊(cè)事件
? ? ? ? ? ? ? ? ? ? btn.Click += new EventHandler(btn_Click);
? ? ? ? ? ? ? ? ? ? buttons[r, c] = btn;
? ? ? ? ? ? ? ? ? ? this.Controls.Add(btn);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? buttons[N - 1, N - 1].Visible = false;//最后一個(gè)不可見(jiàn)
? ? ? ? }


? ? ? ? //交換兩個(gè)按鈕
? ? ? ? void Swap(Button btna,Button btnb)
? ? ? ? {undefined
? ? ? ? ? ? string t = btna.Text;
? ? ? ? ? ? btna.Text = btnb.Text;
? ? ? ? ? ? btnb.Text = t;


? ? ? ? ? ? bool v = btna.Visible;
? ? ? ? ? ? btna.Visible = btnb.Visible;
? ? ? ? ? ? btnb.Visible = v;
? ? ? ? }


? ? ? ? //按鈕點(diǎn)擊事件處理
? ? ? ? void btn_Click(object sender, EventArgs e)
? ? ? ? {undefined
? ? ? ? ? ? Button btn = sender as Button;//當(dāng)前點(diǎn)中按鈕
? ? ? ? ? ? Button blank= FindHiddenButton();//空白按鈕
? ? ? ? ? ? //判斷與空白按鈕是否相鄰,如果是,交換
? ? ? ? ? ? if (IsNeighbor(btn, blank))
? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? Swap(btn, blank);
? ? ? ? ? ? ? ? blank.Focus();
? ? ? ? ? ? }


? ? ? ? ? ? //判斷是否完成了
? ? ? ? ? ? if (ResultIsOk())
? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? MessageBox.Show("ok");
? ? ? ? ? ? }
? ? ? ? }


? ? ? ? //查找要隱藏的按鈕
? ? ? ? Button FindHiddenButton()
? ? ? ? {undefined
? ? ? ? ? ? for (int r = 0; r < N; r++)
? ? ? ? ? ? ? ? for (int c = 0; c < N; c++)
? ? ? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? ? ? if (!buttons[r, c].Visible)
? ? ? ? ? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? ? ? ? ? return buttons[r, c];
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? return null;
? ? ? ? }


? ? ? ? //判斷是否相鄰
? ? ? ? bool IsNeighbor(Button btnA, Button btnB)
? ? ? ? {undefined
? ? ? ? ? ? int a = (int)btnA.Tag; //Tag中記錄是行列位置
? ? ? ? ? ? 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()
? ? ? ? {undefined
? ? ? ? ? ? for (int r = 0; r < N; r++)
? ? ? ? ? ? ? ? for (int c = 0; c < N; c++)
? ? ? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? ? ? if (buttons[r, c].Text != (r * N + c + 1).ToString())
? ? ? ? ? ? ? ? ? ? {undefined
? ? ? ? ? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? return true;
? ? ? ? }
? ? }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

巫山县| 昌平区| 中西区| 广德县| 贺兰县| 上饶县| 梁河县| 十堰市| 鄱阳县| 县级市| 蓝山县| 高台县| 吴旗县| 普安县| 永安市| 灵川县| 东乌| 习水县| 阿坝县| 南汇区| 永济市| 甘谷县| 绥滨县| 多伦县| 通许县| 南投县| 黑龙江省| 遂川县| 马关县| 北流市| 佛教| 广灵县| 青神县| 和田县| 波密县| 九台市| 兰坪| 沙坪坝区| 苗栗县| 榆林市| 台湾省|