最近由于工作需要,做一个C#的简单程序。学习了一些基础东西先记下来。

主要有:
1.生成初始框架
2.打乱顺序
3.游戏部分,点击按钮后与空白部分交换的只是Text和Visible部分
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 GenerateAllButtons()
{
int x0 = 100, y0 = 10, w = 45, d = 50;
for( int row = 0; row < N; row++ )
for ( int col = 0; col < N; col++ )
{
int num = row * N + col; //数字编号
Button btn = new Button();
btn.Text = (num + 1).ToString();
btn.Top = y0 + row * d;
btn.Left = x0 + col * d;
btn.Width = w;
btn.Height = w;
btn.Visible = true;
btn.Tag = row * N + col; //button位置
//注册button点击事件
btn.Click += new EventHandler(btn_Click);
buttons[row, col] = btn;
this.Controls.Add(btn);
}
buttons[N - 1, N - 1].Visible = false;
}
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]);
}
}
// 进行游戏
private 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 row = 0; row < N; row++)
for (int col = 0; col < N; col++)
{
if (!buttons[row,col].Visible)
{
return buttons[row, col];
}
}
return null;
}
// 判断是否相邻
bool IsNeighbor(Button btnA, Button btnB)
{
int a = (int)btnA.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()
{
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;
}
//交换两个按钮
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;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C#
# 十五子
# 游戏
# C#十五子游戏编写代码
# 使用C#编写15子游戏
# C#拼图游戏编写代码(2)
# C#拼图游戏编写代码
# C#在Unity游戏开发中进行多线程编程的方法
# C#实现的24点游戏实例详解
# C#实现简单的井字游戏实例
# C#利用控件拖拽技术制作拼图游戏
# C#实现的算24点游戏算法实例分析
# C#贪吃蛇游戏实现分析
# 判断是否
# 做一个
# 大家多多
# 主要有
# Shuffle
# button1_Click
# sender
# object
# GenerateAllButtons
# EventArgs
# col
# lt
# btn
# num
# row
# Form1_Load
# Visible
# Text
# pre
# br
相关文章:
如何制作一个表白网站视频,关于勇敢表白的小标题?
如何选择建站程序?包含哪些必备功能与类型?
网站制作话术技巧,网站推广做的好怎么话术?
如何在服务器上三步完成建站并提升流量?
建站主机如何安装配置?新手必看操作指南
如何挑选高效建站主机与优质域名?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
,怎么用自己头像做动态表情包?
如何通过商城自助建站源码实现零基础高效建站?
PHP正则匹配日期和时间(时间戳转换)的实例代码
油猴 教程,油猴搜脚本为什么会网页无法显示?
长沙企业网站制作哪家好,长沙水业集团官方网站?
常州自助建站费用包含哪些项目?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
如何快速生成高效建站系统源代码?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
平台云上自主建站:模板化设计与智能工具打造高效网站
建站之星免费模板:自助建站系统与智能响应式一键生成
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
网页设计网站制作软件,microsoft office哪个可以创建网页?
制作销售网站教学视频,销售网站有哪些?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
建站之星如何实现五合一智能建站与营销推广?
如何通过VPS建站无需域名直接访问?
建站之星云端配置指南:模板选择与SEO优化一键生成
安云自助建站系统如何快速提升SEO排名?
建站之星代理如何优化在线客服效率?
如何撰写建站申请书?关键要点有哪些?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
如何高效利用200m空间完成建站?
微信小程序 input输入框控件详解及实例(多种示例)
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
网站代码制作软件有哪些,如何生成自己网站的代码?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
宝塔新建站点为何无法访问?如何排查?
表情包在线制作网站免费,表情包怎么弄?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
制作网站外包平台,自动化接单网站有哪些?
TestNG的testng.xml配置文件怎么写
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
如何用狗爹虚拟主机快速搭建网站?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
中山网站推广排名,中山信息港登录入口?
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
公司门户网站制作流程,华为官网怎么做?
如何通过老薛主机一键快速建站?
*请认真填写需求信息,我们会在24小时内与您取得联系。