篇一:扫雷游戏实验报告
课程设计
班 级: 姓 名: 学 号: 指导教师: 成 绩: 电子与信息工程学院信息与通信工程系
目录
1.任务概述------------------------------------3
2.功能及模块设计------------------------------3
3.数据结构与算法设计--------------------------4
4.程序描述------------------------------------6
5.设计感想------------------------------------9
6.参考文献------------------------------------10 附录1 程序源码--------------------------------10
1.任务概述
1.1设计题目
扫雷游戏
1.2规则要求
1) 图形用户界面。
2) 类似 windows 附件的扫雷游戏。
3) 其余功能自行扩展。
1.3目标
锻炼自学能力、办公软件操作能力、程序设计能力、培养学生的编程思想、编程兴趣。
1.4运行环境
Java , esclipse
1.5条件与限制
1)图形界面美观大方。
2)功能必须正确,扩展功能自行丰富。
3)程序设计要注意健壮性。
2.功能及模块设计
2.1具体的功能介绍
过程分析:在屏幕中显示一个雷区,雷区范围内预先埋设了一定数量的随机分布的地雷;玩家可以对雷区进行标记,如果能正确标记出雷区中的所有地雷,则游戏胜利;如果踩雷,则游戏失败。
1)开局:开局默认初级难度,有三个难度供选择-初级:12*12、中级:15*15、高级:20*20;各级地雷数分别为:10,25,50;雷区每个方块下或有地雷,或者没有地雷;
2)挖雷:将鼠标移动到某个方格上,并点击鼠标左键,可挖开它;若所揭开方块下有雷,则游戏失败;如果没有雷,则显示数字,数字为这个方格周围八个方格的雷的数目。
3)标记地雷:在鼠标所在的某个方格上右击一次或两次,则标记该区域;一次表示
认为此区域有雷,两次表示不确定这个区域是否有雷。每标记一个区域,则显示的地雷数减1。
4)判断胜负:如果挖出了其它所有无雷区,或者标记出了所有的雷区,则游戏胜利。如果在游戏中挖到任何地雷则游戏失败。
2.2软件模块划分
表1-1
1)选择游戏难度
2)重新开始按钮
3) 存放未找到的雷的个数
4)雷区
3.数据结构与算法设计
3.1数据结构
在存放雷区信息时用到了二维数组。
3.2算法
3.2.1 随机函数
随机布雷扫雷游戏要求在M 行、N 列的一块网格游戏区内随机地布上MineNum 个雷,
且MineNum 的取值应该小于M 和N 的乘积。这可以在一张M×N 的网格上通过满足均匀分布的随机算法实现。其中有MineNum 个网格是雷区,剩下的网格为非雷区。游戏的目标是尽可能快地找到所有的雷区,而不踩到地雷。JAVA 提供了实现随机算法的类Math,通过Math 类的random () 方法,这可以很方便的实现随机布雷功能。这可以通过以下的代码实现随机布雷算法。
for (int i = 0; i < mineNum; ) {
int x = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1)); int y = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1));
if (mineButton[x][y].isMine != true) {
mineButton[x][y].isMine = true;
i++;
}
}
3.2.2计算点击位置周围雷的数目
扫雷游戏中相邻的九个格子关系密切,因此需要一个简便的算法对这九个格子进行遍历。
可以用以下算法来实现:
for (int x = i - 1; x < i + 2; x++) {
for (int y = j - 1; y < j + 2; y++) { if ( ( (x != i) || (y != j)) && (x >= 0) && (y >= 0)
篇二:21点游戏实验报告
实验一
一、实验目的 21点游戏
1.掌握使用Java语言进行结构化程序设计;
2.熟悉Java基本语法,基本数据类型,各种运算符及表达式的使用,掌握运算符优先
级,熟悉使用Java的选择语句,循环语句。
3.熟悉Eclipse开发环境,编写简单的Application程序,并编译和执行。
二、实验要求
1.调试程序、编译,运行后得到正确的结果;
2.写出实验报告,要求记录编译和执行Java程序当中的系统错误信息提示,并给出解
决办法。
三、实验环境
1.计算机一台;
2.JDK、MyEclipse工具软件。
四、实验内容
编写并运行21点游戏。
具有菜单形式的界面
掌握Random类基本用法
设计胜负判定算法
五、实验步骤
1.了解21点游戏的基本规则
2.用0到53代表52张扑克牌
3.完成洗牌发牌模块
4.设计胜负判定算法
六、实验结果
源代码为:
package youxi21dian;
import java.util.Scanner;
import java.util.Random;
public class Dian21 {
/** * @param args */
static int bb[]=new int[52];
static String aa[]=new String[52];
static Scanner s=new Scanner(System.in);
static Random r=new Random();
static int s1=0,s2=0,p=0;
//同意发排,s1,s2表示甲方和乙方的最后点数
public static void main(String[] args) { // TODO Auto-generated method stub for(int i=0;i<52;i++)bb[i]=i%13+1;for(int i=0;i<13;i++) aa[i]="红桃"+(i+1);for(int i=13;i<26;i++) aa[i]="黑桃"+(i%13+1);for(int i=26;i<39;i++) aa[i]="方片"+(i%13+1);for(int i=39;i<52;i++) aa[i]="梅花"+(i%13+1); System.out.println("欢迎使用游戏21点!"); System.out.println("请选择盘点方:0甲方,1 乙方!"); int f=s.nextInt(); if(f==0)System.out.println("您为: 甲方; 对方为: 乙方!"); else System.out.println("您为: 乙方; 对方为: 甲方!"); xipai(); System.out.println("现在开始发牌!"); int j=1,y=1; fapai(j,y); while(j==1||y==1){System.out.println("如果需要发牌请按1!若不需要请按0!"); System.out.print("甲方请选择:"); int a=s.nextInt();j=a; System.out.print(" 乙方请选择:"); int b=s.nextInt();y=b; System.out.println(""); fapai(j,y);
} System.out.println("结果为:"); result(); } //洗牌
public static void xipai(){
int t;String l; for(int m=0;m<1000;m++){ int i=r.nextInt(51);
t=bb[i];bb[i]=bb[51-i];bb[51-i]=t;
l=aa[i];aa[i]=aa[51-i];aa[51-i]=l;
}
}
//发牌
public static void fapai(int j,int y){
}
//结果
public static int result(){
System.out.print("甲方点数为: "+s1); if(j==1){ System.out.print("甲方为: "); System.out.print(aa[p]); System.out.println(" "+"点数为:"+" "+bb[p]); s1=s1+bb[p++]; } else System.out.println("甲方不需要发牌!"); if(y==1){ System.out.print("乙方为: "); System.out.print(aa[p]); System.out.println(" "+"点数为:"+" "+bb[p]); s2=s2+bb[p++]; } else System.out.println("乙方不需要发牌!");
System.out.println(" 乙方点数为: "+s2); if(s1>21&&s2>21){System.out.println("双方点数均超过21点,都被爆掉了! 平局!");return 0;}
if(s1>21&&s2<=21){System.out.println("甲方点数超过21点,被爆掉了! 乙方胜!");return 0;}
if(s2>21&&s1<=21){System.out.println("乙方点数超过21点,被爆掉了!甲方胜!");return 0;}
}
}
结果为:
欢迎使用游戏21点!
请选择盘点方:0甲方,1 乙方!
1
您为: 乙方; 对方为: 甲方!
现在开始发牌!
甲方为: 梅花13 点数为: 13
乙方为: 梅花12 点数为: 12
如果需要发牌请按1!若不需要请按0!
甲方请选择:1
乙方请选择:1
甲方为: 梅花11 点数为: 11
乙方为: 红桃4 点数为: 4
如果需要发牌请按1!若不需要请按0!
甲方请选择:0
乙方请选择:0
甲方不需要发牌!
乙方不需要发牌!
结果为:
甲方点数为: 24 乙方点数为: 16
甲方点数超过21点,被爆掉了! 乙方胜! if(s2>s1){System.out.println("乙方胜!");return 0;}else if(s2==s1){System.out.println("平局!");return 0;}else {System.out.println("甲方胜!");return 0;}
篇三:实训报告书
实训报告书
实训名称: JAVA扫雷小游戏
系 (部):信息工程系
专业班级:
学生姓名:
学号:
指导教师:张民 完成日期:
山东科技大学泰山科技学院
[键入文字]
…
…
……
……
……
…目 录 1 实训目的 ................................................................................................. 1 2 扫雷游戏系统的分析与设计 .............................................................. 1 …
…装
…
……
……
……3
……
…4 …
…
…5 …
订…
……
……
……
…
……
……
…线
……
……
…
……
……
……
2.1 系统功能描述 ............................................................................ 1 2.2 系统模块设计 ............................................................................ 1 主要代码清单....................................................................................... 3 程序运行与测试 ................................................................................ 11 实训总结 ........................................................................................... 112
课程实训报告书
扫雷游戏系统的设计与实现
1 实训目的
随着社会的不断进步,人们所承受的压力不断上升,在游戏层出不穷的时刻,扫雷游戏仍受到不少人的青睐,其本身的性质,决定了人们对它的喜爱程度,不需要特殊的技巧,不需要不断地升级,不需要太多的时间进行初步的熟悉,简简单单却乐趣无穷。
2 扫雷游戏系统的分析与设计
2.1 系统功能描述
(1)该游戏具有计时功能,即扫完全部地雷所花费的时间。
(2)用户可以选择是否有音效。 (3)用户可以自定义级别,还可以输入任意地雷数。
(4)自动保存扫雷排行榜。
2.2 系统模块设计
系统的整体布局为:CardLayout布局,采用菜单、按钮、面板??等组件,菜单项主要有开始,选择级别,自定义,标记,声音,扫雷排行榜,退出,按钮的功能是重新开始游戏(可以选择游戏菜单里的开局,也可以点击企鹅图标重新开始游戏)。
2.3 数据库结构设计
系统结构图
1
系统流程图
3 主要代码清单
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Frame
extends JFrame {
JTextField text;
JLabel nowBomb, setBomb;
int BombNum, BlockNum; // 当前雷数,当前方块数
int rightBomb, restBomb, restBlock; // 找到的地雷数,剩余雷数,剩余方块
2