基于Android的扫雷游戏课程设计

基于Android的扫雷游戏课程设计
基于Android的扫雷游戏课程设计

摘要

随着无线移动设备的发展,手机也日益普及,Android系统的推出使手机的发展进入到了一个新的领域。世界上一些知名的移动设备生产厂商对于Android 智能机的开发热情也日益提高,Android系统的使用人群正在急速提升,Android 应用程序的多样化对人们快速获取资讯以及方便人们的生活起着不可忽视的作用,近年来Android得到了社会更多的认同和应用,本文对基于Google Android 平台上的游戏软件设计进行了研究,通过在PC机上搭建Android开发环境,并在该平台上进行扫雷游戏的程序开发。

关键字:手机,Android,扫雷

目录

第1章开发工具与环境 (1)

1.1 android操作系统概述 (1)

1.1.1 android的发展历史 (1)

1.1.2 android的软件架构 (1)

1.1.3 android的系统架构 (2)

1.1.4 android的优势特色 (2)

1.2 开发环境及工具 (3)

1.3 开发环境简介 (3)

1.4 开发环境搭建 (4)

1.4.1 安装JDK (4)

1.4.2 安装Eclipse (7)

1.4.3 安装Android SDK (7)

1.4.4 ADT安装创建A VD (7)

第2章系统分析与设计 (8)

2.1 分析 (8)

2.2 整体布局的设计 (9)

2.3 游戏流程图 (10)

第3章系统详细设计 (11)

3.1 基本变量设置 (11)

3.2 游戏初始化 (11)

3.3 游戏开始 (12)

3.4 设置每个块的描述 (12)

3.5 赢得游戏 (14)

3.6 重置 (15)

第4章游戏运行及结果 (16)

4.1 游戏过程的简单实现 (16)

4.2 游戏初始化 (17)

4.3 游戏开始 (17)

4.4 玩游戏 (19)

4.5 赢得游戏 (20)

4.6 结束游戏 (21)

第5章结论 (22)

参考文献 (23)

第1章开发工具与环境

1.1 android操作系统概述

1.1.1 android的发展历史

Android早期由“Android之父”之称的Andy Rubin创办。Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信、手机检索、定位等业务,基于Linux的通用平台进入了开发。Google公司在2007年,与其他33家手机制造商(包含摩托罗拉、宏达电、三星、LG)、手机晶片供应商、软硬体供应商、电信业者所联合组成的开放手持装置联盟(Open Handset Alliance),发布了名为Android的开放手机软硬体平台。参与开放手持装置联盟的这些厂商,都会基于Android平台,来开发新的手机业务。[1]

身为Google公司创办人之一的Sergey Brin,也在Android软体开发工具(SDK)发布的同时,现身于视讯广告影片中,为大众介绍Android平台。Sergey Brin也同时宣布举办总奖金高达1000万美元(3亿多台币)的开发者大奖赛,鼓励程式开发者去深入探究Android平台的能力。写出具创意、实用性十足、能提供使用者更好的手机使用经验的应用程式。

2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google 手机——T-Mobile G1。该款手机是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。2010年2月3日,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux 内核“状态树”(“staging tree”)上除去,从此,Android与Linux核心开发分道扬镳。

1.1.2 android的软件架构

android一词的本义指机器人,是基于Linux内核的操作系统。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层的Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以

Java编写。

1.1.3 android的系统架构

Android 在Linux 核心的基础上,提供了各种合用的函式库,和一个完整的应用程式框架。并采用较符合商用限制的Apache 版权。在Linux 核心的基础上提供Google 自制的应用程式运行环境(称作Dalvik,与Sun 的J2ME 不同),并提供基于Eclipse 整合开发环境(IDE)的免费、跨平台(Windows、Mac OS X、Linux) 开发工具(SDK),便于应用程式开发者学习、使用。

1.1.4 android的优势特色

1)开放性

在优势方面,Android平台首先就是其开发性,开发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

开发性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,随大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

2)挣脱运营商的束缚

在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G 至3G移动网络的逐步过渡和提升,手机随意接入网络已不是运营商口中的笑谈。

3)丰富的硬件选择

这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。好比你从诺基亚Symbian风格手机一下改用苹果iPhone,同时还可将Symbian中优秀的软件带到iPhone上使用、联系人等资料更是可以方便地转移。

4)不受任何显示的开发商

Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受

到各种条条框框的阻扰,可想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力方面的程序和游戏如可控制正是留给Android难题之一。

5)无缝结合的google应用

如今叱诧互联网的Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。

1.2 开发环境及工具

采用Eclipse开发工具,在Windows 7下进行,基于Android 4.2.2操作系统,使用的语言是Java语言。

环境搭建:

1)JDK安装

2)Eclipse安装

3)Android SDK安装

4)ADT安装创建A VD

1.3 开发环境简介

JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java诞生以来,JDK已经成为最广泛的Java SDK。JDK是整个Java的核心内容,包括了Java运行环境、Java工具和Java基础类库三部分。从Sun的JDK1.5开始,提供了一些非常使用的功能,其版本也不断更新,运行效率得到了非常大的提高。

Eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组建构建开发环境。Eclipse附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Android SDK即软件开发工具包(software development kit)。被软件开发工程师用于为特定的软件包、软件架构、硬件平台、操作系统等建立应用软件工具的集合。因此Android SDK是Android专属的开发工具包。其授权协议为Apache,开发语言为Java、需要Android操作系统的支持。[2]

1.4 开发环境搭建

1.4.1 安装JDK

下载安装Java开发包(JDK)。选择“windows offline installation,multi-language”,根据屏幕提示完成安装。如图1.1。

图1.1 JDK安装

打开计算机>点右键>属性>高级系统设置>环境变量,在系统变量中添加。如图1.2,1.3,1.4。

图1.2 计算机属性

图1.3 系统属性

图1.4环境变量

新建JavaHome:C:\Program Files\Java\jdk1.6.0_10,如图1.5。

图1.5 JavaHome

新建CLASSPATH:.;%JavaHome%\lib\dt.jar;%JavaHome%\lib\tools.jar;,如图1.6。

图1.6 CLASSPATH

编辑Path,在变量值前添加:%JavaHome%\bin;,如图1.7。

图1.7 Path

在CMD窗体中输入java –version,如果屏幕出现如图1.8一样的代码信息,说明JDK安装成功了。

图1.8 CMD窗体

1.4.2 安装Eclipse

选择标有"eclipse IDE for java developers"的文件进行安装。进入解压后的目录,就可以看到一个名为“eclipse.exe”的可执行文件,双击此文件直接运行,eclipse 能自动找到用户先期安装的JDK路径

1.4.3 安装Android SDK

将下载的android-sdk压缩包解压为文件放于自选位置。在Eclipse中选择Windows>Preferences>Android>Browse找到解压文件>Apply>OK。打开环境变量,编辑Path,在变量值前添加:C: \java\adt-bundle-windows-x86-20130522\sdk\tools;,如图1.9。

图1.9 Path

1.4.4 ADT安装创建A VD

