《Java游戏程序设计教程》实验任务书
《Java游戏程序设计教程》实验任务书
实验一 弹跳小球游戏设计
一 实验目的
通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机制的基本原理,并掌握游戏运行框架的设计方法。
二 实验内容
学习和了解游戏基本框架的设计方法(参考教材第3章内容及相关代码),在此基础上设计弹跳小球游戏,实现小球在程序窗口边界反弹的效果。要求实现如下功能:
1. 创建游戏程序主窗体(GameFrame)和绘图面板(GamePanel);
2. 设计游戏循环,并通过线程来控制游戏运行的帧速率;
3. 在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周移动,并在边界处反弹。
4. 在游戏绘制部分实现小球的图形绘制,并通过双缓冲机制消除屏幕闪烁。
三 实验步骤
1. 阅读实验要求,设计程序整体结构及各个类的功能。
2. 启动java开发环境,新建游戏项目。
3. 根据实验内容要求编写代码,以实现相应的功能。
4.书写实验报告,详细阐述代码编写的基本思想及主要过程。
四 课时分配
2课时
五 提交文档
实验报告、源程序代码
1. 创建游戏程序主窗体(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 = new gamePanel();
app.add(drawB, BorderLayout.CENTER);
app.pack();
app.setVisible(true);
drawB.gameStart();
}
//绘图面板
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);
}
2. 设计游戏循环,并通过线程来控制游戏运行的帧速率;
//线程
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(); //重新获取当前系统时间
}
}
3. 在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周移动,并在边界处反弹。
public void move() {
location.x += dx;
location.y += dy;
if ((location.x > bound.x - diameter) || (location.x < 0)) { dx = -dx;
}
if ((location.y < 0) || (location.y > bound.y-diameter)) { dy = -dy;
}
}
4. 在游戏绘制部分实现小球的图形绘制,并通过双缓冲机制消除屏幕闪烁。 //消除屏幕闪烁
public void gamePaint() {
Graphics g;
try {
g = this.getGraphics();
if (g != null && im != null) {
g.drawImage(im, 0, 0, null);
}
g.dispose();
} catch (Exception e) {
}
}
//小球图形绘制
public void gameRender() {
if (im == null) {
im = createImage(width, heigth);
if (im == null) {
System.out.println("im is null");
} else {
dbg = im.getGraphics();
}
}
dbg.setColor(Color.pink);
dbg.fillRect(0, 0, width, heigth);
myball.draw(dbg);
mypad.draw(dbg);
}
实验二 贪食蛇游戏设计
一 实验目的
通过设计和制作贪食蛇游戏来理解游戏程序的运行机制,同时学习运用java的事件处理机制来改变游戏状态和传递控制命令。
二 实验内容
学习和了解贪食蛇游戏的基本设计思想(参考教材4.4节内容及相关代码),在此基础上进行改进,要求实现如下功能:
1.当窗口最小化或被遮挡时暂停游戏;
2.改变蛇的运动速度,按+号键加速,按-号键减速;
3.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动;
4.能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不消失);
5.添加游戏结束规则(比如蛇头碰到边界或蛇身时结束),并能重新开始游戏。 要求至少实现3个功能。还可以根据自己的创意,加入更多功能。
三 实验步骤
1. 启动java开发环境,运行示例程序。
2. 阅读示例程序,分析程序整体结构及各个类的功能。
3. 根据实验内容要求修改或添加代码,以实现相应的功能。
4.书写实验报告,详细阐述代码编写的基本思想及主要过程。
四 课时分配
2课时
五 提交文档
实验报告、源程序代码
1.当窗口最小化或被遮挡时暂停游戏;
2.改变蛇的运动速度,按+号键加速,按-号键减速;
3.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动;
在按下方向键时,蛇向该方向运动,当按下大写字母Q时,蛇暂停运动。 对于几个常量的定义
public static final int SOUTH = 0;
public static final int NORTH = 1;
public static final int EAST = 2;
public static final int WEST = 3;
public static final int quilt = 4;
控制方向函数:
public void keyPressed(KeyEvent e) {
int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_P) {
isPaused = !isPaused;
System.out.println("key is P");
}
if (!isPaused ) {
switch (keycode) {
case KeyEvent.VK_DOWN:
direction = SOUTH;
System.out.println("key is down" + direction); break;
case KeyEvent.VK_UP:
direction = NORTH;
System.out.println("key is …… 此处隐藏:8267字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




