扫雷游戏代码.docx

扫雷游戏代码.docx
扫雷游戏代码.docx

/*block.h*/

#ifndef BLOCK_H_

#define BLOCK_H_

#include

class QWidget;

class Block: public QLabel

{

Q_OBJECT

public :

explicit Block( bool mine_flag, QWidget* parent= 0); void

set_number( int number);

void turn_over();

bool is_mine() const ; bool is_turn_over() const ;

signals :

void turn_over( bool is_mine);

protected :

void mousePressEvent( QMouseEven*t event);

private :

bool mine_flag_;

bool mark_flag_;

bool turn_over_flag_; int number_;

};

#endif #include "block.h"

#include

#include

#include

#include

Block::Block( bool mine_flag, QWidget* parent)

: QLabel(parent)

{ mine_flag_=mine_flag; mark_flag_= false ; turn_over_flag_= false ; number_=-1;

setPixmap( QPixmap( ":/images/normal.png" ));

}

void Block::set_number( int number)

{ number_=number;

}

void Block::turn_over()

{

if (!turn_over_flag_){ turn_over_flag_= true ; if (mine_flag_)

setPixmap( QPixmap( ":/images/mine.png" )); else

setPixmap( QPixmap( ":/images/mine_" +QString ( "%1").arg(number_) +".png" ));

update();

}

}

bool Block::is_mine() const

{

return mine_flag_;

}

bool Block::is_turn_over() const

{

return turn_over_flag_;

}

/* 鼠标事件的实现*/

void Block::mousePressEvent( QMouseEven*t event)

{

if (event->button()== Qt::LeftButton){

if (!turn_over_flag_&&!mark_flag_){ turn_over_flag_= true ; if

(mine_flag_== true ){

setPixmap( QPixmap( ":/images/mine.png" )); update();

emit turn_over( true ); }else {

setPixmap( QPixmap( ":/images/mine_" +QString ( "%1").arg(number_) +".png" ));

update();

emit turn_over( false );

}

}else if (event->button()== Qt::RightButton){ if (!turn_over_flag_){ if

(!mark_flag_){ mark_flag_= true ;

setPixmap( QPixmap( ":/images/flag.png" )); }else {

mark_flag_= false ;

setPixmap( QPixmap( ":/images/normal.png" )); } update();

}

}

QLabel::mousePressEvent(event);

}

#ifndef BLOCK_AREA_H_

#define BLOCK_AREA_H_

}

#include "block.h"

#include class QEvent;

class QGridLayout ;

class QObject ;

class BlockArea: public QWidget

{

Q_OBJECT

public :

BlockArea( int row, int column, int mine_number,QWidget* parent= 0);

void set_block_area( int row, int column, int mine_number,int init_flag= false );

signals :

void game_over(bool is_win);

protected :

bool eventFilter( QObject * watched, QEvent* event);

private slots :

void slot_turn_over(

bool is_mine);

private

int calculate_mines( int x, int y) const ; // 璁$畻浠 ,y

}

涓轰腑蹇幂殑涔濆 镙煎唴镄勯浄鏁 void try_to_turn_over_more_blocks(int x,int y); private :

QGridLayout * mainLayout;

int row_;

int column_;

int total_block_number_;

int total_mine_number_;

int turn_over_block_number_;

bool game_over_flag_;

};

#endif /*block_area.h*/

#include "block_area.h"

#include

#include

#include

#include

#include

#include

#include

#include

#include

/* 雷的随机布置 */ ptrdiff_t random(ptrdiff_t i)

{

return qrand()%i;

}

ptrdiff_t (*p_random)(ptrdiff_t)=random;

BlockArea::BlockArea( int row, int column, int

parent)

: QWidget(parent)