打开SDK Manager.exe,选择tools>Manage A VDs,在Android Virtual Device Manager中点击New,输入A VD的信息,点OK完成A VD的创建。如图1.10。

图1.10 A VD

第2章系统分析与设计

2.1 分析

扫雷是一个简单的单人游戏。游戏的目的是在没有触碰任何一个地雷的情形下清空一个雷区。在扫雷游戏中,游戏者要面对一片砖块组成的格栅,有些砖块包含随机设置的地雷。在扫雷游戏的游戏界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小由程序设置的游戏等级决定。

游戏开始时,系统会在雷区的某些小方块中随机布下若干个地雷。安放好地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块中有多少个雷方块。玩家可以根据这些信息去判断是否可以打开某些方块,并把认为是地雷的方块打上标识。当玩家将所有地雷找出后,其余的非雷方块区域都已打开,此时游戏结束。在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束;当玩家标识的地雷数超过程序设定,虽然打开了全部其余方块,游戏仍然不会结束。

在游戏开始后,雷区上方有两个计数器。一个计数器显示用户扫雷所花费的总时间,以秒为单位;另一个计数器显示当前还剩余多少个雷方块。

游戏需要提供提示语,如游戏的开始、游戏失败、游戏成功等。按功能将游戏区域分成两个区域:雷区和提示区。提示区包括两个计数器和一个按键操作结果图像提示。游戏过程中,当玩家用鼠标点击相应的方块,程序就会作出相应的鼠标响应事件,而众多鼠标事件的处理,都是围绕着实现扫雷程序的算法而衍生的。[3]

2.2 整体布局的设计

使用表格布局进行扫雷的布局,在表格布局上加入三行:

第一行包括用于计时的三列数字、新游戏按钮和剩余地雷数。我们使用TextView显示计时和地雷数。新游戏按钮使用ImageButton 。第二行是50像素高的空的TextView,将第一行和雷区隔离开。第三行是另一个表格布局,用来显示雷区,我将动态的向这个区域添加按钮。如图2.1。

图2.1 整体布局

2.3 游戏流程图

图2.2 流程图

第3章系统详细设计

3.1 基本变量设置

private TextView txtMineCount;//剩余地雷数

private TextView txtTimer;//计时

private ImageButton btnSmile;//新游戏按钮

private TableLayout mineField; //表的布局添加地雷

private Block blocks[][]; //所有的块

private int blockDimension = 24; //每块的宽度

private int blockPadding = 2; //块之间填充

private int numberOfRowsInMineField = 9;//雷区为9行

private int numberOfColumnsInMineField = 9;//雷区为9列

private int totalNumberOfMines = 10;//总共有10个雷

//定时器的运行时间保持跟踪

private Handler timer = new Handler();

private int secondsPassed = 0;

private boolean isTimerStarted; //检查是否已经开始或不定时

private boolean areMinesSet; //检查是否已经设置地雷

private boolean isGameOver;//检查是否游戏结束

private int minesToFind; //有待发现的地雷数量

3.2 游戏初始化

游戏的初始化函数中,要设置整个界面的背景图片和游戏开始按钮的图片,还有设置一个提示信息(当点击其它地方时弹出)。

public void onCreate(Bundle savedInstanceState) //游戏初始化

{

super.onCreate(savedInstanceState);

setContentView(https://www.360docs.net/doc/e54631351.html,yout.main);

txtMineCount = (TextView) findViewById(R.id.MineCount);

txtTimer = (TextView) findViewById(R.id.Timer);

//设置定时器和雷的液晶风格的字体样式

Typeface lcdFont = Typeface.createFromAsset(getAssets(),

"fonts/lcd2mono.ttf");

txtMineCount.setTypeface(lcdFont);

txtTimer.setTypeface(lcdFont);

btnSmile = (ImageButton) findViewById(R.id.Smiley);//设置为笑脸

btnSmile.setOnClickListener(new OnClickListener()

{

@Override

public void onClick(View view)

{

endExistingGame();//所有东西重置

startNewGame();//游戏开始

}

});

mineField = (TableLayout)findViewById(R.id.MineField);

showDialog("点击笑脸,开始新游戏", 2000, true, false);

}

3.3 游戏开始

游戏开始函数中,设置的是监听函数和用户界面显示函数,如果游戏要重新开始,要在这之前重置三个变量,即找到的雷数、是否游戏结束、游戏运行秒数。

private void startNewGame()//游戏开始

{

createMineField();//监听点击一次和LongClick

showMineField();//在用户界面显示所有块

minesToFind = totalNumberOfMines;

isGameOver = false;

secondsPassed = 0;

}

3.4 设置每个块的描述

设置每个块的描述函数中,首先设置块为雷,随机产生每个雷的行和列,而且不会使雷的行和列重复。然后设置块为雷数,检查块的左上、上、右上、左、右、左下、下、右下8个块是否有雷,如果有雷则雷数加1。

//设置雷,并设置块的雷数

private void setMines(int currentRow, int currentColumn)

{

//设置地雷排除用户点击的位置

Random rand = new Random();

int mineRow, mineColumn;//定义地雷所在的行和列

for (int row = 0; row < totalNumberOfMines; row++)

{

//设置地雷所在的行和列

mineRow = rand.nextInt(numberOfColumnsInMineField);

mineColumn = rand.nextInt(numberOfRowsInMineField);

if((mineRow + 1 != currentColumn) || (mineColumn + 1 != currentRow))

{

if (blocks[mineColumn + 1][mineRow + 1].hasMine())

{

row--; //雷已经在那,不重复同一个块

}

//雷在这个位置

blocks[mineColumn + 1][mineRow + 1].plantMine();

}

//排除用户点击的位置

else

{

row--;

}

}

int nearByMineCount;

//计算地雷周围的块数

for (int row = 0; row < numberOfRowsInMineField + 2; row++)

{

for (int column = 0; column < numberOfColumnsInMineField + 2; column++)

{

//查找每个块附近的雷数

nearByMineCount = 0;

if ((row != 0) && (row != (numberOfRowsInMineField + 1)) && (column != 0) && (column != (numberOfColumnsInMineField + 1)))

{

//检查所有附近的块数

for (int previousRow = -1; previousRow < 2; previousRow++)

{

for (int previousColumn = -1; previousColumn < 2; previousColumn++)

{

if (blocks[row + previousRow][column + previousColumn].hasMine())

{

//发现附近的雷,自加加

nearByMineCount++;

}

}

}

blocks[row][column].setNumberOfMinesInSurrounding(nearByMineCount);

}

// 侧行(第0个和最后一个行/列)

//设置行数和列数为9

else

{

blocks[row][column].setNumberOfMinesInSurrounding(9);

blocks[row][column].OpenBlock();

}

}

}

}

3.5 赢得游戏

赢得游戏函数中,首先停止定时器,然后重置变量和更新雷数,最后关闭雷区的所有按钮,设置每块的状态,显示“你赢了,花费……秒”信息。

//赢得游戏

private void winGame()

{

stopTimer();

isTimerStarted = false;

isGameOver = true;

minesToFind = 0; //设置雷数为0

//设置图标为酷酷的样子

btnSmile.setBackgroundResource(R.drawable.cool);

updateMineCountDisplay(); //更新雷数

//关闭所有按钮

//设置所有未标记的块

for (int row = 1; row < numberOfRowsInMineField + 1; row++)

{

for (int column = 1; column < numberOfColumnsInMineField + 1; column++)

{

blocks[row][column].setClickable(false);

if (blocks[row][column].hasMine())

{

blocks[row][column].setBlockAsDisabled(false);

blocks[row][column].setFlagIcon(true);

}

}

}

//显示信息

showDialog("你赢了,花费 " + Integer.toString(secondsPassed) + "秒!", 1000, false, true);

}

3.6 重置

重置函数中,首先停止定时器,然后重置计时器、雷数量、游戏按钮,最后删除所有的雷,并重置变量。

//所有东西重置

private void endExistingGame()

{

stopTimer(); //如果计时器正在运行,停止

txtTimer.setText("000"); //恢复计时器

txtMineCount.setText("000"); //恢复雷数量

btnSmile.setBackgroundResource(R.drawable.smile);

//删除所有的地雷

mineField.removeAllViews();

//设置所有变量,以支持所有比赛结束

isTimerStarted = false;

areMinesSet = false;

isGameOver = false;

minesToFind = 0;

}

第4章游戏运行及结果

4.1 游戏过程的简单实现

1)第一点击开始

