经典拼数字游戏NumPuzzle C# By Red_angelX
NumPuzzle 设计说明书
背景
开发环境:Microsoft Visual Studio .Net 2003
1 总体设计
2 游戏界面
3 具体设计
byte[] Position; //数组
Button[] Buttons; //表现按扭
const int MAP_WIDTH = 300; //棋盘宽度
bool IsRun = false; //游戏状态
int Clicks = 0; //总移动数
初始化游戏函数InitGame()
private void InitGame()
...{
/**//****************************************
**清除已有棋盘按扭,代码略
******************************************/
Buttons = new Button[GameSize*GameSize];
Position = new byte[GameSize*GameSize];
Position[0] = 0xff; //空的位置
for(int i=1;i<Position.Length;i++)
...{
Position[i] = (byte)i;//初始化数组
}
//随机洗牌
byte[] key = new byte[GameSize*GameSize];
new Random().NextBytes(key);
Array.Sort(key,Position);
/**//******************************************
** 动态生成棋盘按扭,代码略
*******************************************/
IsRun = true; //设置游戏运行标志
this.Clicks = 0;
}
根据按键交换数组位置
...{
//寻找空格位置
int offest = -1;
int MoveIndex = -1;
for(int i=0;i<Position.Length;i++)
...{
if(Position[i] == 0xff)
...{
offest = i;
break;
}
}
//判断玩家按键
switch(key)
...{
case Keys.Left:
MoveIndex = offest + 1;
if(offest % GameSize == GameSize - 1)
return;
break;
/**//*省略其他情况*/
}//End Switch
//判断是否能有效移动
if(MoveIndex < 0 || MoveIndex >= Position.Length)
return;
Clicks++;
this.statusBar1.Text = Clicks.ToString()+" Move";
PlaySound.Play("MOVE.WAV");
//交换数组中offest和MoveIndex位置
byte temp;
temp = Position[offest];
Position[offest] = Position[MoveIndex];
Position[MoveIndex] = temp;
//更新UI
UpDataUI(offest,MoveIndex);
//检查游戏是否过关
CheckWin();
}
更新游戏界面函数UpDataUI
...{
if(this.IsRun == false)
return;
Buttons[offest].Visible = true;
Buttons[offest].Text = Position[offest].ToString();
Buttons[MoveIndex].Visible = false;
}
判断游戏是否过关 CheckWin()
...{
for(int i=1;i<Position.Length;i++)
...{
if(Position[i-1] != (byte)i)
...{
return; //不符合条件返回
}
}
//过关后播放相应音乐和显示过关对话框
PlaySound.Play("WIN.WAV");
IsRun = false;
this.statusBar1.Text+=" 过关!";
Winner wn = new Winner(GameSize,this.Clicks);
wn.ShowDialog();
}
3 总结
拼数字游戏总体设计情况如上,并没有很多很高深的内容,实现的核心在于对数组的操作排列。
源代码下载地址:http://free5.ys168.com/?xuyuexyz DotNet/NumPuzzle.rar
经典拼数字游戏NumPuzzle C# By Red_angelX相关推荐
- C#的winform拼数字游戏
C#的winform拼数字游戏 声明:阅读了别人的代码学习修改而来,增加了美观度和游戏乐趣.(作者出处忘了不好意思) 程序截图 关键代码 using System; using System.Coll ...
- 使用A* (AStar)算法自动求解拼数字游戏
原文链接: 使用A* (AStar)算法自动求解拼数字游戏 上一篇: js Heap 的简单使用 下一篇: vue router 技巧 效果 主要思想 设置两个数组 close 保存已经走过的状态 o ...
- 例题3-4 猜数字游戏的提示(Master-Mind Hints, UVa 340)
实现一个经典"猜数字"游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确 (A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序列长度n ...
- 【基础编程】猜数字游戏的提示
★题目 实现一个经典"猜数字"游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B) 输入包括多组数据.每组输入第一行为序列长 ...
- 习题 猜数字游戏提示
一.题目 实现一个经典"猜数字"游戏.给定答案序列和用户猜的序列,统计有多少数字位置正确(A),有多少数字在两个序列都出现过但位置不对(B). 输入包含多组数据.每组输入第一行为序 ...
- vue 拼数字小游戏(设置表白彩蛋)
原文链接: vue 拼数字小游戏(设置表白彩蛋) 上一篇: vue 网格 过渡 动画 下一篇: mpvue 开发小程序 流程 效果 通过点击交换空白格子与周围的格子,将整个格子还原,如果在还原过程中, ...
- python经典的猜数字游戏
python经典的猜数字游戏,几乎所有人学编程时都会做. 功能描述:随机选择一个三位以内的数字作为答案.用户输入一个数字,程序会提示大了或是小了,直到用户猜中. 下面
- C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)
题目描述:输入1-100之间的数字,进行猜数字游戏,猜大猜小有提示,直至才对为止,游戏可以重复游玩. 算法思路: 1.用void函数分别写出菜单程序与游戏进程程序. 2.用switch-case-de ...
- 猜数字游戏python程序_python经典小程序:猜数字游戏
#猜数字游戏 import random #impor语句导入random模块 guessor=0;print("#"*30) #输出30个"#"(" ...
最新文章
- linux内核远程漏洞,CVE-2019-11815:Linux内核竞争条件漏洞导致远程代码执行
- android路由器 设备数,手机查看wifi连接人数_手机查看wifi连接设备数量-192路由网...
- mysql 全文检索 教程_MySQL:详细说明MySQL全文检索图文详细教程
- java解析xml实例_在java中使用dom解析xml的示例分析
- 下一个十年需要的五大IT技能
- php注释验证,注解验证 · ThinkPHP6.0完全开发手册 · 看云
- 石家庄计算机职业学院张秋玉,九龙坡有什么大学
- 计算机常用存储芯片分为内存和什么,计算机类论文范例,与安徽省计算机一级考试宝典相关研究生毕业论文开题报告范文...
- 数据结构二叉树遍历求后序
- 组策略里更改更新和设置客户端首页
- nginx upstream配置_nginx + ingress + gunicorn 环境上传大文件报错问题的解决思路
- python 阿里云短信接口_python 之阿里云短信服务接入流程短信接口
- Linux必会100个命令(八)ps、top、netstat
- python内置函数bool()
- 【通信原理】实验七、基于Matlab的均匀量化和非均匀量化
- Base64转码和字符串互转
- Java程序猿搬砖笔记(七)
- 机器学习的五大潜力趋势!
- pydicom提取DICOM胸片图像
- OS - Bitcode App 瘦身中间码