{ set_block_area(row,column,mine_number, true );

mine_number,QWidget*

void BlockArea::set_block_area( int row, int column, int mine_number,int init_flag) {

if (!init_flag){

for (int i= 0;i

for (int j= 0;j

delete static_cast

(mainLayout->itemAtPosition(i,j)->widget());

delete mainLayout;

}

row_=row;

column_=column; total_block_number_=row_*column_;

total_mine_number_=mine_number; turn_over_block_number_= 0;

game_over_flag_= false ;

bool mine_flag[total_block_number_];

for (int i= 0;i

mine_flag[i]= true ;

for (int i=total_mine_number_;i

QTime time;

time= QTime::currentTime(); qsrand(time.msec()+time.second()* 1000); std::random_shuffle(mine_flag,mine_flag+total_block_number_,p _random);

mainLayout= new QGridLayout ( this );

for (int i= 0;i

for (int j= 0;jaddWidget( new Block(mine_flag[i*column_+j]),i,j);

for (int i= 0;i

for (int j= 0;j

Block* current_block= static_cast

(mainLayout->itemAtPosition(i,j)->wi dget());

current_block->set_number(calculate_mines(i,j));

connect(current_block, SIGNAL(turn_over( bool )), this , SLOT(slot_ turn_over( bool )));

current_block->installEventFilter(this );

}

Java语言 扫雷游戏完整源代码

import javax.swing.ImageIcon; public class Block { String name; //名字,比如"雷"或数字int aroundMineNumber; //周围雷的数目 ImageIcon mineIcon; //雷的图标 boolean isMine=false; //是否是雷 boolean isMark=false; //是否被标记 boolean isOpen=false; //是否被挖开 public void setName(String name) { https://www.360docs.net/doc/b412209582.html,=name; } public void setAroundMineNumber(int n) { aroundMineNumber=n; } public int getAroundMineNumber() { return aroundMineNumber; } public String getName() { return name; } public boolean isMine() { return isMine; } public void setIsMine(boolean b) { isMine=b; } public void setMineIcon(ImageIcon icon){ mineIcon=icon; } public ImageIcon getMineicon(){ return mineIcon; }

public boolean getIsOpen() { return isOpen; } public void setIsOpen(boolean p) { isOpen=p; } public boolean getIsMark() { return isMark; } public void setIsMark(boolean m) { isMark=m; } } import java.util.*; import javax.swing.*; public class LayMines{ ImageIcon mineIcon; LayMines() { mineIcon=new ImageIcon("mine.gif"); } public void layMinesForBlock(Block block[][],int mineCount){ int row=block.length; int column=block[0].length; LinkedList list=new LinkedList(); for(int i=0;i0){ int size=list.size(); // list返回节点的个数 int randomIndex=(int)(Math.random()*size);

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扫雷游戏源代码

import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane(); setSize(297,377); this.setBounds(400, 100, 400, 500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); timer =new Timer(1000,(ActionListener) this); a = new int[row+2][col+2]; initGUI(); } public void initGUI(){ p3=new JPanel();

扫雷游戏设计代码(VB完善版)

扫雷游戏VB设计实现最终界面如下:

显然只需完成三个窗体的设计即可,具体设计界面和代码如下: 一、主窗体(form10)设计界面:

主窗体(form10)的代码: Dim d(11, 11) As Integer Dim k As Integer Dim v(100) As Integer '定义全局变量' Private Sub Command1_Click(Index As Integer) Timer1.Enabled = True '当点击任意一个命令按钮时(即开始游戏),则启动计时器' i = Index \ 10 + 1 j = Index Mod 10 + 1 '将二维数组的元素与命令按钮一一对应' If d(i, j) = 1 Then '判断是否点到地雷' Timer1.Enabled = False '关闭计时器,游戏结束' For i = 1 To 10 For j = 1 To 10 n = 10 * (i - 1) m = j - 1 If d(i, j) = 1 Then

Command1.Item(m + n).Picture = LoadPicture(App.Path & "\2.jpg") '在按钮上显示地雷图片' End If Form1.Show '弹出子窗体1(判断输赢)' Next j Next i Else If v(Index) = Index + 1 Then '判断是否插上红旗或是问号图片' Command1.Item(Index).Picture = LoadPicture() '清除图片' Command1.Item(Index).Caption = f(i, j) '调用函数,显示周围地雷数' Command1.Item(Index).Enabled = False '将按钮设为不可用' Label7.Caption = Val(Label7.Caption) + 1 v(Index) = 0 End If h = s(i, j) '调用函数,显示周围的情况(边界)' For Y = 0 To 99 If v(Y) = Y + 1 Then Command1.Item(Y).Enabled = True '如果是按钮插上了红旗则将按钮设置为可用' End If Next Y End If

扫雷小游戏课程设计

西安科技大学 软件工程课程设计报告 题目:扫雷游戏开发 班级:计科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 需实现的主要功能 用户可以自定义级别并且可以任意输入雷数; 具有计时功能,即显示用户完成移动盘子所花费的时间。

C语言扫雷源代码

C语言扫雷源代码.txt如果背叛是一种勇气,那么接受背叛则需要更大的勇气。爱情是块砖, 婚姻是座山。砖不在多,有一块就灵;山不在高,守一生就行。 #include #include #include #include /*鼠标信息宏定义*/ #define WAITING 0xff00 #define LEFTPRESS 0xff01 #define LEFTCLICK 0xff10 #define LEFTDRAG 0xff19 #define RIGHTPRESS 0xff02 #define RIGHTCLICK 0xff20 #define RIGHTDRAG 0xff2a #define MIDDLEPRESS 0xff04 #define MIDDLECLICK 0xff40 #define MIDDLEDRAG 0xff4c #define MOUSEMOVE 0xff08 struct { int num;/*格子当前处于什么状态,1有雷,0已经显示过数字或者空白格子*/ int roundnum;/*统计格子周围有多少雷*/ int flag;/*右键按下显示红旗的标志,0没有红旗标志,1有红旗标志*/ }Mine[10][10]; int gameAGAIN=0;/*是否重来的变量*/ int gamePLAY=0;/*是否是第一次玩游戏的标志*/ int mineNUM;/*统计处理过的格子数*/ char randmineNUM[3];/*显示数字的字符串*/ int Keystate; int MouseExist; int MouseButton; int MouseX; int MouseY; int up[16][16],down[16][16],mouse_draw[16][16],pixel_save[16][16]; void MouseMath()/*计算鼠标的样子*/ {int i,j,jj,k; long UpNum[16]={ 0x3fff,0x1fff,0x0fff,0x07ff, 0x03ff,0x01ff,0x00ff,0x007f, 0x003f,0x00ff,0x01ff,0x10ff,

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

中原工学院信息商务学院 课程设计报告 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、自动保存扫雷英雄榜。

扫雷游戏Java源代码详解

扫雷游戏Java源代码 import java.awt.BorderLayout; import java.awt.Container; import java.awt.Font; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.Timer; public class ScanLei1 extends JFrame implements ActionListener{ private static final long serialVersionUID = 1L; private Container contentPane; private JButton btn; private JButton[] btns; private JLabel b1; private JLabel b2; private JLabel b3; private Timer timer; private int row=9; private int col=9; private int bon=10; private int[][] a; private int b; private int[] a1; private JPanel p,p1,p2,p3; public ScanLei1(String title){ super(title); contentPane=getContentPane();

扫雷游戏的设计与开发1

扫雷游戏的设计与开发 摘要 本论文研究的是以Visual Basic 6.0为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为最要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作,而清除未靠近地雷区方块由于引进了“递归”这个概念而使其简单化。 本次设计只是完成了扫雷游戏的基本功能,在细节方面仍有待以后完善。 关键词:扫雷;Visual Basic 6.0;事件;递归

The Design and Development of Mine Game Abstract What my thesis research for is basic on the develop environment of Visual Basic 6.0 , design and develop a mine game,its function is similar to the mine games of the Windows Operating System .The thesis has introduced the layout of mined areas and the method of how to create the mines at random. It use vairies of components in Visual Basic 6.0 and the combination of some simple calculations; the thesis lays emphasis on introducing the processing of each event in the game. Among these events ,the mouse event and the event of clearance of the area which isn’t close to the mine field are much more important.The theory of mouse event is that the intention of user is learned by the information sent out by the mouse and then the program runs according to the information .The other event is simplified by the introduction of the concept of recursion. This design has been completed the basic function of mine game. The details still need to be improved. Key words: Mine game, Visual Basic 6.0, Affairs, Recursion

简版扫雷代码

#include #include #include #define MAX 100 //最大范围为100x100 struct place{ int show;//显示状态(-1为不显示,0为显示@,1为显示status ) char status;//身份(数字为周围8位地雷数,*为地雷,#号为边界标志) }; /*显示函数*/ void print_all(place mine_area[][MAX+2]){ for(int i=0;i<=MAX+1;i++){ for(int j=0;j<=MAX+1;j++){ if(mine_area[i][j].status<=8) printf("%d",mine_area[i][j].status+48); else if(mine_area[i][j].status=='#') printf("#"); else if(mine_area[i][j].status=='*') printf("*"); printf(":%d ",mine_area[i][j].show); } printf("\n"); } } void print_all(place mine_area[][MAX+2],int length,int width){ for(int i=0;i

扫雷的课程设计报告

西安文理学院信息工程学院课程设计报告 设计名称:数据结构课程设计 设计题目:实现一个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

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

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

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

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

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

扫雷算法+c#实现代码

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace MySweep { public class MapDraw { #region 私有字段 //定义扫雷地图的左上角坐标 private Point _leftTop = new Point(30, 30); //定义每个格子的宽度和高度 private int _rowHeight = 23; private int _colWidth = 23; //绘制地图背景 private Bitmap _bmgBg = new Bitmap("Images/背景.jpg"); //绘制地图格子 private Bitmap _bmgPiece = new Bitmap("Images/8.jpg"); #endregion #region 公有屬性 public Point _LeftTop { get { return _leftTop; } set { _leftTop = value; } } public int _RowHeight { get { return _rowHeight; } set { _rowHeight = value; } } public int _ColWidth { get { return _colWidth; } set { _colWidth = value; } } #endregion //定义类成员方法绘制扫雷地图 public void DrawMap(Graphics g)

VB做扫雷游戏

编号 南京航空航天大学 毕业论文 题目用VB实现一个简单的游戏 学生姓名 学号 学院 专业 班级 指导教师

南京航空航天大学 本科毕业设计(论文)诚信承诺书本人郑重声明:所呈交的毕业设计(论文)(题目:)是本人在导师的指导下独立进行研究所取得的成果。尽本人所知,除了毕业设计(论文)中特别加以标注引用的内容外,本毕业设计(论文)不包含任何其他个人或集体已经发表或撰写的成果作品。 作者签名:年月日 (学号):

用VB实现一个简单的游戏 摘要 当前,随着计算机应用及网络的的深入普及,越来越多的政府部门、厂矿企业、学校等单位及个人都拥有了自己的计算机,计算机不仅在工作方面给人们以很大的帮助,还给人们带来了多种的娱乐享受.,操作系统自带的游戏也起到了很大的娱乐作用,而且它的开发成本小,所以小游戏的开发在这种形势下就应运而生,它的开发主要采用VC++ ,VB 等编程语言. 本设计采用VB编写,VB一直以来被认为有以下优缺点:优点是上手快、开发效率高;缺点是能力有限,运行效率低.这正是有些软件把VB做为首选语言,而有些软件肯定不会用VB做的原因.而很多VC,DELPHI的程序员都认为VB里搞开发不自由.的确,简单和功能强大这两者本身就是一对矛盾. 扫雷游戏是操作系统中的一个主要的益智类游戏. 用户对鼠标进行操作,单击鼠标左键为踩雷,单击鼠标左键在标记,疑问,空白三种状态中循环,同时单击鼠标左右键为踩单击点在内的周围九格内所有没有标记为已标记的所有格子.同时程序从你单击第一次时开始计时,到胜利或引爆地雷终结.结束后单击开始按钮重新开始游戏.这款游戏实现了开发人类大脑思维的目的. 关键词VB,扫雷游戏

C语言扫雷游戏源代码

/* 模拟扫雷游戏 */ #include #include #include #include #include #include #include union REGS regs; int size=15;/*用于表示每个方块的大小(正方形的边长)*/ int pix,piy=50;/*pix,piy是矩阵的偏移量*/ char b[2]="1";/*用于显示方格周围的雷的个数*/ int pan[30][16];/*用于记录盘面的情况:0:没有、9:有雷、1~8:周围雷的个数*/ int pan1[30][16];/*pan1[][]纪录当前的挖雷情况,0:没有操作、1:打开了、2:标记了*/ int tt;/*纪录时间参数*/ int Eflags;/*用于标记鼠标按钮的有效性,0:有效,1:无效,2:这是鼠标的任意键等于重新开始*/ int Msinit(); void Draw(int x,int y,int sizex,int sizey); void Facedraw(int x,int y,int sizel,int k); void Dead(int sizel,int x,int y); void Setmouse(int xmax,int ymax,int x,int y); int Msread(int *xp,int *yp,int *bup,struct time t1,int k); void Draw1(int x,int y); int Open(int x,int y); float Random(); void Have(int sum,int x,int y,int xx,int yy); void Help(); void Coread(); void Ddraw2(int x,int y); /*下面是主函数*/ main() { int mode=VGAHI,devices=VGA;/*图形模式初始化的变量*/ char ams; /*鼠标操作中的标志变量*/ int xms,yms,bms; /*鼠标的状态变量*/ int i,j,k,k1=0; /*i,j,k是循环变量*/

基于Java的扫雷课程设计(DOC)

《算法设计与分析》课程设计 扫雷游戏设计 班级计科1003班 姓名 指导教师 开发时间2012.12.18 湖南涉外经济学院信息科学与工程学院 2012年12月

摘要 扫雷游戏是Windows操作系统自带的一个小游戏,过去的几年里Windows 操作系统历经数次换代,变得越来越庞大、复杂,但这个可爱的小游戏在任何版本的Windows操作系统里去地依然保持着原貌。但几乎每个电脑使用者都接触过它,并且深爱着这款小游戏。 游戏上手极其简单,但是要熟练地掌握其中的操作及找出雷的技巧,难度却不低。作为家喻户晓老少皆宜的大众游戏,其普及程度可以说是史上任何一款游戏都无法相比的。 游戏的操作方面主要以鼠标为主,当鼠标指针对准未翻开的方块按下左键时即表示翻开方块,当鼠标指针对准未翻开的方块按下右键时即表示标示或疑示地雷,反复按下右键则方块会以未标示→标示→疑似三者关系不断循环。游戏者可以通过地雷区内的数字提示了解以数字为中心的其周边八个方格内所含的地雷数,假若翻开的方块显示数字“3”,则表示以其为中心的周边方块内藏有3个地雷。当按下的方块不是地雷,且周边八个方块也都没有地雷时,方块会以被翻开方块的八个方向将空白方块翻开。。 扫雷游戏是比较经典的一款小游戏,实现它的方法很多,可以用很多不同算法和语言实现,如C,C++,VB,Jave,C#等。本论文研究的是以java为开发环境,设计并开发一款扫雷游戏,其功能类似于Windows操作系统自带的扫雷游戏。论文首先介绍了制作游戏的整体思路及整个游戏设计的流程规划,然后介绍了雷区的布置及地雷随机产生的实现方法;重点介绍了在游戏过程中各事件的处理,其中又以鼠标事件和清除未靠近地雷区方块这两方面最为重要,鼠标事件是利用鼠标所发出的信息了解使用者的意图,进而做出相对应的动作。 关键词:java;扫雷;课程设计;

c语言扫雷程序代码

#include #include #include #include #define Map_list 6 #define Map_line 6 void map_printf(int x,int y,int b[][Map_list]) { int i,j; for(i=0;i0&&b[i][j]<9) printf(" %d",b[i][j]); } printf("\n"); } } void Move(int x,int y) { HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); COORD pos= {x, y}; SetConsoleCursorPosition(hOut, pos); } int kb_cursor() { int a=getch(); char input[2]; if(a<0) { input[0]=a; input[1]=getch(); } else {

input[1]=a; } return input[1]; } void HideCursor() { CONSOLE_CURSOR_INFO cursor_info = {1, 0}; SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info); } void printf_0(int b[][Map_list],int x,int y) { int i,j,n; if(x==0&&y==0) { n=0; for(i=0;i<2;i++) for(j=0;j<2;j++) if(b[x+i][y+j]==11) n++; if(n==0) { for(i=0;i<2;i++) for(j=0;j<2;j++) { if(b[x+i][x+j]==10) { b[x+i][y+j]=0; printf_0(b,x+i,y+j); } } } else b[x][y]=n; } else if(x==0&&y0) { n=0; for(i=0;i<2;i++) for(j=-1;j<2;j++) if(b[x+i][y+j]==11) n++; if(n!=0) b[x][y]=n; else for(i=0;i<2;i++)

相关文档
最新文档