【JAVA程序设计】简易扫雷小游戏+实验报告内容节选(糊弄版)

实验内容

采用java技术开发出一个简单的扫雷游戏,游戏分为初级、中级和高级三个级别,游戏启动后单击游戏菜单可以选择游戏难度,在游戏过程中单机滚轮可以随时切换难度。选择级别后将出现相应级别的扫雷区域,同时启动计时器。单击方块,若方块下有雷,用户便输了这一局,若所揭方块下没有雷,则显示一个数字,该数字代表此方块周围的8个方块中共有多少颗雷。如果用户认为某个方块下埋着雷,单击右键可以在方块上标识一个用户认为是雷的图标,即给出一个扫雷标记。用户每标记出一个扫雷标记(无论用户的标记是否正确),窗口左上角的雷数计数器将会减少一个。

可行性分析

目前。随着计算机网络的发展,游戏已经成为现在人生活的一部分,人们以不同的方式通过网络来娱乐,休闲。以计算机技术和网络技术为核心的现代网络技术已经在现实生活中得到广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为了多数人群的休闲方式,也为多数人所喜好。扫雷作为最常见的小游戏之一,其具有简单操作,休闲益智的特点。本程序使用能跨平台使用的Java语言进行编写,其具有跨平台性强,编写简单等特点,保证的游戏的可行性。

代码详细设计

游戏窗口绘制

进行游戏窗口的绘制以及鼠标监听

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.lang.ProcessBuilder.Redirect;
import javax.swing.JFrame;

public class GameMain extends JFrame{
   //监听鼠标键盘事件	
	int wigth = 2 * Tool.OFFSET + Tool.MAP_W * Tool.SQUARE_LENGTH;
	int height = 4 * Tool.OFFSET + Tool.MAP_H * Tool.SQUARE_LENGTH;	
	Image offScreenImage = null;	
	MapBottom mapBottom = new MapBottom();
	MapTop mapTop = new MapTop();	
	Gamelevel gamelevel = new Gamelevel();
	boolean begin=false;	
	void windows(){
   //创建窗口		
		Tool.START_TIME = System.currentTimeMillis();
		this.setVisible(true);
		if(Tool.state==3){
   
            this.setSize(500,500);
        }else {
   
            this.setSize(wigth,height);
        }		
		this.setLocationRelativeTo(null);
		this.setTitle("扫雷游戏");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		//鼠标事件
		this.addMouseListener(new MouseAdapter() {
   
			public void mouseClicked(MouseEvent e) {
   
				super.mouseClicked(e);				
				switch (Tool.state){
   
                case 0 :		
                	if(e.getButton()==1) {
   
                		Tool.Mouse_X = e.getX();
                		Tool.Mouse_Y = e.getY();
                		Tool.Left = true;					
                	}
                	if(e.getButton()==3) {
   
                		Tool.Mouse_X = e.getX();
                		Tool.Mouse_Y = e.getY();
                		Tool.Right = true;
                	}
                case 1:
                case 2:
                	if(e.getButton()==1){
   
                        if(e.getX()>Tool.OFFSET + Tool.SQUARE_LENGTH*(Tool.MAP_W/2)
                                && e.getX()<Tool.OFFSET + Tool.SQUARE_LENGTH*(Tool.MAP_W/2) + Tool.SQUARE_LENGTH
                                && e.getY()>Tool.OFFSET
                                && e.getY()<Tool.OFFSET+Tool.SQUARE_LENGTH){
   
                            mapBottom.reGame();
                            mapTop.reGame();
                            Tool.FLAG_NUM=0;
                            Tool.START_TIME=System.currentTimeMillis();
                            Tool.state=0;
                        }
                    }
                	if(e.getButton()==2){
   
                        Tool.state=3;
                        begin=true;
                    }
                	
                    break;
                case 3:
                    if(e.getButton()==1){
   
                    Tool.Mouse_X = e.getX();
                    Tool.Mouse_Y = e.getY();
                    begin = gamelevel.hard();
                    }
                default:
            }			}		});	
		
		while (true) {
   
			repaint();
			begin();
			try {
   
				Thread.sleep(40);
			} catch (InterruptedException e) {
   
				e.printStackTrace();
			}		}	}	
	void begin(){
   
        if(begin){
   
            begin=false;
            gamelevel.hard(Tool.level);
            dispose();
            GameMain gameMain = new GameMain();
            Tool.START_TIME = System.currentTimeMillis();
            Tool.FLAG_NUM=0;
            mapBottom.reGame();
            mapTop.reGame();
            gameMain.windows();
        }    }	
	public void paint(Graphics g) {
   //循环方式建立网格		
		if(Tool.state==3){
   
            g.setColor(Color.white);
            g.fillRect(0,0,500,500);
            gamelevel.paintSelf(g);
        }else {
   
        	offScreenImage = this.createImage(wigth, height);
        	Graphics gImage = offScreenImage.getGraphics();
        	mapBottom.paintself(gImage);
        	mapTop.paintself(gImage);
        	g.drawImage(offScreenImage, 0, 0, null);
        }	}
	public static void main(String[] args) {
   
		GameMain gameMain = new GameMain();
		gameMain.windows();
	}}

游戏组件设计

绘制游戏相关组件,底层网格设计,获取网格坐标。显示剩余雷数及所用时间。双击中心笑脸可实现游戏重置。点击鼠标滚轮可重新选择游戏难度。游戏失败后,左右方格自动翻开,笑脸变为哭脸。点击后开始新游戏。

import java.awt.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值