- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《 Java 游戏程序设计教程》实验任务书
实验一 弹跳小球游戏设计
一 实验目的
通过设计和制作弹跳小球游戏来了解游戏程序的基本结构, 理解游戏循环和
双缓冲机制的基本原理,并掌握游戏运行框架的设计方法。
二 实验内容
学习和了解游戏基本框架的设计方法(参考教材第 3 章内容及相关代码),
在此基础上设计弹跳小球游戏, 实现小球在程序窗口边界反弹的效果。 要求实现
如下功能:
创建游戏程序主窗体( GameFrame)和绘图面板( GamePanel);
设计游戏循环,并通过线程来控制游戏运行的帧速率;
在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周移动,并在边界处反弹。
在游戏绘制部分实现小球的图形绘制, 并通过双缓冲机制消除屏幕闪烁。
实验步骤
阅读实验要求,设计程序整体结构及各个类的功能。
启动 java 开发环境,新建游戏项目。
根据实验内容要求编写代码,以实现相应的功能。
4.书写实验报告,详细阐述代码编写的基本思想及主要过程。
四 课时分配
2 课时
提交文档
实验报告、源程序代码
创建游戏程序主窗体( GameFrame)和绘图面板( GamePanel);
程序主窗体
public GameFrame() {
Frame app = new Frame( GameFrame );
app.addWindowListener( new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System. exit (0);
}
});
app.setLocation(100, 100);
gamePanel drawB =
app.add(drawB, BorderLayout.
new gamePanel();
CENTER);
app.pack();
app.setVisible(
drawB.gameStart();
true );
}
绘图面板
public
gamePanel() {
width
=500;
heigth
=500;
setBackground(Color.
pink
);
setPreferredSize(
new
Dimension(
width , heigth ));
myball
=new ball(
this
);
mypad = new pad( this );
this
.setFocusable(
true );
this
.requestFocus();
this
.addKeyListener(
this
);
}
设计游戏循环,并通过线程来控制游戏运行的帧速率;
线程
public void gameStart(){
gamethread = new Thread( this );
gamethread .start();
}
游戏循环,控制游戏运行的帧速度
public void run() {
long t1,t2,dt,sleepTime;
long period=1000/ FPS;
t1=System. nanoTime ();
// 计算每一次循环需要的执行时间,单位毫秒 // 保存游戏循环执行前的系统时间,单位纳秒
while ( true ){
gameUpdate();
gameRender();
gamePaint();
t2= System. nanoTime () ; // 游戏循环执行后的系统时间,单位纳秒
dt=(t2-t1)/1000000L; // 本次循环实际花费的时间,并转换为毫秒
sleepTime = period - dt; // 计算本次循环剩余的时间,单位毫秒
if (sleepTime=0) // 防止 sleepTime 值为负数
sleepTime=2;
try {
Thread. sleep (sleepTime); // 让线程休眠,由 sleepTime 值决定
} catch (InterruptedException ex) { }
t1 = System.
nanoTime ();
// 重新获取当前系统时间
}
}
在游戏逻辑更新部分实现小球的运动逻辑, 使得小球可以朝着窗口四周移动,并在边界处反弹。
public
void move() {
location . x +=
location . y +=
if (( location
dx = - dx ;
dx ; dy ; . x
bound
. x -
diameter
)||(
location
. x 0)) {
}
if
(( location
. y 0)
文档评论(0)