不允许多重继承)。
C#综合了VB简单的可视化操作和C++的高运行效率,
以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET 开发的首选语言。
1.2 任务概述
1.2.1 任务概述
1. 实现单机版连连看
2. 开始游戏后,
随机生成图片位置
3. 游戏中可使用道具
1.2.2 实现目标
* 游戏概况
* 方案论证
* 界面设计
* 图片选取及生成
* 算法路径实现
* 游戏运行
1.3 项目开发计划
如表1-1项目开发计划
日期 阶段
2月19到2月24 确定设计方向
2月24到3月5 可行性分析
3月5到3月11 概要设计
3月12到3月17 详细设计
3月19到4月7 编写代码
4月9到4月14 软件测试
4月14到4月18 编写项目文档
1.4 术语表
1. 重列:
将游戏中的所有对子重新排列一次。
2. 延长时间:
将游戏中的使用时间延长。
3. 种子数:
产生图片的数量
4. 重复数:
每种图片的重复出现数
第2章 分析阶段
2.1 用况
2.1.1 系统用况图
图 2-1系统用况
2.1.2 开始游戏
表 2.1.2开始游戏用况
用况 开始游戏 参与者 操作员 目的 开始玩游戏 类型 主要的和基本的 概述 开始玩游戏 交叉引用 无 典型的事件发
生过程 参与者动作 系统响应 1)双击打开游戏 2)出现游戏主窗体 3)点击"开始游戏"按钮 4)游戏开始 2.1.3 种类数/重复数设置
表 2.1.3种类数/重复数设置用况
用况 种类数/重复数设置 参与者 操作员 目的 决定生成图标的数量 类型 主要的和基本的 概述 决定生成图标的数量 交叉引用 无 典型的事件发
生过程 参与者动作 系统响应 1)输入要生成图片数 2)点击开始游戏 根据新设置生成图片数
2.1.4 重列游戏
表 2.1.4重列游戏用况
用况 重列游戏 参与者 操作员 目的 在游戏形成残局时,
重新对图标进行排列 类型 主要的和基本的 概述 在游戏形成残局时
重新对图标进行排列 交叉引用 无 典型的事件发
生过程 参与者动作 系统响应 1)点击重列 2)图标重新排列
2.1.5 暂停/开始
表 2.1.5暂停/开始用况
用况 暂停/开始 参与者 操作员 目的 游戏进行到一半时
有事需要暂停一会游戏 类型 主要的和基本的 概述 游戏进行到一半时
有事需要暂停一会游戏 交叉引用 无 典型的事件发
生过程 参与者动作 系统响应 1)修改系统的相关设置
并保存 2)修改xml保存记录
2.2 概念模型
2.2.1 候选概念
游戏、重列、生成图片数、选择音乐文件、延长时间等
2.2.2 关联
图 2.2.2关联
2.2.3 属性
图 2.2.3属性
2.2.4 概念模型图
图 2.2.4概念模型图
2.3 系统顺序图
2.3.1 开始游戏顺序图
图 2.3.1开始游戏顺序图
2.3.2 修改背景音乐顺序图
图 2.3.2修改背景音乐顺序图
2.3.3 重列游戏顺序图
图 2.3.3重列游戏顺序图
2.3.4 种类数/重复数顺序图
图 2.3.4种类数/重复数顺序图
2.3.5暂停/开始顺序图
图 2.3.5暂停/开始顺序图
第3章 设计阶段
3.1 协作图
3.1.1 修改背景音乐协作图
图 3.1.1修改背景音乐的协作图
解释
1. 修改背景音乐信息被发送到一个系统实例
它对应于修改背景音乐这个系统操作消息
2. 系统对象发送修改背景音乐消息到背景音乐的实例
3.1.2 重列的协作图
图 3.1.2重列的协作图
解释
3. 重列信息被发送到一个系统实例
它对应于重列这个系统操作消息
4. 系统对象发送重列消息到图片的实例
3.2 设计类图
3.2.1 软件类
3.2.2 加入方法
3.2.3 加入关联
3.3 基本设计概念和处理流程
3.4 界面设计与界面类
3.4.1 主界面
图 3.4.1主界面
3.4.2 游戏失败界面
图 3.4.2游戏失败界面
3.4.3 游戏控制区界面
图 3.4.3游戏控制区界面
3.4.4流程逻辑
图3.4.4流程逻辑图
第4章 构造阶段
4.1 核心代码
图片的随机生成所用到的方法
说明:
通过数组从图片库随即获取规定个数得到图片
随机分布在画布上。
图片个数一定是偶数个。
代码如下:
namespace LLK
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
IniteBmp(MAXPICS);
}
Music music = new Music();
SoundPlayer selectplayer = new SoundPlayer("Sounds\\select.wav");
SoundPlayer eraseplayer = new SoundPlayer("Sounds\\erase.wav");
SoundPlayer refreshplayer = new SoundPlayer("Sounds\\refresh.wav");
SoundPlayer bombplayer = new SoundPlayer("Sounds\\bomb.wav");
int[,] gmap = new int[MAPWIDTH,MAPHEIGHT];//实际的图片矩阵为19*11
Graphics g_g = null;//全局画布
const int PBMAX = 100;//processbar的最大值
static int pbvalue=PBMAX;//proecssbar现在的值
static int reducestep = 1;//第次减少的步数
static long score = 0;//游戏得分
//图片的宽和高
private const int PICWIDTH = 31;
private const int PICHEIGHT = 34;
private const int MAPWIDTH = 19;
private const int MAPHEIGHT = 11;
private const int MAXPICS = 39;
//本局中图片的数量
private int picnum = 18;
private int multipic = 4;//一张图片重复出来的次数,一定为偶数
//加载到内存中的图片
Image[] img = new Image[39];
Image[] bombimg = new Image[6];
Kernal AI=null;
//游戏开始
bool bStart = false;
//加载图
private void IniteBmp(int maxnum)
{
g_g = this.CreateGraphics();
for (int i = 0; i < MAPWIDTH; i++)
for (int j = 0; j < MAPHEIGHT; j++)
gmap[i, j] = 0;
IniteRandomMap(ref gmap, maxnum);
AI = new Kernal(ref gmap);
for (int i = 0; i < maxnum; i++)
{
ResourceManager rm = new ResourceManager("LLK.data", Assembly.GetExecutingAssembly());
img[i]= (Image)rm.GetObject(i.ToString()+".bmp");
//img[i] = (Image)Bitmap.FromFile("Images\\"+(i+1).ToString()+".bmp");
}
for (int i = 0; i < 6; i++)
{
//bombimg[i] = (Image)Bitmap.FromFile("Images\\B"+(i+1).ToString()+".bmp");
}
}
private bool CheckWin(ref int[,] map)
{
bool Win = true;
for (int i = 0; i < MAPWIDTH; i++)
for (int j = 0; j < MAPHEIGHT; j++)
if (map[i, j] != 0)
Win = false;
return
上一篇:
计算机科学与技术专业毕业论文例文
下一篇:
近三年来思想工作小结(德能勤绩廉)