《《java游戏程序设计教程》实验任务书.doc》由会员分享,可在线阅读,更多相关《《java游戏程序设计教程》实验任务书.doc(20页珍藏版)》请在金锄头文库上搜索。
1、Java游戏程序设计教程实验任务书实验一 弹跳小球游戏设计一 实验目的 通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机制的基本原理,并掌握游戏运行框架的设计方法。二 实验内容学习和了解游戏基本框架的设计方法(参考教材第3章内容及相关代码),在此基础上设计弹跳小球游戏,实现小球在程序窗口边界反弹的效果。要求实现如下功能:1. 创建游戏程序主窗体(GameFrame)和绘图面板(GamePanel);2. 设计游戏循环,并通过线程来控制游戏运行的帧速率;3. 在游戏逻辑更新部分实现小球的运动逻辑,使得小球可以朝着窗口四周移动,并在边界处反弹。4. 在游戏绘制部分实现小球
2、的图形绘制,并通过双缓冲机制消除屏幕闪烁。三 实验步骤1. 阅读实验要求,设计程序整体结构及各个类的功能。2. 启动java开发环境,新建游戏项目。3. 根据实验内容要求编写代码,以实现相应的功能。4书写实验报告,详细阐述代码编写的基本思想及主要过程。四 课时分配2课时五 提交文档实验报告、源程序代码1. 创建游戏程序主窗体(GameFrame)和绘图面板(GamePanel);/程序主窗体public GameFrame() Frame app = new Frame(GameFrame); app.addWindowListener(new WindowAdapter() public v
3、oid 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 Di
4、mension(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,sle
5、epTime; long period=1000/FPS; /计算每一次循环需要的执行时间,单位毫秒 t1=System.nanoTime(); /保存游戏循环执行前的系统时间,单位纳秒 while(true) gameUpdate(); gameRender(); gamePaint(); t2= System.nanoTime() ; /游戏循环执行后的系统时间,单位纳秒 dt=(t2-t1)/L; /本次循环实际花费的时间,并转换为毫秒 sleepTime = period - dt;/计算本次循环剩余的时间,单位毫秒 if(sleepTime bound.x - diameter) |
6、 (location.x 0) dx = -dx; if (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
7、 (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的事件处理机制来改变游戏状态和传递控制命令。二 实验内容学
8、习和了解贪食蛇游戏的基本设计思想(参考教材4.4节内容及相关代码),在此基础上进行改进,要求实现如下功能:1.当窗口最小化或被遮挡时暂停游戏;2.改变蛇的运动速度,按+号键加速,按-号键减速;3.手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动;4.能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不消失);5.添加游戏结束规则(比如蛇头碰到边界或蛇身时结束),并能重新开始游戏。 要求至少实现3个功能。还可以根据自己的创意,加入更多功能。三 实验步骤1. 启动java开发环境,运行示例程序。2. 阅读示例程序,分析程序整体结构及各个类的功能。3. 根据实验内容要求
9、修改或添加代码,以实现相应的功能。4书写实验报告,详细阐述代码编写的基本思想及主要过程。四 课时分配2课时五 提交文档实验报告、源程序代码1. 当窗口最小化或被遮挡时暂停游戏;2. 改变蛇的运动速度,按+号键加速,按-号键减速; 3. 手动控制蛇的移动,按下方向键时让蛇朝对应的方向移动,否则静止不动;在按下方向键时,蛇向该方向运动,当按下大写字母Q时,蛇暂停运动。对于几个常量的定义 public static final int SOUTH = 0; public static final int NORTH = 1; public static final int EAST = 2; pub
10、lic 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 up + direction); break; case KeyEvent.VK_RIGHT: direction = EAST; System.out.println(key is right + direction); break;