- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章Java游戏设计
第五章 Java游戏:坦克大战
本章目标
封装的实际演练
简单用户界面设计
动画和控制设计
本章简介
在上一章我们学习了面向对象的基础知识,特别是学习了封装这个面向对象设计的核心概念,在本章我们将通过一个有趣的游戏《坦克大战》来学习和掌握封装这一重要的思想。
为了开发这个游戏,我们将从以下几个方面展开:界面设计、绘图、动画设计、键盘控制、角色设计。
5.1 JAVA图形界面设计
问题描述:
游戏总得有个“舞台”,这个“舞台”就是窗体。我们必须掌握简单窗体设计技术,以便为游戏搭建舞台。Java中的java.awt包为我们提供了设计窗体的相关类,其中最关键的是Frame类,使用这个类可以创建窗体。请看以下示例,该示例展示了如何创建一个窗口。
例程5.1:
import java.awt.Color;
import java.awt.Frame;
public class FrameTest {
public static void main(String[] args) {
Frame frame=new Frame(); //创建一个窗体对象
frame.setTitle(Frame); //设置窗体标题
frame.setSize(400,300); //设置窗体大小
frame.setLocation(50, 50); //设置窗体左上角坐标
frame.setBackground(Color.GREEN); //设置窗体背景颜色为绿色
frame.setVisible(true); //显示窗体
}
}
程序运行结果:
对于这个程序,参看其中的注释不难理解。但是一旦运行这个程序,你会发现这个窗体无法关闭,而且这样设计也不符合以后我们游戏设计的要求。我们先搭建一个框架,以供以后游戏开发的使用。这个框架是继承自Frame,将窗体的各种属性内置于这个窗体子类之中,并且解决了窗体关闭问题。
示例5.2
import java.awt.Color;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
//游戏窗体继承自窗体类
public class Frame1 extends Frame {
public void launch(){
this.setSize(800,600); //设计游戏窗体各种属性
this.setLocation(50,50);
this.setBackground(Color.GREEN);
this.setResizable(false); //禁止改变窗体大小
this.addWindowListener(new WindowAdapter(){ //关闭窗体
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setVisible(true);
}
public static void main(String[] args) {
Frame1 frame=new Frame1();
frame.launch();
}
}
程序中的黑体部分展示了关闭窗体的代码,这里使用的是窗体的监听器WindowAdapter来处理窗体关闭。对这些不必深究,我们关注的焦点是为游戏搭建一个框架和后面非常重要的封装的应用。
以上程序就是我们游戏的基本框架,以后的设计都在这个基础上扩展,请您一定要动手。
5.2 JAVA绘图
问题描述:
绘图对游戏的重要性不言而喻,我们将学习如何绘制各种图形和图片。Java提供了一套功能丰富的类,可以帮助我们很容易的绘制各种图形。在这里我们主要学习Graphics2D这个这个图形核心引擎,这个类在绘制矢量图和位图方面的全面性令人难以置信。
我们来看下面的例子:
例程5.3:
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Frame1 extends Frame {
public final static int WIDTH=800;
public final static int HEIGHT=600;
文档评论(0)