在按下新游戏按钮时,计时器不会开始计时,只有第一次点击砖块才开始计时。

2)第一次点击没有地雷

用户的第一次点击不应该触发地雷,否则一开始就要猜测。因此在第一次点击后设置地雷。我们在用户刚刚打开的砖块之外的部分随机设置地雷(通过随机设置行和列的数字),之后为所有砖块计算临近的地雷数目生成数字砖块。

3)打开砖块的涟漪效果

用户在打开一个砖块后得到有关下一步的提示,如果打开的砖块是空白的,用户就无法猜测地雷的情况并决定下一步的操作。为了避免这种情况,我们打开空白砖块临近的砖块,一直递归的打开直到遇见有数字的砖块,类似于涟漪的效果。

4)在砖块上做标记

用户可以通过长按使砖块变为标记、问号和还原状态。实现的方法直接明了,当我们收到长按事件时,检查砖块现在的状态。如果砖块上没有标记,就将其变为标记状态;如果砖块上有标记,就将其变为问号状态;如果砖块上有问号,就将其变为还原状态。

5)每一步检查游戏的输或赢

每一次点击后都应该检查游戏的状态,确保我们不会错过任何点击和任何砖块。当点击的砖块下有地雷时,我们就输了,当所有地雷的砖块上标记时,我们就赢了。

4.2 游戏初始化

进入游戏后,游戏的初始化界面如图4.1。

图4.1 界面初始化

4.3 游戏开始

点击笑脸以后游戏开始,界面如图4.2。随便点击一个砖块,则正式开始游戏,定时器开始计时,雷数显示为10个雷,如图4.3。

图4.2 游戏开始

图4.3 游戏正式开始

如果是长按这个砖块,可以有三种状态,标记、问号和还原状态。如果砖块上没有标记,就将其变为标记状态;如果砖块上有标记,就将其变为问号状态;如果砖块上有问号,就将其变为还原状态。如图4.4、4.5、4.6。

图4.4 标记块为雷

扫雷的课程设计报告

西安文理学院信息工程学院课程设计报告 设计名称:数据结构课程设计 设计题目:实现一个N*M的扫雷游戏 学生学号:1402130407 专业班级:软件13级四班 学生姓名:樊秀琳 学生成绩: 指导教师(职称):谢巧玲(讲师) 课题工作时间:2015.6.22 至2015.7.3

说明: 1、报告中的任务书、进度表由指导教师在课程设计开始前填写并发给每个 学生。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩由指导教师实施。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门综合设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其本项综合设计成绩按 不及格处理。

信息工程学院课程设计任务书 指导教师:院长: 日期:2015年6月22日

信息工程学院课程设计进度安排表 学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班 指导教师签名: 2014年6月22日

成绩评定表 学生姓名:樊秀琳学号:1402130407 专业:软件工程班级:13级四班

摘要 摘要: 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法设计和语言实现,如C,C++,VB,JAVA等。我利用eclipse编写了与它功能相似的扫雷游戏,寓学于乐。 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的笑脸可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时提示游戏失败。其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了进行该游戏课程设计的目的,然后是任务描述和设计的相关要求,最后是最重要的需求分析和设计方案。重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解用户的意图,进而做出相对应的动作。清除未靠近地雷区的方块较为复杂。 关键词:算法设计;事件;Eclipse

JAVA课程设计扫雷小游戏

Java游戏设计报告 院系计算机科学学院 班级计科11002 姓名张林峰 设计日期2012.12.18—2012.12.29

1·设计内容及要求 1.1·扫雷小游戏的基本要求 扫雷小游戏主要采用Java语言编写,适合windows XP以下的系统,以eclipse 为平台。具体要求如下: <1>扫雷小游戏分为初级、中级和高级三个级别,扫雷排行榜保存着每个级别的最好成绩,即挖出全部的地雷并且用时最少。单机游戏菜单选择“初级”、“中级”和“高级”。 <2>游戏默认的是初级级别,用户可以选择不同级别将出现对应级别的扫雷区域,单击扫雷区域任一方格以便启动计时器。 <3>用户选择某个方格,单击它就行。若所选择的放阁下有雷,这一局就结束了,若所选择方格下无雷,则会显示一个数字,该数字代表方格周围8个方格中共有几颗雷。 <4>如果用户认为某个方格下有雷,单击右键可以在方格上标记一个用户认为是雷的图标(一个小旗子)。 <5>用户可以选择标记为疑问的方格,可以选择游戏菜单下的标记,或者双击右键所选方格显示(?)图标。 <6>扫雷完成后,程序弹出保存成绩的对话框,用户可以根据自身选择是否保存。 <7>如果用户喜欢有提示音,可以选择游戏菜单中的声音选项,单击扫雷区域任一方格,就会听到吧嗒声。当点中地雷时,将会有爆炸声音响起,胜利后,将播放凯旋的旋律。 1.2需求实现的主要功能 (1)该游戏具有计时功能,即扫完全部地雷所花费的时间。 (2)用户可以选择是否有音效。 (3)用户可以自定义级别,还可以输入任意地雷数。 (4)自动保存扫雷排行榜。 2·需求分析 2.1扫雷区域的布局设计 系统的整体布局为:CardLayout布局,采用菜单、按钮、面板……等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。 2.2雷区的设计 MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener 和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。 2.3音效的设计

(完整word版)JAVA课程设计--扫雷游戏

合肥学院 计算机科学与技术系 课程设计报告 2009~2010学年第二学期 课程Java语言与应用 课程设计名称扫雷游戏 学生姓名胡远远 学号0604031005 专业班级07网络工程一班 指导教师许强张贯虹

