版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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)/1000000L; /本次循环实际花费的时间,并转换为毫秒 sleepTime = period - dt;/计算本次循环剩余的时间,单位毫秒 if(sleepTime bound.x - diam
6、eter) | (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 gameRend
7、er() 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的事件处理机制来改变游戏状态和传递控制命令。
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 =
10、 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; S
11、ystem.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; case KeyEvent.VK_LEFT: direction = WEST; System.out.println(key
12、is left + direction); break; case KeyEvent.VK_Q: direction = quilt; System.out.println(key is quilt + direction); break; 4. 能够添加多个食物,如当按下某个键后随机添加一个新食物(原来的食物不消失);5.添加游戏结束规则(比如蛇头碰到边界或蛇身时结束),并能重新开始游戏。 / 如果新坐标落在有效范围内,则进行处理 if (0 = x & x maxX) & (0 = y & y 0 ? scoreGet : 10; countMove = 0; food = createF
13、ood(); / 创建新的食物 matrixfood.xfood.y = true; / 设置食物所在位置 return true; else / 吃到蛇体自身,失败 return false; else / 如果新坐标的点上没有东西(蛇体),移动蛇体 nodeArray.addFirst(new Node(x, y); matrixxy = true; n = (Node) nodeArray.removeLast(); matrixn.xn.y = false; countMove+; return true; return false; 实验三 打砖块游戏设计一 实验目的 通过设计和制作
14、打砖块游戏来理解游戏程序的运行机制,同时学习运用java编程来实现游戏世界中物体间的碰撞检测。二 实验内容学习和了解打砖块游戏的基本设计思想(参考教材4.5节内容及相关代码),在此基础上进行改进,要求实现如下功能:1 增加生命,如初始时设小球3条命,掉下挡板三次游戏结束;2 增加难度,每个砖块要敲击两次才能消失;3 分数显示,设计积分规则,并在游戏结束时显示出来;4 设置宝物,让宝物隐藏砖块后,打中相应的砖块后改变属性,如小球减速,挡板增长,小球穿越砖块,小球停在挡板上等等;5 增加新的关卡,在初始的游戏过关后能生成新的关卡(改变砖块布局)。要求至少实现3个功能。还可以根据自己创意,加入更多功
15、能。三 实验步骤1. 启动java开发环境,运行示例程序。2. 阅读示例程序,分析程序整体结构及各个类的功能。3. 根据实验内容要求修改或添加代码,以实现相应的功能。4书写实验报告,详细阐述代码编写的基本思想及主要过程。四 课时分配2课时五 提交文档实验报告、源程序代码1 增加生命,如初始时设小球3条命,掉下挡板三次游戏结束;public class Life extends Spritepublic Life() super(0,0,Images/heart1.png,1); public Sprite(int x, int y, String imfile, int num) locX =
16、 x; locY = y; dx = 3; dy = 3; imFileName = imfile; numImages = num; if (numImages = 1) image = setImage(imFileName); else if (numImages 1) animPlayer = new Animation(imFileName, numImages, 0, 0, false); image = animPlayer.getCurrentImage(); width = image.getWidth(); height = image.getHeight(); 2 增加难
17、度,每个砖块要敲击两次才能消失;3 分数显示,设计积分规则,并在游戏结束时显示出来;public void paintComponent(Graphics g)super.paintComponent(g);g.drawString(分数:+fenshu, 200, 30);4 设置宝物,让宝物隐藏砖块后,打中相应的砖块后改变属性,如小球减速,挡板增长,小球穿越砖块,小球停在挡板上等等;5 增加新的关卡,在初始的游戏过关后能生成新的关卡(改变砖块布局)。实验四 角色扮演游戏设计一 实验目的 通过设计和制作简单的角色扮演游戏来了解游戏场景设计和角色设计的基本概念和原理,并掌握游戏场景滚动和角色动
18、画播放的基本实现方法。二 实验内容学习和了解游戏场景设计和角色设计的基本原理(参考教材5、6章内容),在此基础上设计简单的角色扮演游戏,要求实现如下功能:1.创建一副大尺寸图像(宽和高均超过程序窗口的宽和高),作为游戏的场景图像。2.实现场景的滚动控制,要求能够在水平方向和垂直方向进行场景滚动(用键盘左右键进行水平滚动控制,上下键进行垂直滚动控制)。 3.创建游戏角色,并实现角色上下左右四个方向行走时的精灵动画播放。4.将游戏角色加入游戏场景,并控制角色在场景中四处走动,当按下某个方向键时,滚动游戏场景并播放角色朝着相应方向行走的动画。三 实验步骤1. 阅读实验要求,设计程序整体结构及各个类的
19、功能。2. 启动java开发环境,新建游戏项目。3. 根据实验内容要求编写代码,以实现相应的功能。4书写实验报告,详细阐述代码编写的基本思想及主要过程。四 课时分配2课时五 提交文档实验报告、源程序代码1.创建一副大尺寸图像(宽和高均超过程序窗口的宽和高),作为游戏的场景图像。public void init() imMoveSize = 5; canMoveRight = false; canMoveLeft = false; im1 = loadImage(Images/mountains.gif); im2 = loadImage(Images/houses.gif); im3 = lo
20、adImage(Images/trees.gif); bg1 = new Ribbon(int) (imMoveSize * 0.2), im1); bg2 = new Ribbon(int) (imMoveSize * 0.5), im2); bg3 = new Ribbon(imMoveSize, im3); tileImage = new BufferedImage10; tiles = new ArrayList(); for (int i = 0; i 0) runningRight = true; runningLeft = false; else if (dx = 0) jump
21、Stopped(); if (!isJumping) dy += GRAVITY; locY += dy; locX += dx; if (hasFoundPlayer() if (locX - world.getOffsetX() GamePanel.WIDTH / 2) dx = -Math.abs(dx); else dx = Math.abs(dx); if (runningRight) animRight.updateImage(); else if (runningLeft) animLeft.updateImage(); if (world.worldCollisionVerti
22、cal(this, thisPosition(), nextPosition(), 0) if (dy 0) onGround = true; setDY(0); else onGround=false; if (world.worldCollisionHorizontal(this, thisPosition(), nextPosition(), 0) dx = -dx; if (hasFoundPlayer()&onGround=true) isJumping = true; sound.loadSound(Sounds/jump.wav); sound.playSound(); 实验五
23、横版动作游戏设计一 实验目的 通过设计和制作横版动作游戏来理解游戏场景与角色的交互、游戏规则设计、游戏音乐设计及游戏关卡设计的基本原理,并掌握横版动作游戏程序的基本实现方法。二 实验内容学习和了解横版动作游戏的基本设计思想(参考教材7-10章的内容和相关代码),在此基础上进行改进,要求实现如下功能:1.用其它图像资源替换教材游戏示例中的场景及精灵,同时用其它声音资源替换示例中的音乐和音效;2.改进NPC(电脑角色)间的碰撞检测及处理规则,如让两个NPC碰到后相互按相反的方向移动等;3.在游戏地图中设置秘密出口,玩家走到该处可以直接过关;4.增加新的道具,让玩家得到道具后获得新技能;5.增加移动
24、障碍物,比如上下(或左右)浮动的木头等;6.使用关卡编辑器设计一个新关卡。要求至少实现3个功能。还可以根据自己创意,加入更多功能。三 实验步骤1. 启动java开发环境,运行示例程序。2. 阅读示例程序,分析程序整体结构及各个类的功能。3. 根据实验内容要求修改或添加代码,以实现相应的功能。4书写实验报告,详细阐述代码编写的基本思想及主要过程。四 课时分配2课时五 提交文档实验报告、源程序代码实验六、七、八、九为综合实验,要求模仿经典游戏“推箱子”来独立地设计一款java游戏,以此理解游戏设计的基本原理,同时练习使用面向对象的程序设计方法。(说明:只需要实现任务书上的基本功能,不能从网上cop
25、y现成的代码。需提交可玩的游戏源程序及各次实验的实验报告。)实验六 推箱子游戏场景设计一 实验目的理解游戏循环的实现原理,掌握java图像绘制、tile贴图、精灵动画及移动控制的程序实现。二 实验内容1. 绘制游戏场景。背景底层使用一副图片作为场景,前层用tile贴图表示障碍物。2. 绘制精灵。包括箱子、玩家角色、标志点。3. 控制玩家移动。按上下左右方向键后玩家分别向对应的方向移动,同时播放该方向的行走动画。三 实验步骤1. 阅读实验要求,设计程序整体结构及各个类的功能。2. 启动java开发环境,新建游戏项目。3. 根据实验内容要求编写代码,以实现相应的功能。4书写实验报告,详细阐述代码编
26、写的基本思想及主要过程。四 课时分配2课时五 提交文档实验报告、源程序代码1. 绘制游戏场景。背景底层使用一副图片作为场景,前层用tile贴图表示障碍物。public TXZ()TXZm T=new TXZm();add(T);setTitle(推箱子);setSize(500,500);setBackground(Color.red);setLocation(500,500);setVisible(true);2. 绘制精灵。包括箱子、玩家角色、标志点。3.控制玩家移动。按上下左右方向键后玩家分别向对应的方向移动,同时播放该方向的行走动画。switch (keycode) case KeyEvent.VK_DOWN: break; case KeyEvent.VK_UP: break; case KeyEvent.VK_RIGHT: gameWorld.canMoveLeft = true; man.standLeft = false; break; case KeyEvent.VK_LEFT: gameWorld.canMoveRight = true; man.standRight = false; break;实验七 推箱子游戏交互设计一 实验目的理解碰撞检测的原理,并掌握其程序的实现方式。 二 实验内容1. 玩家与障碍物碰撞。玩家碰到障碍物后停止移动。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论