当前位置:文档之家› 《JAVA游戏程序设计教程》实验任务书

《JAVA游戏程序设计教程》实验任务书


}
}
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; }
while(true){
gameUpdate();
gameRender();
gamePaint();
t2= System.nanoTime() ; //游戏循环执行后的系统时间,单位纳秒
dt=(t2-t1)/1000000L; //本次循环实际花费的时间,并转换为毫秒
sleepTime = period - dt;//计算本次循环剩余的时间,单位毫秒
1. 创建游戏程序主窗体(GameFrame)和绘图面板(GamePanel);
//程序主窗体 public GameFrame() {
Frame app = new Frame("GameFrame"); app.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0);
//绘图面板 public gamePanel() {
width=500; heigth=500; setBackground(Color.pink); setPreferredSize(new Dimension(width, heigth));
myball=new ball(this); mypad=new pad(this);
}
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 up" + direction); break;
}
4. 在游戏绘制部分实现小球的图形绘制,并通过双缓冲机制消除屏幕闪烁。
//消除屏幕闪烁 public void gamePaint() {
Graphics g;
try { g = this.getGraphics(); if (g != null && im != null) { g.drawImage(im, 0, 0, null); } g.dispose();
nodeArray.addFirst(food);
// 从蛇头赠长
// 分数规则,与移动改变方向的次数和速度两个元素有关 int scoreGet = (10000 - 200 * countMove) / timeInterval; score += scoreGet > 0 ? scoreGet : 10; countMove = 0;
《Java 游戏程序设计教程》实验任务书
实验一 弹跳小球游戏设计
一 实验目的 通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和
双缓冲机制的基本原理,并掌握游戏运行框架的设计方法。 二 实验内容
学习和了解游戏基本框架的设计方法(参考教材第 3 章内容及相关代码), 在此基础上设计弹跳小球游戏,实现小球在程序窗口边界反弹的效果。要求实现 如下功能:
//游戏循环,控制游戏运行的帧速度 public void run() {
long t1,t2,dt,sleepTime; long period=1000/FPS; //计算每一次循环需要的执行时间,单位毫秒 t1=System.nanoTime(); //保存游戏循环执行前的系统时间,单位纳秒
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;
if(sleepTime<=0)
//防止 sleepTime 值为负数
sleepTime=2;
try {
Thread.sleep(sleepTime); //让线程休眠,由 sleepTime 值决定
} catch (InterruptedException ex) { }
t1 = System.nanoTime(); //重新获取当前系统时间
} 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(); }
matrix[x][y] = true;
n = (NoБайду номын сангаасe) nodeArray.removeLast();
matrix[n.x][n.y] = false;
countMove++;
return true;
}
}
return false;
实验三 打砖块游戏设计
一 实验目的 通过设计和制作打砖块游戏来理解游戏程序的运行机制,同时学习运用 java
this.setFocusable(true); this.requestFocus(); this.addKeyListener(this); }
2. 设计游戏循环,并通过线程来控制游戏运行的帧速率;
//线程 public void gameStart(){
gamethread = new Thread(this); gamethread.start(); }
food = createFood();
// 创建新的食物
matrix[food.x][food.y] = true;
// 设置食物所在位置
return true;
} else
// 吃到蛇体自身,失败
return false;
} else {
// 如果新坐标的点上没有东西(蛇体),移动蛇体
nodeArray.addFirst(new Node(x, y));
1. 创建游戏程序主窗体(GameFrame)和绘图面板(GamePanel); 2. 设计游戏循环,并通过线程来控制游戏运行的帧速率; 3. 在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周 移动,并在边界处反弹。 4. 在游戏绘制部分实现小球的图形绘制,并通过双缓冲机制消除屏幕闪烁。 三 实验步骤 1. 阅读实验要求,设计程序整体结构及各个类的功能。 2. 启动 java 开发环境,新建游戏项目。 3. 根据实验内容要求编写代码,以实现相应的功能。 4.书写实验报告,详细阐述代码编写的基本思想及主要过程。 四 课时分配 2 课时 五 提交文档 实验报告、源程序代码
} }); app.setLocation(100, 100); gamePanel drawB = new gamePanel(); app.add(drawB, BorderLayout.CENTER);
app.pack(); app.setVisible(true); drawB.gameStart(); }
的事件处理机制来改变游戏状态和传递控制命令。 二 实验内容
学习和了解贪食蛇游戏的基本设计思想(参考教材 4.4 节内容及相关代码), 在此基础上进行改进,要求实现如下功能:
1.当窗口最小化或被遮挡时暂停游戏; 2.改变蛇的运动速度,按+号键加速,按-号键减速;
3.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动; 4.能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不 消失); 5.添加游戏结束规则(比如蛇头碰到边界或蛇身时结束),并能重新开始游戏。 要求至少实现 3 个功能。还可以根据自己的创意,加入更多功能。 三 实验步骤 1. 启动 java 开发环境,运行示例程序。 2. 阅读示例程序,分析程序整体结构及各个类的功能。 3. 根据实验内容要求修改或添加代码,以实现相应的功能。 4.书写实验报告,详细阐述代码编写的基本思想及主要过程。 四 课时分配 2 课时 五 提交文档 实验报告、源程序代码
控制方向函数:
public void keyPressed(KeyEvent e) { int keycode = e.getKeyCode();
if (keycode == KeyEvent.VK_P) { isPaused = !isPaused; System.out.println("key is P");
相关主题