2010年09月 1.设计内容及要求 1.1 扫雷游戏的基本要求 Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下:(1)选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。 (2)用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。 (3) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。 (4)扫雷胜利后,显示游戏胜利。 (5) 用户可以右击空格,可以选择标记为“旗帜”、“问号”或者返回成空格。 1.2 需实现的主要功能 (1)用户点击笑脸实现复位操作。 调用repaint()和validate()函数对界面进行重置以及刷新操作(2)可以显示用户完全扫雷成功所花时间。 文本框TF记录扫雷成功所花的时间 (3)在失败和胜利后跳出失败或胜利的文本框 JoptionPane 该类用来调出对话框并提示胜利 2.需求分析 2.1 扫雷棋盘的布局设计 系统的整体布局为:CardLayout布局, 采用了文本框、按钮、面板、框架…等组件,菜单主要有run按钮笑脸和哭脸,按钮的功能是重新开始新的游戏。

扫雷

大连科技学院 Java课程设计报告 题目扫雷小游戏 学生姓名 XXX 专业班级软件工程12-1 指导教师史原职称讲师 所在单位大连科技学院 教研室主任刘瑞杰 完成日期 2015年6月12日

目录 1.总体设计 (1) 1.1本系统的主要功能 (1) 1.2系统包含的类及类之间的关系 (1) 2.详细设计 (2) 2.1 MineGame.java(主类): (2) 2.2 MineArea.java: (2) 2.3 Block.java: (3) 2.4 BlockView.java (3) 2.5 LayMines.java: (3) 2.6 Record.java: (4) 2.7 ShowRecord: (4) 3.运行效果 (5) 3.1 系统主界面 (5) 3.2初级录入界面 (5) 3.3中级录入界面 (6) 3.4高级录入界面 (6) 3.5游戏结束录入界面 (7) 3.6游戏英雄榜界面 (7) 参考文献 (8) 附录1 软件源程序 (8) 课程设计实践总结: (25)

1.总体设计 1.1本系统的主要功能 (1)本系统用户可以自定义级别并且可以任意输入雷数; (2)具有计时功能,即显示用户完成移动盘子所花费的时间; (3)自动保存扫雷英雄榜; 1.2系统包含的类及类之间的关系 本系统共包括7个java源文件。 如图1-1所示。 图1-1 类之间的关系

2.详细设计 2.1 MineGame.java(主类): (1)成员变量 bar和fileMenu 提供菜单操作,单击菜单操作中的选项为“初级”,“中级”,“高级”或“扫雷英雄榜”;mineArea 是扫雷区域,提供有关雷的主要功能;英雄榜”负责存放三个级别的扫雷最好成绩;showHeroRecord负责显示英雄榜中的数据(2)方法 MineGame()是构造窗口,负责完成窗口的初始化。 ActionPerformed(ActionEvent)方法是MineGame类实现的ActionListener接口中的方法,该方法负责执行菜单发出的有关命令。用户选择菜单中的菜单项可触发ActionEvent事件,导致actionPerformed(ActionEvent)方法执行相应的操作。 Main(String[])方法是程序运行的入口方法。 (3)源代码见文件MineGame.java 2.2 MineArea.java: (1)成员变量 block和Block类型的数组,用来确定雷区有多少需进行扫雷的方块; blockView是BlockView类型的数组,负责block数组中Block对象提供视图; lay是LayMines类型的对象,负责设置block数组中的哪些方块不是雷; record负责提供保存成绩的界面,是一个对话框,默认为不可见,用户只有扫雷成功后,才可以看见该对话框; reStart是一个按钮对象,用户单击它重新开始游戏; time是计时器对象,负责计算用户用时。 (2)方法 initMineArea(int,int,int,int)方法可根据参数提供的数据设置雷区的宽度,高度,类的数目以及雷区的级别。 actionPerformed(actionEvent)是MineArea类实现的ActionListener接口中的方法。当用户单击blockView中的某个方块时actionPerformed(actionEvent)执行有关算法。 Show()方法是一个递归方法,actionPerformed(actionEvent)方法执行将调用show 方法进行扫雷。 mousePressed(mouseEvent)方法是MineArea类实现的MouseListener接口中的方

C程序课程设计报告(扫雷游戏)

C程序设计 扫雷游戏 一、设计题目:扫雷游戏 二、设计目的 1.使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2.培养学生综合运用所学知识独立完成课题的能力。 3.培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4.提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基

本素质。 5.培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 三、设计要求 1.汪洋和孔维亮组成设计小组。小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。 2.查阅相关资料,自学具体课题中涉及到的新知识。 3.采用结构化、模块化程序设计方法,功能要完善,界面要美观。 4.按要求写出课程设计报告,并于设计结束后1周内提交。 一概述 1)掌握数组指针的概念及其应用 2)培养团结合作精神 2. 课程设计的要求 要求我们有扎实的C语言知识,以及良好的编程习惯,能够熟练的应用循环,有毅力,还要求我们有较强的合作精神,善于总结。同时还要求我们自学C语言作图部分知识。在必要时还要上网查相关资料。 3.课程设计的主要设计思想 扫雷游戏主要用了一个10行10列的二维数组,刚开始利用random随机布雷。 每一个程序最主要的是算法。扫雷游戏算法的重点是一开始统计好每个格子周围有多少雷,当鼠标左键点在格子上时做出判断,如果周围8个格子有雷则显示出雷数,如果没有雷则显示空白格(在四个角的格子显示周围3个格子,其它边缘的格子显示周围5个的状态),我们在主函数中用两个for语句来判断周围雷数。我们还加了鼠标处理函数。 如果格子上有雷则调用函FailExitGame(),显示“Fail!”,游戏结束。若所有的雷都标出,且所有的格子都处理过,则调用函数ExitGame(),显示“OK,Good!”,游戏结束。游戏结束后,按任意键出去。

扫雷小游戏课程设计

西安科技大学 软件工程课程设计报告 题目:扫雷游戏开发 班级:计科0901班 学号: xxxxxxxxxxxx 姓名: xxxxxxx 电话:xxxxxxxxxxxxx

2012年7月 目录 1 绪论 (3) 1.1 选题目的及意义 (3) 1.2 系统概述 (3) 2 可行性研究报告 (4) 3 需求规格说明书 (5) 4 总体设计说明书 (6) 5详细设计说明书 (7) 6 系统实现 (16) 6.1 开发环境 (16) 6.2 关键技术 (16) 6.3 运行结果 (16) 7测试分析报告 (17) 8心得体会 (19) 参考文献

