版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-. z.飞机大战实验报告专业:网络工程132班*:139074298:仁强计算机科学与技术学院二零一六年十二月一、软件运行所需要的软硬件环境本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。本机器的配置如下:处理器:CORE i7主频:1.2Hz以上内存:4G以上硬盘:HHD50G编程语言:Java开发环境:windows7开发软件:EclipseMars二、游戏流程用户翻开游戏,进入开场菜单。用户点击开场游戏按钮,进入游戏界面;用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞;游戏失败后,显示本次游戏得分,用的秒数和水平;退出游戏三、主要代码1、准备
2、代码设置窗口使用双缓冲使飞机不闪烁Constant设置窗口大小package .ahut.准备代码;publicclass Constant publicstaticfinalintGAME_WIDTH = 350;publicstaticfinalintGAME_HEIGHT = 600;package .ahut.准备代码;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.IOE*ception;import .URL;public class GameUtil private GameUtil
3、 () public static Image getImage(String path) BufferedImage bi = null; try URL u = GameUtil.class.getClassLoader().getResource(path); bi = java*.imageio.ImageIO.read(u); catch (IOE*ception e) / TODO Auto-generated catch block e.printStackTrace(); return bi; package .ahut.准备代码;import java.awt.Frame;i
4、mport java.awt.Graphics; import java.awt.Image; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;public class MyFrame e*tends Framepublic void lauchFrame() setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT); setLocation(100, 100); setVisible(true); new PaintThread().start(); ad
5、dWindowListener(new WindowAdapter() Override public void windowClosing(WindowEvent e) System.e*it(0); ); private Image offScreenImage = null; public void update(Graphics g) if (offScreenImage = null) offScreenImage = this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHT); Graphics gOff = offScr
6、eenImage.getGraphics(); paint(gOff); g.drawImage(offScreenImage, 0, 0, null); class PaintThread e*tends Thread public void run() while (true) repaint(); try Thread.sleep(40); catch (InterruptedE*ception e) / TODO Auto-generated catch blocke.printStackTrace(); 主代码飞机:package .ahut.plane;import java.aw
7、t.Graphics;import java.awt.event.KeyEvent;import .ahut.准备代码.GameUtil;public class Plane e*tends GameObject private boolean left, up, right, down; private boolean live = true; public void draw(Graphics g) if (live) g.drawImage(img, (int)*, (int)y, null); move(); public void addDirection(KeyEvent e) s
8、witch (e.getKeyCode() case KeyEvent.VK_LEFT: /左 left = true; break; case KeyEvent.VK_UP: /上 up = true; break; case KeyEvent.VK_RIGHT: /右 right = true; break; case KeyEvent.VK_DOWN: /下 down = true; break; default: break; public void minusDirection(KeyEvent e) switch (e.getKeyCode() case KeyEvent.VK_L
9、EFT: /左 left = false; break; case KeyEvent.VK_UP: /上 up = false; break; case KeyEvent.VK_RIGHT: /右 right = false; break; case KeyEvent.VK_DOWN: /下 down = false; break; default: break; public void move() if (left) * -= speed; if (right) * += speed; if (up) y -= speed; if (down) y += speed; public Pla
10、ne(String imgpath, double *, double y) this.img = GameUtil.getImage(imgpath); this.width = img.getWidth(null); this.height = img.getHeight(null); this.* = *; this.y = y; public Plane() public void setLive(boolean live) this.live = live; public boolean isLive() return live; 子弹:package .ahut.plane;imp
11、ort java.awt.Color;import java.awt.Graphics;import java.awt.Rectangle;import .ahut.准备代码.Constant;public class Bullet e*tends GameObject double degree; public Bullet() degree = Math.random() * Math.PI * 2; * = Constant.GAME_WIDTH / 2; y = Constant.GAME_HEIGHT / 2; width = 10; height = 10; public Rect
12、angle getRect() return new Rectangle(int)*, (int)y, width, height); public void draw(Graphics g) Color oldColor = g.getColor(); g.setColor(Color.yellow); g.fillOval(int)*, (int)y, width, height); * += speed * Math.cos(degree); y += speed * Math.sin(degree); if (y Constant.GAME_HEIGHT - height | y 30
13、) degree = -degree; if (* Constant.GAME_WIDTH - width) degree = Math.PI - degree; g.setColor(oldColor); 游戏对象:package .ahut.plane;import java.awt.Image;import java.awt.Rectangle;public class GameObject Image img;double *,y;int speed=5;int width,height;public Rectangle getRect() return new Rectangle(i
14、nt)*, (int)y, width, height); public GameObject(Image img, double *, double y, int speed, int width, int height) super(); this.img = img; this.* = *; this.y = y; this.speed = speed; this.width = width; this.height = height; public GameObject() 主线程package .ahut.plane;import java.awt.Color;import java
15、.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.ArrayList;import java.util.Date;import .ahut.准备代码.GameUtil;import .ahut.准备代码.MyFrame;public class PlaneGameFrame e*tends MyFrame Image bg = GameUtil.getImage(imag
16、e/ped.jpg); Plane p = new Plane(image/plane.png, 50, 50); ArrayList bulletList = new ArrayList(); Date startTime; Date endTime; public void paint(Graphics g) g.drawImage(bg, 0, 0, null); p.draw(g); /在这里画子弹 for (int i = 0; i bulletList.size(); i+) Bullet b = (Bullet)bulletList.get(i); b.draw(g); /检测跟
17、飞机的碰撞 boolean peng = b.getRect().intersects(p.getRect(); if (peng) p.setLive(false); break; if (!p.isLive() int period = (int)endTime.getTime() - (int)startTime.getTime() / 1000; /转换成秒 printInfo(g, 时间: + period + 秒, 20, 115, 300, Color.white); switch (period / 10) case 0: case 1: printInfo(g, 菜鸟, 40
18、, 115, 270, Color.white); break; case 2: printInfo(g, 入门, 40, 115, 270, Color.yellow); break; case 4: printInfo(g, 精通, 40, 115, 270, Color.white); break; case 5: printInfo(g, 大师, 40, 115, 270, Color.white); break; / printInfo(g, 分数: 100, 10, 50, 50, Color.yellow); public void printInfo(Graphics g, String str, int size, int *, int y, Color color) Color c = g.getColor(); g.setColor(color); Font f = new Font(宋体, Font.BOLD, size); g.setFont(f); g.drawString(str, *, y);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业设备维修服务合同范本
- 工程机械操作安全规程培训资料
- 知识管理系统建设规划及应用指引
- 小学科学探究实验及教学设计
- 纺织技术教学课件
- 工贸企业生产现场安全管理再再再再再考核(2024年8月)
- 钢结构施工工艺及质量控制要点解析
- 员工工作效率提升技巧总结
- 陈奕迅作品介绍
- 博物馆藏品二维影像拍摄技术标准
- 2026年山西警官职业学院单招综合素质笔试备考题库带答案解析
- 2026年农夫山泉-AI-面试题目及答案
- 2025年国考《行测》真题库地市完美版
- 2026年包头铁道职业技术学院高职单招职业适应性测试备考题库及答案详解
- 2025贵州遵义市仁怀市公共交通服务有限公司招聘公交驾驶员及管理人员招聘141人考试参考题库附答案
- 广东省普通高中2026届第一次学业水平合格性考试自查卷语文试题(含答案)
- 2025广西北海市城市开发投资集团有限公司招聘10人笔试参考题库附带答案详解
- 2026年面向社会招聘太湖县政务服务中心综合窗口工作人员的备考题库及完整答案详解一套
- 2026凯翼汽车全球校园招聘(公共基础知识)综合能力测试题附答案
- 肿瘤免疫治疗进展
- 山东省威海市环翠区2024-2025学年一年级上学期1月期末数学试题
评论
0/150
提交评论