C#十五子游戏编写代码
发布时间 - 2026-01-11 01:02:17 点击率:次本文实例为大家分享了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#
# 十五子
# 游戏
# 边缘
# 判断是否
# 大家分享
# 类似于
# 具体内容
# 做点
# 大家多多
# 组中
# 几行
# 五子
# 完成了
# void
# private
# Form1_Load
# object
# buttons
# InitializeComponent
# Form
# const
# Button
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在云指建站中生成FTP站点?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
Laravel如何使用Blade组件和插槽?(Component代码示例)
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Android仿QQ列表左滑删除操作
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
中山网站制作网页,中山新生登记系统登记流程?
黑客入侵网站服务器的常见手法有哪些?
javascript中的try catch异常捕获机制用法分析
java获取注册ip实例
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
青岛网站建设如何选择本地服务器?
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
详解vue.js组件化开发实践
JavaScript如何实现路由_前端路由原理是什么
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
详解jQuery中基本的动画方法
Laravel如何为API编写文档_Laravel API文档生成与维护方法
魔毅自助建站系统:模板定制与SEO优化一键生成指南
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何快速生成橙子建站落地页链接?
浅析上传头像示例及其注意事项
网站建设保证美观性,需要考虑的几点问题!
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
网站建设整体流程解析,建站其实很容易!
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Laravel怎么为数据库表字段添加索引以优化查询
详解jQuery停止动画——stop()方法的使用
如何在阿里云香港服务器快速搭建网站?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Python高阶函数应用_函数作为参数说明【指导】
Laravel如何实现API速率限制?(Rate Limiting教程)
大同网页,大同瑞慈医院官网?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何用5美元大硬盘VPS安全高效搭建个人网站?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境