1.绪论 1.1选题目的及意义 随着现在生活节奏的加快,人们在工作学习之余需要一个轻松娱乐的放松环境。因此我编写此软件的目的,一方面作为初学者来了解java环境下的小程序开发,另一方面使用户能在娱乐休闲的同时拓展思维能力。扫雷是单人计算机游戏。游戏的用户界面由小方格组成的战场构成。当游戏开始时,计算机将固定的地雷数随机的放到战场的方格。此游戏还允许玩家指定战场中的地雷数。 参考Windows 操作系统提供的扫雷游戏,改进扫雷游戏程序,增加以下功能:在主界面中添加一个菜单栏,菜单栏中包括游戏和帮助两个菜单,其中游戏菜单中设置初级、中级、高级、自定义、声音、扫雷英雄榜这几个菜单项,帮助菜单中设置游戏规则和制作人员两个菜单项。 背景说明: a.软件名称:扫雷 b.用户:所有扫雷游戏爱好者 1.2 系统概述 1.2.1扫雷游戏的基本要求 Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下: (1) 扫雷游戏分为初级、中级和高级三个级别。单击游戏菜单可以选择“初级”、“中级”和“高级”。 (2) 选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击‘“开始”便启动计时器。 (3) 用户要揭开某个方块,可左键单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下无雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。 (4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。 (5)当用户点中雷时,将有“你输了”的提示出现,胜利时,将有“你赢了”的提示出现。 1.2.2 需实现的主要功能 用户可以自定义级别并且可以任意输入雷数; 具有计时功能,即显示用户完成移动盘子所花费的时间。

能力拓展训练-----扫雷游戏

课程设计 题目扫雷游戏 学院计算机学院 专业软件工程 班级0803班 姓名徐泽前 指导教师 2010 年7 月15 日

扫雷游戏 1规则描述 游戏开始后,系统会在雷区的小方块中随机布下若干个地雷。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块中雷方块的数量,玩家可以根据这些信息去半段时候可以打开某些方块,并把认为是地雷的方块打上标记,当玩家吧所有地雷找出来后,其余非雷方块区域都已打开,这时游戏结束。在游戏过程中一旦错误的打开了雷方块则立即失败,游戏结束;当玩家标识的地雷数量超过程序设定,虽然打开了全部其余方块,游戏仍不会结束。 2软件环境 Windows XP Microsoft Visual C++ 3功能需求分析 游戏需要提供两个计数器,一个用来显示用户扫雷所花费的时间,以秒为单位;一个用来显示当前还剩多少个雷方块。另外提供一个按钮,用来开始游戏。在游戏区域方面,按功能将它分成两大区域:雷区和提示区。提示区除了上面提供的计数器外,还包括两个按钮,一个用来开始游戏,一个用来显示版本信息。游戏过程中,当玩家用鼠标点击相应的方块,程序就会做出相应的鼠标响应时间,程序处理这些鼠标时间的过程中会伴随着GDI绘图,而众多鼠标事件的处理,都是围绕着实现扫雷程序的算法而衍生的。

4程序实现 4.1界面设计 图1 界面设计图 4.2具体实现 4.21布雷 随机获取一个状态为非雷的点,将它的属性标识为雷,重复这样的工作,直到布下足够的累为止,流程图如下 在CMineWind类中添加游戏的布雷模块的处理函数,该函数的具体实现如下所示:

游戏开发课程设计报告模版-扫雷游戏报告(定稿)

中原工学院信息商务学院 课程设计报告 2016~2017学年第一学期 课程游戏开发课程设计 课程设计名称扫雷游戏 学生姓名*** 学号***** 专业班级数媒141 指导教师郑全录 2016年12月

目录 第一章设计内容及要求 (1) 1.1 扫雷游戏的基本要求 (1) 1.2 游戏需要实现的主要功能 (1) 第二章需求分析 (2) 2.1扫雷游戏界面设计 (2) 2.2 雷区的设计 (2) 2.3 音效的设计 (3) 2.4 扫雷英雄榜的设计 (3) 第三章总体设计 (5) 3.1 总体功能图 (5) 3.2 总体流程图 (5) 第四章主要功能设计流程 (6) 4.1 雷区设计流程图 (6) 4.2 音效设计流程图 (6) 4.3 英雄榜设计流程图 (7) 第五章主要功能设计流程 (8) 5.1 类之间关系图 (8) 5.2程序运行效果图 (8) 5.2.1 游戏登录界面 (8) 5.2.2游戏菜单界面 (9) 5.2.3游戏运行界面 (10) 5.2.4游戏英雄榜界面 (12) 第六章总结 (13) 参考文献 (14) 附录 (15)

第一章设计内容及要求 1.1扫雷游戏的基本要求 当前各种游戏层出不穷,因为游戏的开发成本非常大,所以游戏的开发具有一定的风险性,但是一些小游戏的开发成本具有成本小,编写简单的优势,所以这些小游戏在游戏开发中也占有一席之地。在这类小游戏中包括益智类游戏,它以画面精美、游戏方法简单等特点得到大家的认可。成为人们在工作之余不可或缺的好伙伴。针对这种情况我选择了扫雷游戏该课题作为我的课程题目。 Windows XP和Windows 7系统提供的扫雷游戏是一个很有趣的游戏。本次课程设计的主要任务是使用JA V A语言编写一个与其类似的扫雷游戏。具体要求如下: 1、扫雷游戏分为初级、中级和高级三个级别,同时扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。 2、选择级别后将出现相应级别的扫雷区域,这时用户使用鼠标左键单击雷区中任何一个方块便启动了计时器。 3、用户要揭开某个方块,可单击它。若所揭方块下有雷,用户便输了这一局,若所揭方块下没有雷,则显示一个数字,该数字代表此方块周围的8个方块中共有多少颗雷。 4、如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),窗口左上角的雷数计数器将会减少一个。 5、扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。 6、用户如果遇到疑问的方块,可以勾选游戏菜单下的标记选项卡(或者用快捷键Alt+G然后点击M)即可标记该可疑方块,此时双击右键并可出现“?”标记。另有颜色选项,当用户选中该项时,游戏将以最低图像像素来显示。 7、如果用户需要使用提示声,可选中声音选项,此时将听到计时的咔嗒声。当用户点中雷时,将有爆炸声产生;胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。 1.2游戏需要实现的主要功能 1、用户可以自定义级别并且可以任意输入雷数; 2、具有计时功能,既显示用户完成所有扫雷任务所需要的时间; 3、自动保存扫雷英雄榜。

扫雷游戏技巧

1.边角的1对应的角肯定是雷,如下图。这也是扫雷中最常见的情形。 2. 2 2.边上的两个2并排对应的两个块肯定是雷,如下图。 3. 3 3.边角的3对应的3个块肯定是雷,如下图。 4. 4 4.孤立的3对应的3个块肯定是雷,如下图。

5. 5 5.孤立的4对应的4个块肯定是雷,如下图。 6. 6 6.孤立的5对应的5个肯定是雷,如下图。 7.7

7.两个1夹一个2的1,两个1下面对应的块肯定是雷,如下图。 8.孤立的2对应的两个块肯定是雷,如下图。 9.如下图,已知3的左边两个是雷,那么3的下边两个中肯定有一个是雷,所以第二个1下边的那个块肯定不是雷。 10.如下图,已知2的左边一个是雷,所以2的下边两个中肯定有一个是雷,所以1的右边3个块都不是雷。 11.如下图,上边那个1对应的两个角块中有一个是雷,所以下边那个1下边的3个块都不是雷。

