1编译环境与技术
1.1 JAVA
JAVA语言,前身是OAK语言。由sun公司推广。具有“一次编写,到处执行”的特点[1]。优点在于面对对象,语言可读性强。
1.2 Eclipse
用于编写JAVA的IDE。本身具有开源性,可以添加各种插件,方便于编写程序。[8]
2 课题的提出与设计
参考的游戏: minecraft。
《我的世界》是一款风靡全球的高自由度沙盒游戏,由瑞典Mojang AB和4J Studios开发,于2009年5月13日发行。2014年11月6日,该游戏被微软收购。2016年网易取得了该游戏在中国的代理权。
3 基础框架设计
3.1 图形化界面技术
3.1.1 JAVA SWING技术
通过JAVA SWING扩展组件,可以实现对屏幕进行绘制,并且通过与组件的互动来控制程序数据。
3.1.2 GUI设计
GUI模块大体分为3个类。组件(Component)、容器(Container)与布局管理器(LayoutManager)。[4]
组件是最基本的组成部位,可以以图形化的方式与用户交互。常用的有Button,Canvas等。本软件基本用的是Canvas。
容器主要负责容纳其他组件与容器。
布局管理器处理容器中的各个组件之间的位置关系。常用有边界布局(BorderLayout)、卡片布局(CardLayout)等。[5]
本软件采用一个容器Jfram存放组件Canvas。一个Canvas用于绘制主界面。一个用于绘制背包界面。两个Canvas用CardLayout布局管理器控制。通过键盘监听器控制布局管理器。从而实现界面的切换。
Cardlayout布局管理器能让多个组件共享一个空间,就像卡片一样叠在一起。通过自带的方法能够切换组件显示状态。[12]
一个Canvas的好处是结构明了,用户只用在一个组件上面处理数据,各个组件不会重叠,不会产生冲突。
主界面演示
3.1.3 Canvas
Canvas是一个用来绘制图像的组件。使用的时候创建一个Graphics对象获取它的图形上下文,并且覆写父类的paintComponent()方法,就可以在里面进行绘制工作。
每一次绘制都有覆盖顺序,一般是背景层、前景层、人物层、UI层。背景层的优先级最低,被别的层覆盖。
3.1.4 Graphics对象的基本绘制函数
drawImage():用于调用图像文件并绘制到组件上。使用的时候需要读取本地图像文件。并且声明异常。
drawSrting():用于绘制直线,简单的绘制函数。用于绘制UI的边界。
3.2 多线程
3.2.1 基本概念
早期的计算机一般都是单线程。也就是执行完一个计算进行下一个。这种计算就是单线程。[11]进行简单重复的计算可以使用这种。但是软件里面要同时计算人物与地图每一块的状态等,所以需要多个线程进行同时计算。[6]线程因为共享相同的地址空间并共同构成一个大的进程,所以同一进程中的线程间的通讯是非常简单而有效的,上下文切换非常快并且是整个大程序的一部分切换。[3]
3.2.2 基本实现方法
继承Thread类。
实现Runalbe接口。
由于Java可以实现多个接口但是只能单继承,继承方法扩展性不强。故用第二种方法编写类。[10]
3.2.3 基本线程
地图线程,记录各个物体的状态。 JAVA Swing的图形化界面开发+源代码(2):http://www.751com.cn/jisuanji/lunwen_33368.html