用JAVA制作小游戏——推箱子(一)

本篇博客是对推箱子游戏首页代码的展示

效果图:

在这里插入图片描述

难点:

在背景图上添加按钮。
由于直接使用add方法,会变成图片一块区域,按钮一块区域,彼此互不重叠,形成的界面效果不太好,因此用了JLayeredPane
附:java 通过JLayeredPane实现背景图上添加其他控件

完整代码:

(代码比较简单,不再做过多的解释,每行基本都有注释,可以根据注释进行理解)

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class game_tui_1 extends JFrame implements ActionListener{
	JButton jb1=new JButton("开始游戏"); 
	JButton jb2=new JButton("地图编辑器");
	public game_tui_1() {
		JLayeredPane layeredPane=new JLayeredPane(); 
		ImageIcon image=new ImageIcon("shiyan4_image/background.png");  //图片路径,根据实际自行修改    
		JLabel jl=new JLabel(image);  
		jl.setBounds(0,0,image.getIconWidth(),image.getIconHeight());//设置jl的位置和大小
		jb1.setBounds(150,350,100,50);//jb1的位置和大小
		jb1.addActionListener(this);//jb1添加监听器
		jb1.setBackground(new Color(140,199,181));//设置jb1按钮的背景
		jb2.setBounds(350,350,100,50);//jb2的位置和大小
		jb2.addActionListener(this);//jb2添加监听器
		jb2.setBackground(new Color(140,199,181));//设置jb2按钮的背景
       //将jl放到最底层。                                    /*层次关系可见下面的注释*/
		layeredPane.add(jl,JLayeredPane.DEFAULT_LAYER);  
       //将jb1,jb2放到高一层的地方  
		layeredPane.add(jb1,JLayeredPane.MODAL_LAYER);  
		layeredPane.add(jb2,JLayeredPane.MODAL_LAYER); 
       //设置窗口属性
		this.setTitle("推箱子");//设置窗口题目
       this.setLayeredPane(layeredPane);//窗口添加layeredPane
       this.setSize(image.getIconWidth(),image.getIconHeight());//窗口大小
       this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);//窗口关闭
       this.setLocationRelativeTo(null); //窗口位置
       this.setResizable(false);//窗口不可最大化
       this.setVisible(true);//窗口可视
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new game_tui_1();
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if(e.getSource()==jb1) {/*new game_tui_2();dispose();*/}
		else {/*new game_tui_3();dispose();*/}
		//由于本篇博客单独讲解推箱子首页,因此对按钮跳转进行了注释处理,后面会有完整代码
	}
}
如有错误
欢迎指出

下一篇:用JAVA制作小游戏——推箱子(二)

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于JAVA推箱子游戏设计软件程序源码+word毕业论文文档. 基于JAVA推箱子游戏系统主要用于实现游戏推箱子功能,提供多种不同难度的关卡。本系统结构如下: (1)初始化模块: 该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用于输出欢迎信息和操 (2)画图模块: 该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。 (3)移动箱子模块: 该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。 (4)移动小人模块: 该模块用于控制小人移动,从而推动箱子到目的地。 (5)功能控制模块: 该模块是几个功能函数的集合,包括屏幕输出功能、指定位置状态判断功能和关卡重置功能。 目 录 摘 要 i Abstract ii 引 言 1 1 系统分析 2 1.1 技术可行性分析 2 1.1.1 可行性目的 2 1.1.2 可行性研究前提 2 1.1.3 算法可行性分析 2 1.1.4 平台选择 6 1.2 需求分析 6 1.2.1 引言 6 1.2.2 游戏需求 6 1.2.3 软硬件需求 9 1.2.4 接口控制 10 1.3 方案论证 10 1.3.1 C++语言的优点 10 1.3.2 Java语言的优点 11 1.3.3 C语言的优点 13 1.3.4 方案选择 14 2 概要设计 16 2.1 游戏设计分析 16 2.1.1 地图文件的引用 18 2.1.2 程序运逻辑 19 2.1.3 绘图 20 2.1.4 显示平台 22 2.2 注意事项 24 2.3 游戏流程图 24 2.4 函数模型 25 3 详细设计 28 3.1 游戏总体结构与代码 28 3.2 选关模块 29 3.3 地图的绘制形成 30 3.4 小人与箱子移动的算法 31 3.5 小人上下移动模块 33 3.6 悔棋模块 34 3.7 音乐控制 35 4 游戏测试 38 4.1 软件测试 38 4.1.1 软件测试简介 38 4.2 测试方法 38 4.3 测试步骤 38 4.4 游戏系统性能分析 41 5 项目经验与总结 42 6 参考文献 44 7 致谢 45 8 外文原文及中文翻译 46 引 言 策略性游戏可以锻炼人的思维能力还能缓解人的压力,使人们暂时忘却生活当中的烦恼,增强人们的逻辑思维能力,游戏的艺术美也吸引着越来越多的玩家和厂商,寓教于乐,在放松人们心情的同时还可以活跃双手。在人类的社会生活当中,游戏占有很大的比重,并且随着社会的发展而不断发展。而且游戏本身具有激发人类潜在行为的特质,是一种能够吸引人们参与其中的活动,其本身具有强烈的吸引力使游戏者卷入其中;再者适当的游戏、合理的时间安排,能够让玩家在娱乐的同时还可以锻炼其反应速度及灵敏程度,亦可让玩家从压力中释放出来。因此游戏逐渐成为人们生活中不可缺少的一部分,游戏产业也正逐步发展成熟。 经典的推箱子游戏是一个来自日本的古老游戏,目的是在训练你的逻辑思考能力。它的玩法也非常简单,在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,控制人物不停的移动将箱子推到目的位置才能顺利的完成任务。难点在于移动的位置,以及箱子到达指定位置的顺序,只有多加思考才能获得游戏的胜利。反复推敲,锻炼了人们的耐性。本次的开发尽量多的设置了关卡数目,增强游戏的耐玩性,同时在画面上有所提高,借鉴了许多达人的经验和技术,引发了我对游戏的热爱,丰富了个人生活,相信推箱子游戏在今后的社会总会越来越引人注目。 1 系统分析 1.1 技术可行性分析 1.1.1 可行性目的 通过推箱子游戏中使用的Java技术,让我能够更加熟练的使用Eclipse。同时了解相关运行环境的配置。将理论知识和实际操作结合起来。达到学以致用的目的。网上资料的查询极大的提高了我的自学能力。希望经过此次设计,锻炼自己的思考,解决问题的能力。对系统开发的流程有更深层次的理解,检验学习成果和实际动手能力,对底层知识有更深的了解。为今后的工作打好基础。 1.1.2 可行性研究前提 基本需求:通过规范的开发流程,采用面向对象的分析设计方法实现游戏美观,易玩,及时等特性。操作性方面主要通过键盘的借口实现,操作键位是上下左右。 主要开发目标:通过此次研究熟练Java的相关知识和技术的应用,界面美化的工作需要同学的帮助,了解团队和合作的重要,熟悉不同领域相关技术

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值