12.如下图,两个并排的3对应的3个块都是雷。 13.如下图,两个并排的2,已知左边那个2的左边是雷,则右边那个2的右下角那个肯定也是雷。 14.如下图,已知右边两个竖着的1的左边两个块中有个个是雷,则左边那两个1下方的两个块都不是雷。 15.如下图,1和2孤立地排在一起,则2要从下方3个块中选两个,肯定不会是左边两个,所以2的右下角那个肯定是雷,而1和2下边两个块中有1个是雷,所以1左下角那个肯定不会是雷。

16.如下图,一个3和一个2并排在一起,已知3上边那个是雷,则3左下角那个块肯定是雷,而2右下角那个块肯定不是雷。 17.如下图,两个2并排在一起,且已知右边那个2正上方那个块是雷,则它的左边两个中肯定只有一个是雷,并且左边那个2的左边3个块都不是雷。 一夹二,一有雷; 二夹一,心有雷; 二夹三,全有雷; 二二边,都有雷; 三连一,中有雷; 四连一,边有雷。

java扫雷游戏课程设计报告

Java课程设计报告 姓名 号学 系院 级班 业专 1.设计内容及要求 1.1 扫雷游戏的基本要求 Windows 2000/XP系统提供的扫雷游戏是一个很有趣的游戏。本章的课程设计使用Java语言编写一个与其类似的扫雷游戏。具体要求如下: (1) 扫雷游戏分为初级、中级和高级三个级别,扫雷英雄榜存储每个级别的最好成绩,即挖出全部的地雷且用时最少者。单击游戏菜单可以选择“初级”、“中级”和“高级”或“查看英雄版”。 (2) 选择级别后将出现相应级别的扫雷区域,这是用户使用鼠标左键单击雷区中任何一个方块便启动计时器。 (3) 用户要揭开某个方块,可单击它。若所揭方块下有泪,用户便输了这一局,若所揭方块下五雷,则显示一个数字,该数字代表方块的周围的8个方块中共有多少颗雷。. (4) 如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为

是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),程序将显示的剩余雷数减少一个。 (5) 扫雷胜利后(用时最少者),程序弹出保存成绩的对话框。 (6)用户可以选择标记疑问的方块,用可以勾选游戏菜单下的标记(或者用快捷键alt+G 然后M)即可,此时双击右键并可出现“?”标记。另有颜色选项,当用户勾选此项时,游戏将以最低图像像素来显示。 (7)如果用户需要即使提示声,并可选中声音选项,此时将听到计时的卡塔声。当用户点中雷时,将有爆炸声产生,胜利时,将有凯旋的旋律播放,此时企鹅出现欢悦表情。 1.2 需实现的主要功能 (1)用户可以自定义级别并且可以任意输入雷数; (2)具有计时功能,即显示用户完成移动盘子所花费的时间; (3)用户可以选择是否有音效; (4)自动保存扫雷英雄榜; 2.需求分析 2.1 扫雷棋盘的布局设计 系统的整体布局为:CardLayout布局, 采用了菜单、按钮、面板…等组件,菜单主要包括开始,选择级别,标记,扫雷英雄榜,退出,按钮的功能是重新开始新的游戏。 2.2 雷区的设计 MineArea类是javax.swing包中Jpanel容器的子类,实现了ActionListener 和MouseListener接口,所创建的对象:mineArea是MineGame类中最重要的成员之一,作为一个容器添加到MineGame窗口的中心。标明MineArea类的主要成 图2-1 MineArea类的UML图

扫雷游戏报告

《扫雷游戏》程序设计报告 院系中兴电信学院 专业计算机科学与技术 班级7B1431 小组成员强建敏张伟田志杰赵立

一、开发环境 Intel?Pentium?2及以上的处理器,32M以上内存,20M以上硬盘空间。 Microsoft?WindowsTM22000或XP以上操作系统。 800×600或以上的屏幕分辨率 microsoft visual studio 2010 二、系统功能 游戏共由两个类组成 主界面对话框类:主要负责主界面、菜单及各个窗口类对象的创建和调用等处理。 扫雷窗口类:主要负责接收玩家鼠标输入的打开格子位置、格子变换、花费时间及地雷格子的显示等处理。 三、系统设计 1、扫雷格子模块功能设计 地雷格子的处理是扫雷游戏的核心内容,包括如下几个部分。 (1)地雷铺设模块。 游戏中的地雷个数可以根据玩家设定。地雷分布是调用随机数发生函数生成随机数。利用随机数去除最大行数或者最大列数,得到放置地雷行列坐标。然后分别防止地雷到不同的行和列的格子中去。 (2)自动打开周围不是地雷的格子。 在游戏中,当玩家单击的格子周围没有地雷格子时,就需要程序自动地把周围的格子自动打开来提高玩家的效率。 以上的实现,由如下代码实现。 public void LoadGame() {

int x = Convert.ToInt16(cbX.Text);//行坐标 int y = Convert.ToInt16(cbY.Text);//纵坐标 intmine_count = Convert.ToInt16(cbMinecount.Text);//地雷个数 mines = new List(); mines = CreateMines(x, y, mine_count);//生成随机地雷集合 intbtnx = plMines.Location.X + 5; intbtny = 5; for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { Button btn = CreateButton(btnx, btny); btn.Tag = j + "," + i; plMines.Controls.Add(btn); btnx += 40; } btnx = plMines.Location.X + 5; btny += 40; Application.DoEvents(); } } 2、玩家输入模块功能设计 在扫雷游戏中,用的最多的就是鼠标的输入。而鼠标输入又分为鼠标左键单击和右键单击两种处理类型。 1. 鼠标左键的处理

扫雷游戏-课程设计报告

J A V A课程设计题目:扫雷游戏 院(系)计算机信息工程学院 专业网络工程 班级 13级网络工程1班 学生姓名方琴刘莉虹程子卿薛中意 设计时间 2015年8月 指导教师万中英

提交日期 2015年10月8日 摘要 《扫雷》是一款大众类的益智小游戏。游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子,同时避免踩雷。先任意点开少量的方格,没有爆炸时,会出现一个数字,这个数字代表的意思是以它为中心的9个格子内所有雷的个数。一般围在一堆数字中间的有可能是雷,你在你认为是雷的那里插旗,就可以把它设定为雷,然后在数字区用鼠标左右键双击,可以打开非雷区,等打开所有非雷区,你就赢了。 采用GUI界面设计,窗口定位,绘图机制,鼠标监听等Java技术。用户可以自己选择地雷的数量,地雷随机分布在17*24的方块矩阵中,地雷数量越多,难度越大。鼠标放在方格上,单击鼠标左键开始游戏,按空格键插旗。如果插旗错误,或是点击到了地雷,则游戏失败。

1 引言 该设计的目的及意义 该设计的要求 相关技术 2 总体设计 功能设计 3 详细设计 系统界面设计 流程图 界面截图

程序描述 选择地雷数量 游戏界面 4 课程设计总结 遇到问题解决问题过程 系统存在的问题,进一步要做的工作 课程设计心得体会 5 附录(程序代码) 该设计的目的及意义

1.利用扫雷游戏巩固和Java语言程序设计这一课程的基本 知识的理解和掌握; 2.掌握Java语言程序设计中编程和程序调试的基本技能; 3.基本掌握完全面向对象程序设计的基本思路和方法; 4.利用Java语言程序设计学会基本的软件设计; 5.掌握书写程序设计说明文档的能力。 课程设计要求 1. 分析课程设计题目的思路及要求; 2. 编写程序代码,调试程序使其能正确运行; 3. 设计完成的软件要便于操作和使用,有整齐、美观的使用界面; 4. 能实现简单的扫雷游戏; 相关技术

扫雷游戏程序设计课程设计报告

课 程 设 计 扫雷游戏程序设计 2013 年 11 月 5 日 设计题目 学 号专业班级 学生姓名 指导教师

合肥工业大学课程设计任务书

一. 设计任务 (1)鼠标左击排雷,右击插小旗,打问号; (2)方格里面的数字表示方格周围的雷数; (3)能够显示未标记雷数和游戏用时; (4)雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。在任何情况下单击小脸可以重新开始游戏; (5)可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数),和自行定义雷区行数,列数和雷数的功能; (6)排行榜功能,扫雷成功时候,根据游戏用时更新排行榜。 二. 具体设计 (一)、设计思路 扫雷游戏是很经典也很有趣的一款游戏,这次的游戏程序设计要求设计出功能与原游戏相近的一款游戏,首先定义变量和类要画出游戏方格以及位图,设计游戏等级,等级越高方格越多雷数也越多;然后设置随机布雷以保证每次重新开始游戏都有不同的雷区地图;另外定义鼠标左击扫雷,左击标记周围埋雷情况,右击奇数次排雷偶数次取消上次排雷,以及扫雷第一次左击不能扫到雷。

(二)、设计表示: 1、鼠标左击排雷,右击插小旗,打问号; 2、方格里面的数字表示方格周围的雷数; 3、能够显示未标记雷数和游戏用时; 4、雷区上面的小脸可以变化,显示微笑,惊讶,痛苦,胜利。在任何情况下单击小脸可以重新开始游戏; 5、可进行游戏难度的设定:包括预定义的难度级别(雷区行数,列数和雷数); 6、任何时候开始游戏第一次点击不会扫到雷。 由于时间等原因未完成功能: 排行榜和自行定义雷区行数,列数和雷数功能。 (四)、详细设计 1、添加位图 前十二幅是在雷区的,后四幅是按钮。为了便于加载,必须各自保证其连续性。 分别表示游戏进行的状态、结果胜利或触雷。

VB课程设计报告——扫雷游戏

VB课程设计报告 -------扫雷游戏马学清1008260132 指导老师:张小兵 一、题目介绍 在计算机逐步渗入社会生活各个层面的今天,计算机已经成为人们日常生活的一分,越来越多的人使用计算机办公、娱乐等等。 扫雷游戏是Windows操作系统自带的一款小游戏,在过去的几年里,Windows操作系统历经数次换代更新,变得越来越庞大、复杂,功能也越来越强大,但是这款小游戏依然保持原来的容貌,可见这款小游戏受到越来越多人的喜爱。我利用Turbo C编写了与它功能相仿的扫雷游戏,寓学于乐。 程序功能 二、程序功能 程序的功能是随机生成地雷数,通过鼠标操作玩游戏,不接受键盘,按任意键结束程序。单击屏幕上的“开始”按钮可以重新开始游戏。所有地雷标出后胜利,当鼠标左键单击到地雷时失败。 三、程序设计目的 1.培养综合运用所学知识独立完成课题的能力。 2.更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 3.提高对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 4.培养勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 5.培养从资料文献、科学实验中获得知识的能力,提高从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6.对掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核 四、游戏规则 设计10×10格区域,单击鼠标后,在此格中显示的数字,则表示它周围就有几个空格内含有的地雷数,周围没有地雷的显示空白,则不能再单击了。如果是地雷,则游戏结束。如果判断是地雷,可以单击鼠标右键标出,显示红色,要取消红旗标志则再单击鼠标右键,当所有地雷都标出,每个空格都处理过,那么游戏就胜利结束。 五、程序源代码 '级别 Private Sub Form_Load() '默认初级 dengji = 1 Call nandu(dengji)

Java课程设计报告_扫雷小游戏

. . . . JAVA语言课程设计报告 题目:扫雷小游戏 设计者: 专业班级: 学号: 指导教师: 2011年 12月 12日 计算机学院

目录: 1.设计容及要求 (1) 1.1.扫雷小游戏的基本要求 (1) 1.2 需求实现的主要功能 (1) 2.需求分析 (1) 2.1 扫雷区域的布局设计 (1) 2.2 雷区的设计 (1) 2.3 音效的设计 (1) 3.总体设计 (2) 3.1总体功能图 (2) 3.2游戏设计流程图 (2) 4.主要功能设计 (3) 4.1 雷区设计流程图 (3) 4.2 音效设计流程图 (4) 4.3 排行榜设计流程图 (5) 5.代码实现 (6) 5.1 类之间的关系图 (6) 5.2 各界面图及代码: (6) 5.2.1 游戏菜单界面 (6) 5.2.2 游戏登录界面(初级、中级、高级) (8) 5.2.3自定义扫雷界面 (15)

6.扫雷总结 (18) 7.参考文献 (18) 1·设计容及要求 1.1·扫雷小游戏的基本要求 扫雷小游戏主要采用Java语言编写,适合windows XP 以下的系统,以eclipse 为平台。具体要求如下: <1> 扫雷小游戏分为初级、中级和高级三个级别,扫雷排行榜保存着每个级别的最好成绩,即挖出全部的地雷并且用时最少。单机游戏菜单选择“初级”、“中级”和“高级”。 <2> 游戏默认的是初级级别,用户可以选择不同级别将出现对应级别的扫雷区域,单击扫雷区域任一方格以便启动计时器。 <3> 用户选择某个方格,单击它就行。若所选择的放阁下有雷,这一局就结束了,若所选择方格下无雷,则会显示一个数字,该数字代表方格周围8个方格中共有几颗雷。 <4> 如果用户认为某个方格下有雷,单击右键可以在方格上标记一个用户认为是雷的图标(一个小旗子)。 <5> 用户可以选择标记为疑问的方格,可以选择游戏菜单下的标记,或者双击右键所选方格显示(?)图标。 <6> 扫雷完成后,程序弹出保存成绩的对话框,用户可以根据自身选择是否保存。 <7> 如果用户喜欢有提示音,可以选择游戏菜单中的声音选项,单击扫雷区域任一方格,就会听到吧嗒声。当点中地雷时,将会有爆炸声音响起,胜利后,将播放凯旋的旋律。 1.2 需求实现的主要功能 (1)该游戏具有计时功能,即扫完全部地雷所花费的时间。 (2)用户可以选择是否有音效。 (3)用户可以自定义级别,还可以输入任意地雷数。 (4)自动保存扫雷排行榜。 2·需求分析 2.1 扫雷区域的布局设计 系统的整体布局为:CardLayout 布局,采用菜单、按钮、面板……等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。 2.2 雷区的设计

计算机图形学课程设计——扫雷游戏程序设计

计算机图形学课程设计——扫雷游戏程序设计

《计算机图形学》课程设计报告 VC++扫雷游戏的程序设计 专业班级: 小组成员:

指导老师: 日期:2012年12月24日 1、需求分析 本课程设计实现类似于Windows XP操作系统自带的扫雷游戏。该设计以V isual C++ 6.0为开发环境, Windows 7/XP为程序运行平台。在程序设计中,把整个雷区看成一个二维数组,把雷方块定义为具有所在雷区二维数组的行和列、当前状态、方块属性、历史状态的结构体,采用了MFC机制解决问题的方法。整个游戏程序包括了布雷、扫雷过程和结果三个阶段,在处理鼠标响应事件中伴随着GDI绘图。程序通过调试运行,实现简单的设计目标,满足扫雷游戏初学者的需要。 通过本课程设计,以便更好的巩固计算机图形学相关知识,掌握课程设计基本的方法和技巧,同时增加同学之间的团队合作精神以及培养分析问题、解决问题的能力。 2.总体设计 2.1 功能概述 扫雷游戏的游戏界面如图1所示。在这个界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小由用户设置的游戏等级决定。

图1 游戏开始时,系统会在雷区中随机布下若干个地雷。安放地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块 中有多少雷方块。玩家可以根据这些信息去判断是否可以鼠标点击方块, 并把认为是地雷的方块打上标识。当玩家将所有地雷找出后,其余的非雷方块区域都已打开,此时游戏结束。在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束。 游戏规则总结: ●开始:按左键开始游戏,按按钮或菜单重新开始。 ●左键:按下时,是雷则结束,非雷则显示数字。 ●数字:代表此数字周围一圈八格中雷的个数。 ●右键:奇次按下表示雷,偶数按下表示对上次的否定。 ●结束:左键按到雷结束,找出全部雷结束。 在游戏开始后,雷区上方有两个计数器。右边的计数器显示用户扫

VB扫雷小游戏编程代码

VB扫雷小游戏 一.编程目的 二.编程思路 1.新建command_up和label_down控件 2.用load加载控件 3.根据雷区的X、Y、以及难度进行随机布雷。 4.统计每一个label周围雷的数量并作为label的caption。 5.在单击command的时候显示label 6.在右击command的时候进行标记 7.在label上左右键同时按下的时候检查已标记雷的数量与label显示的数量是否一致。三.界面设计 四.代码设计 Dim Start_Time, End_Time Dim Area_X%, Area_Y%, Area%, Area_List() Dim Current_Mine% Dim Difficulty# Dim Continue_Flag%, Success_Flag%, LeftAndRight_Flag% Dim Near_List Dim Mine_Count Private Sub Command_End_Click() End End Sub Private Sub Delete_Item(List(), Index As Integer) Dim i%

For i = LBound(List) + Index - 1 To UBound(List) - 1 List(i) = List(i + 1) Next i '防止100%的困难度 If UBound(List) > LBound(List) Then ReDim Preserve List(LBound(List) To UBound(List) - 1) End Sub Private Sub Command_retry_Click() '卸载 For i = 1 To Area Unload Label_Down(i) Unload Command_Up(i) Next i Command_Start.Caption = "开始游戏" Call Command_Start_Click End Sub Private Sub Command_Up_Click(Index As Integer) Success_Flag = 1 If Continue_Flag = 1 Then If Timer1.Enabled = False Then Call Command_Start_Click If Label_Down(Index).Caption = "X" Then Success_Flag = 0 Continue_Flag = 0 For i = 1 To Area If Command_Up(i).Visible = True And Command_Up(i).Caption = "X" And Label_Down(i).BackColor = vbRed Then '标记雷正确 Command_Up(i).Picture = LoadPicture(App.Path + "\pictures\mine_correct.gif", , , Command_Up(i).Width, Command_Up(i).Height) Command_Up(i).Visible = True Label_Down(i).Visible = True ElseIf Command_Up(i).Visible = True And Command_Up(i).Caption = "X" And Label_Down(i).BackColor = vbGreen Then '标记雷错误 Command_Up(i).Picture = LoadPicture(App.Path + "\pictures\mine_wrong.gif", , , Command_Up(i).Width, Command_Up(i).Height) Command_Up(i).Visible = True Label_Down(i).Visible = True Else Command_Up(i).Visible = False Label_Down(i).Visible = True End If Next i

扫雷课程设计报告

Har bi n I nst i t ut e of Technol ogy 课程设计报告 课程名称: 数据结构与算法课程设计 设计题目: 扫雷 院 系 计算机科学与技术学院 班 级 : 10503104 设计者: 陆亮 学 号: 1050310404 指导教师: 晓燕 设计时间: 2007-8-27 至U 2007-9-8 工业大学

工业大学课程设计任务书 姓名:陆亮院(系):计算机科学与技术学院 专业:计算机科学与技术班号:1050310404 任务起至日期:2007年8月27日至2007年9月9日 课程设计题目:扫雷游戏 课程设计要求: ①能够给出游戏结果(输、赢、剩余的雷数、用掉的时间按妙计)。 ②游戏界面最好图形化,否则一定要清楚的字符界面。 设计任务总述: 本题目做一个N x M的扫雷游戏,每个方格包含两种状态:关闭(closed )和打开(opened), 初始化时每个方格都是关闭的,一个打开的方格也会包含两种状态:一个数字(clue)和一个雷(bomk)。你可以打开(open)一个方格,如果你打开的是一个bomb,那么就失败;否则就会打开一个数字,该数字是位于[0,8]的一个整数,该数字表示其所有邻居方格(neighboring squares )所包含的雷数,应用该信息可以帮助你扫雷。 工作计划及安排: 8月27日-8月30日:学习VC++6.0的MFC编程,以及扫雷所需设计的算法; 8月31日-9月5日:实现扫雷的基本框架; 9月6日-9月9日:优化功能;

系统总任务描述: 本题目做一个Nx M的扫雷游戏,每个方格包含两种状态:关闭(closed )和打开(ope ned), 初始化时每个方格都是关闭的,一个打开的方格也会包含两种状态:一个数字(clue )和 一个雷(bomb)。你可以打开(open)一个方格,如果你打开的是一个bomb,那么就失败; 否则就会打开一个数字,该数字是位于[0,8]的一个整数,该数字表示其所有邻居方格 (n eighbori ng squares )所包含的雷数,应用该信息可以帮助你扫雷。 已完成工作描述: 1. 所需的算法都已经设计完毕,包括展拓空白区域,判胜,获得周围雷数,以及随机布雷 2. 翻阅了大量有关的书籍,初步学习了VC++6

相关文档
最新文档