飞机大战 JAVA程序设计报告
java小项目飞机大战课程设计
java小项目飞机大战课程设计一、课程目标知识目标:1. 理解Java编程语言的基本语法和结构,掌握面向对象编程的基本概念;2. 学会使用Java编写简单的图形用户界面(GUI)应用程序;3. 掌握事件处理机制,实现游戏中的交互功能;4. 了解游戏开发的基本流程和技巧,如游戏循环、碰撞检测等。
技能目标:1. 能够运用所学知识独立设计并实现一个简单的飞机大战游戏;2. 提高编程实践能力,培养解决问题的思维方式和调试技巧;3. 学会合作与沟通,通过团队协作完成一个完整的游戏项目。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养创新意识和动手能力;2. 培养学生勇于面对挑战、克服困难的意志品质;3. 增强学生的团队协作精神,学会相互尊重、共同进步;4. 通过游戏项目的设计与实现,让学生体会到编程的乐趣和价值。
本课程针对初高中年级学生,结合Java学科特点和教学要求,注重理论与实践相结合,以培养学生实际动手能力为核心。
课程目标具体、可衡量,旨在帮助学生掌握Java编程基础,提高编程实践技能,同时培养团队协作和解决问题的能力,使学生在愉快的游戏开发过程中,收获知识、技能和成长。
二、教学内容1. Java基本语法与结构:变量、数据类型、运算符、控制流程(条件语句、循环语句);2. 面向对象编程基础:类与对象、构造方法、封装、继承、多态;3. Java图形用户界面(GUI):Swing组件、布局管理器、事件处理;4. 游戏开发技巧:游戏循环、碰撞检测、动画实现、音效处理;5. 项目实践:设计并实现飞机大战游戏,包括敌机生成、飞机移动、射击与爆炸效果等。
教学内容依据课程目标进行选择和组织,确保科学性和系统性。
教学大纲安排如下:1. Java基础(2课时):复习基本语法和结构,为后续游戏开发打下基础;2. 面向对象编程(2课时):学习类与对象的使用,理解封装、继承、多态等概念;3. Java GUI(2课时):掌握Swing组件和布局管理器,学习事件处理机制;4. 游戏开发技巧(2课时):讲解游戏开发中的常用技巧和方法;5. 项目实践(4课时):分组进行飞机大战游戏的设计与实现,教师指导与解答。
大学课程设计报告-飞机大战
湖北大学本科课程设计题目Java课程设计——飞机大战姓名学号专业年级指导教师职称2015年12月18日----目录----一.项目介绍-------------------------------- 1二.概要设计2.1资源需求------------------------------ 12.2游戏流程------------------------------ 1三.类设计3.1游戏界面类---------------------------- 23.2飞行物类------------------------------ 23.3敌机类-------------------------------- 23.4蜜蜂类-------------------------------- 33.5玩家飞机类----------------------------- 33.6子弹类-------------------------------- 4四.编码分析4.1游戏界面类---------------------------- 44.2飞行物类------------------------------ 114.3敌机类-------------------------------- 124.4蜜蜂类-------------------------------- 134.5玩家飞机类----------------------------- 134.6子弹类-------------------------------- 15五.游戏测试画面----------------------------- 16六.总结------------------------------------ 18针对Java课程设计,我做了一个小游戏——飞机大战,游戏代码包含到本学期所学的所有知识点。
程序运行后,进入到开始画面,鼠标单击开始游戏。
程序设计综合实践 飞机大战 实训报告
[在此处键入]实训报告飞机大战游戏设计与开发专业名称:班级:学号:信息科学与工程学院二零一八年七月目录1. 概述 (3)2. 相关技术 (3)2.1 碰撞检测 (3)2.2 COblist链表 (3)2.3 双缓冲技术 (4)2.4 背景滚动 (4)2.5 爆炸动画的实现 (4)2.6定时器的使用 (4)3. 总体设计与详细设计 (4)3.1 系统模块划分 (4)3.2 主要功能模块 (5)4. 编码实现 (7)5. 实训中遇到的主要问题及解决方法 (42)6. 实训体会 (43)1. 概述本次实训任务是以visual studio 2017为环境,利用MFC和C++编写一个飞机大战游戏。
其实现的主要功能为:实现游戏对象的爆炸特效,界面背景切换,文字提示和血条显示功能,奖励机制(血包、护盾、僚机、武器升级),大招和无敌模式等。
通过方向键控制战机移动,空格键发射子弹,击毁敌机可以得分。
游戏中可以按“X”开启或关闭无敌模式。
按“P”可以暂停。
游戏设有能量槽,能量不断积累,超过一半可以按“Z”键使用大招,大招为全屏攻击。
玩家收到攻击血量减少,血量为0游戏结束,显示“Game Over”,可以按“R”复活,继续游戏。
游戏设有关卡机制,每关开始一段时间后出现boss。
击败boss进入下一关。
boss有三种,难度依次增加。
第一种boss发射直线子弹,第二种boss发射散射子弹,第三种boss 两种子弹随机发射。
前三关背景图和boss固定,之后背景图与boss随机生成。
游戏中随机出现四种道具:血包:可以恢复一定的血量。
护盾:一段时间内无敌。
武器升级:升级玩家的武器,共三个等级。
僚机:获得一个僚机。
2. 相关技术2.1 碰撞检测游戏中需要处理一系列的碰撞,在处理碰撞时,可以认为每个对象是与位图大小相同的矩形,用Crect类的GetRect函数获取我方战机的矩形与敌机子弹矩形,然后新建一个矩形并且调用IntersectRect(&bRect,mRect)再用if条件语句判断,若矩形区域重叠不为空,则视为碰撞,在if语句中填写实现碰撞后的功能。
飞机大战设计报告+开发计划讲解
项目设计报告项目名称:进击的飞机目录一、游戏整体概括 (3)1.1 游戏概括 (3)1.2 开发环境 (3)二、系统需求分析 (4)2.1用户功能需求分析 (4)2.2 系统性能要求 (4)2.3业务流程分析 (4)三、系统总体设计 (5)3.1 系统功能模块分析 (5)3.2 系统类关系图 (5)3.3 系统总体设计 (6)四、系统详细设计 (8)4.1 开发工具简介 (8)4.2 游戏界面设计 (8)4.2.1游戏开始界面ReadyView (8)4.2.2游戏主界面MainView (9)4.2.2.1 鼠标控制玩家飞机移动 (10)4.2.2.2 碰撞逻辑 (10)4.2.2.3 游戏暂停 (11)4.2.3帮助界面HelpView (11)4.2.4游戏失败界面EndView (12)五、游戏开发计划 (13)5.1游戏开发计划表 (13)5.2 游戏开发计划具体分工 (15)一、游戏整体概括1.1游戏概括本项目是一个基于android平台的、集休闲娱乐、互动交友、丰富生活等诸多元素与一身的手机竞技类游戏。
旨在通过此应用的设计与推广,为社会大众的生活增添乐趣与新意。
本项目产品名称为“进击的飞机”,功能丰富完善,界面简洁流畅,游戏方式简单,玩家易于上手。
1.2开发环境开发环境:Windows 7 & Windows 8.1开发工具:Eclipse开发语言:Java开发平台:Android ADT二、系统需求分析2.1用户功能需求分析由于本游戏交互性好,简单易操作,对用户并没有特殊的要求。
一般用户经过几分钟练习就可以掌握游戏规则。
2.2 系统性能要求①实时性:本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。
②易操作性:单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。
这是本应用对于操作性的要求。
2.3业务流程分析三、系统总体设计3.1 系统功能模块分析当前应用使用的SurfaceView来绘制的页面,因此相对来说大部分逻辑都是由View类来做处理的。
JAVA课程设计飞机大战
基于订阅:手机游戏的盈利成功取决于他们巨大的使用量。如 果一个手机游戏开发者要赢利的话,重要的是同一个游戏引擎, 多个 标题,基本的故事情节类似。
游戏开发背景
基于游戏应具备的特征,我们小组准备开发一款简单易 懂,便于操作,又兼备可中断性的游戏,于是我们想到了飞 机大战。
1.游戏程序是一项精度要求很高的程序系统,因为其代码利用率 很高。一个实时运 行的最终作品,每秒都会运行成千上万行程序, 绘图事件、键盘事件都会以极高的频率在 后台等待响应,若有丝 毫的差别都将很容易导致程序在运行不久后可能出现严重错误, 甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发 生的事件及意外情况考虑在设计中。
NUMBER_9_IMG •
2021/3/26
15
返回目录
2021/3/26
16
2021/3/26
制
Java学习已经近3个多月了,在学习
作
的过程中,对它有了一些体会。 我本人觉得JAVA不仅是一门计算机
感
语言,也还同样是人类发明的语言,如 果我们像学习母语一样认真地对待它,
言
时时刻刻使用它,熟透它,我相信我们
•}
• 背景音乐调用类 • SoundPlayer.java: • package com.beancore.util; • import java.io.File; • import java.io.IOException; • import
javax.sound.sampled.AudioInputS tream; • import javax.sound.sampled.AudioSyste m; • import javax.sound.sampled.Clip; • import javax.sound.sampled.LineUnavail ableException; • import javax.sound.sampled.Unsupporte dAudioFileException; • public class SoundPlayer { • private Clip clip; • public SoundPlayer(String filePath) throws
基于JAVA的飞机大战游戏的设计与实现计算机毕业设计论文
基于Java的飞机大战游戏的设计与实现摘要飞机大战是电脑游戏发展史中早期最为经典的游戏之一,经常能在掌上游戏机、手机以及电脑上见到这个游戏。
不过,以往常见的飞机大战游戏是二维平面上的,并且大多以黑白的形式出现,当然在电脑上可以看到多种颜色的飞机大战。
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
本游戏是一个基于java的飞机大战游戏,利用Eclipse平台实现经典的飞机大战游戏。
游戏主要涉及了游戏状态控制功能、游戏难度的调整、游戏界面绘画功能、玩家游戏控制功能,最终展示了游戏开发的基本开发过程和设计思路。
关键词:飞机大战;游戏;java;Eclipse平台Design and implementation of airplane wargame based on JavaAbstractLightning is the history of the development of computer games in the early one of the most classic game, often on a handheld game consoles, mobile phone and computer to see this game. However, the previous common lightning game is two-dimensional plane, and mostly in black and white, in the course of the computer can see lightning in color.Since Java is very popular after the launch, the rapid development of the C + + language to form a strong impact. Java technology has excellent versatility, efficiency, platform portability and security, widely used in personal PC, data center, game consoles, scientific supercomputers, cell phones and the Internet, also has the world's largest developer of professional community . In the world of cloud computing and mobile Internet industry environment, Java and more have a significant advantage and broad prospects.This game is a game based on the realization of Java lightning, lightning classic game based on Eclipse platform. The game is mainly involved in the game state control function, the difficulty of the game, the game interface to adjust the drawing function, game player control function, finally shows the basic development process of game development and design ideas.Keywords: lightning; game; Java; Eclipse platform目录摘要 (i)Abstract (ii)1 引言 (1)1.1 项目背景 (1)1.2 国内外研究现状 (1)1.3 项目主要工作 (1)1.4 本文组织结构 (2)2 开发平台与开发技术 (3)2.1 Eclipse (3)2.2 Eclipse平台 (3)2.3 Java (4)2.4 Java语言的特点与优势 (5)2.5 java技术在游戏开发中的应用 (6)2.6 UML (8)3 飞机大战游戏模块设计 (9)3.1 用户需求分析 (9)3.2 可行性分析 (9)3.3 总体设计原则 (10)3.4 功能模块设计 (11)3.4.1 游戏状态控制功能 (11)3.4.2 游戏难度的调整 (11)3.4.3 游戏界面绘画功能 (11)3.4.4 玩家游戏控制功能 (11)3.5 游戏难点分析 (11)4 飞机大战功能实现 (12)4.1 游戏首页的实现 (12)4.1.1 界面实现 (12)4.1.2 流程图 (13)4.1.3 核心代码 (14)4.2 游戏开始模块的实现 (15)4.2.1 界面实现 (15)4.2.2 流程图 (16)4.2.3 核心代码 (17)4.3 发射子弹模块的实现 (18)4.3.1 界面实现 (18)4.3.2 流程图 (19)4.3.3 核心代码 (20)4.4 积分模块的实现 (22)4.4.1 界面的实现 (22)4.4.2 核心代码 (23)4.5 碰撞逻辑 (26)4.5.1 碰撞画面的实现 (26)4.5.2 核心代码 (27)4.6 游戏玩家与BOSS的血条 (28)4.6.1 玩家血条和BOSS血条的实现 (28)4.6.1 核心代码 (29)4.7 游戏操作的实现 (30)4.7.1 核心代码 (30)5 系统测试 (31)5.1 测试的定义及其重要性 (31)5.1.1 测试的定义 (31)5.1.2 测试的重要性 (31)5.2 测试实例的研究与选择 (31)5.3 测试结果 (32)总结和展望 (33)参考文献 (34)致谢 (35)外文原文 (36)中文翻译 (42)1 引言1.1 项目背景90年代的我们,对小时候的一些经典街机游戏肯定是印象深刻,像“飞机大战”、“超级玛丽”、“坦克大战”等,这些游戏伴随了我们童年,怀旧经典,重温这些经典的游戏,我选择“飞机大战”作为设计的项目。
java编程飞机大战课程设计
java编程飞机大战课程设计一、课程目标知识目标:1. 让学生理解Java编程基本概念,掌握面向对象编程思想;2. 让学生掌握Java中数组、循环、条件语句等基本语法结构;3. 让学生了解游戏开发的基本流程和原理。
技能目标:1. 培养学生运用Java编程语言设计飞机大战游戏的能力;2. 培养学生分析问题、解决问题的能力;3. 培养学生团队协作、沟通交流的能力。
情感态度价值观目标:1. 激发学生对编程的兴趣和热情,培养计算机科学素养;2. 培养学生勇于尝试、克服困难的精神,提高自信心;3. 培养学生遵守游戏规则,树立公平竞争的意识。
分析课程性质、学生特点和教学要求,将课程目标分解为以下具体学习成果:1. 学生能够独立编写Java程序,实现飞机大战游戏的基本功能;2. 学生能够运用所学知识,优化飞机大战游戏的性能和体验;3. 学生能够在团队合作中发挥积极作用,共同完成任务;4. 学生能够表达自己对编程和游戏的看法,分享学习心得和经验。
二、教学内容本课程教学内容主要包括以下几部分:1. Java编程基础:回顾Java基本语法,如数据类型、变量、运算符、数组等,为学生编写飞机大战游戏打下基础。
2. 面向对象编程:介绍类、对象、继承、多态等概念,使学生能够运用面向对象编程思想设计游戏。
教材章节:第1章 Java概述,第2章 面向对象编程基础。
内容列举:数据类型、变量、运算符、数组、类、对象、继承、多态。
3. Java图形用户界面:讲解Swing图形用户界面编程,使学生能够为飞机大战游戏设计界面。
教材章节:第6章 Java图形用户界面。
内容列举:JFrame、JPanel、事件处理、绘图。
4. 游戏开发原理:介绍游戏开发的基本流程、设计模式,使学生了解游戏开发的一般方法。
教材章节:第10章 游戏开发。
内容列举:游戏循环、游戏状态、游戏设计模式。
5. 飞机大战游戏设计:结合所学知识,指导学生进行飞机大战游戏的设计与实现。
飞机大战实验报告
飞机大战实验报告专业:网络工程132班学号:*********姓名:孙**计算机科学与技术学院二零一六年十二月一、软件运行所需要的软硬件环境本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。
本机器的配置如下:处理器:CORE i7主频:1.2Hz以上内存:4G以上硬盘:HHD 50G编程语言:Java开发环境:windows7开发软件:Eclipse Mars二、游戏流程1.用户打开游戏,进入开始菜单。
2.用户点击开始游戏按钮,进入游戏界面;3.用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞;4.游戏失败后,显示本次游戏得分,用的秒数和水平;5.退出游戏三、主要代码1、准备代码设置窗口使用双缓冲使飞机不闪烁Constant设置窗口大小package com.ahut.准备代码;public class Constant {public static final int GAME_WIDTH = 350;public static final int GAME_HEIGHT = 600;}package com.ahut.准备代码;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.IOException;import .URL;public class GameUtil {private GameUtil () {}public static Image getImage(String path) {BufferedImage bi = null;try {URL u = GameUtil.class.getClassLoader().getResource(path);bi = javax.imageio.ImageIO.read(u);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return bi;}}package com.ahut.准备代码;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class MyFrame extends Frame{public void lauchFrame() {setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);setLocation(100, 100);setVisible(true);new PaintThread().start();addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {System.exit(0);}});}private Image offScreenImage = null;public void update(Graphics g) {if (offScreenImage == null)offScreenImage = this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHT);Graphics gOff = offScreenImage.getGraphics();paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}class PaintThread extends Thread {public void run() {while (true) {repaint();try {Thread.sleep(40);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}主代码飞机:package com.ahut.plane;import java.awt.Graphics;import java.awt.event.KeyEvent;import com.ahut.准备代码.GameUtil;public class Plane extends GameObject {private boolean left, up, right, down;private boolean live = true;public void draw(Graphics g) {if (live) {g.drawImage(img, (int)x, (int)y, null);move();}}public void addDirection(KeyEvent e) {switch (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_LEFT: //左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) {x -= speed;}if (right) {x += speed;}if (up) {y -= speed;}if (down) {y += speed;}}public Plane(String imgpath, double x, double y) { this.img = GameUtil.getImage(imgpath);this.width = img.getWidth(null);this.height = img.getHeight(null);this.x = x;this.y = y;}public Plane() {}public void setLive(boolean live) {this.live = live;}public boolean isLive() {return live;}}子弹:package com.ahut.plane;import java.awt.Color;import java.awt.Graphics;import java.awt.Rectangle;import com.ahut.准备代码.Constant;public class Bullet extends GameObject {double degree;public Bullet() {degree = Math.random() * Math.PI * 2;x = Constant.GAME_WIDTH / 2;y = Constant.GAME_HEIGHT / 2;width = 10;height = 10;}public Rectangle getRect() {return new Rectangle((int)x, (int)y, width, height);}public void draw(Graphics g) {Color oldColor = g.getColor();g.setColor(Color.yellow);g.fillOval((int)x, (int)y, width, height);x += speed * Math.cos(degree);y += speed * Math.sin(degree);if (y > Constant.GAME_HEIGHT - height || y < 30) {degree = -degree;}if (x < 0 || x > Constant.GAME_WIDTH - width) {degree = Math.PI - degree;}g.setColor(oldColor);}}游戏对象:package com.ahut.plane;import java.awt.Image;import java.awt.Rectangle;public class GameObject {Image img;double x,y;int speed=5;int width,height;public Rectangle getRect() {return new Rectangle((int)x, (int)y, width, height);}public GameObject(Image img, double x, double y, int speed, int width,int height) {super();this.img = img;this.x = x;this.y = y;this.speed = speed;this.width = width;this.height = height;}public GameObject() {}}主线程package com.ahut.plane;import java.awt.Color;import java.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 com.ahut.准备代码.GameUtil;import com.ahut.准备代码.MyFrame;public class PlaneGameFrame extends MyFrame {Image bg = GameUtil.getImage("image/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);//检测跟飞机的碰撞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, 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 x, int y, Color color) { Color c = g.getColor();g.setColor(color);Font f = new Font("宋体", Font.BOLD, size);g.setFont(f);g.drawString(str, x, y);g.setColor(c);}public void launchFrame() {uchFrame();addKeyListener(new KeyMonitor());for (int i = 0; i < 10; i++) {Bullet b = new Bullet();bulletList.add(b);}startTime = new Date();}class KeyMonitor extends KeyAdapter {@Overridepublic void keyPressed(KeyEvent e) {p.addDirection(e);}@Overridepublic void keyReleased(KeyEvent e) {p.minusDirection(e);}}public static void main(String[] args) {new PlaneGameFrame().launchFrame();}}四、游戏实现截图五、实验总结JAVA和EclipsexMars是一款非常好的面向对象开发语言和平台,通过这一段时间的JAVA 程序开发,我感觉到尽管的是不同的语言和平台,开发程序一样需要动脑和努力,每一款软件或者游戏都不是一朝一夕能制作出的,都需要大量的构思和编程,学习好软件工程这门课对日后的编程很有用,最后还有繁琐的调试检查运行时的错误,通过这次接触JAVA我今后会更努力的学习它。
java课课程设计飞机大战
java课课程设计飞机大战一、教学目标本节课的教学目标是让学生掌握Java编程的基本语法和面向对象编程思想,能够运用Java编写简单的游戏程序。
具体来说,知识目标包括:1.理解Java编程语言的基本语法和数据结构。
2.掌握面向对象编程的基本概念,如类、对象、封装、继承和多态。
3.了解Java的图形用户界面编程技术。
技能目标包括:1.能够使用Java编写简单的控制台程序。
2.能够运用面向对象编程思想设计和实现简单的游戏程序。
3.能够利用Java的图形用户界面编程技术创建游戏界面。
情感态度价值观目标包括:1.培养学生的编程兴趣,提高学生对计算机科学的热爱。
2.培养学生解决问题的能力和团队合作精神。
3.培养学生良好的编程习惯和职业道德。
二、教学内容本节课的教学内容主要包括Java编程语言的基本语法、面向对象编程思想和图形用户界面编程技术。
具体安排如下:1.引入Java编程语言的基本语法,如变量、数据类型、运算符、控制语句等。
2.讲解面向对象编程的基本概念,并通过实例让学生理解类和对象的关系。
3.介绍Java的图形用户界面编程技术,如Swing和AWT,并演示如何创建简单的游戏界面。
4.引导学生运用所学的知识编写一个简单的飞机大战游戏程序,巩固所学内容。
三、教学方法为了激发学生的学习兴趣和主动性,本节课将采用多种教学方法,如讲授法、案例分析法和实验法等。
具体安排如下:1.采用讲授法讲解Java编程语言的基本语法和面向对象编程思想。
2.通过案例分析法让学生了解Java的图形用户界面编程技术,并引导学生动手实践。
3.利用实验法让学生分组合作,编写一个简单的飞机大战游戏程序,培养学生的实际编程能力。
四、教学资源为了支持教学内容和教学方法的实施,本节课将准备以下教学资源:1.教材:《Java编程思想》或《Java核心技术》。
2.参考书:《Java编程指南》或《Java编程实战》。
3.多媒体资料:教学PPT、Java编程教程视频。
飞机大战程序设计报告
程序设计综合实践实习报告一、实习题目:飞机大战游戏二、实习时间:2014.9.20-2014.9.30实习地点:J13-132、232三、实习任务:通过项目实战,掌握C++面向对象编程的基础技术和Windows 应用程序的编程方法,能够运用MFC技术及其开发环境进行小项目的开发。
四、小组分工说明:五、实习成绩六、指导教师对实习的评语:指导教师(签章):年月日飞机大战游戏1.实习目的1.1使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本素质和技术能力要求。
1.2使学生掌握C++及Window程序设计的基本技术,能够运用MFC技术及其开发环境进行小型项目的开发。
1.3重点培养学生的独立创新精神和查阅资料能力,提高其口头和书面的沟通能力。
1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决问题的能力1.5重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编程习惯。
2. 实习计划1、9.20—9.21先建立CGameObject 类,利用继承机制,根据此类进行依次的派生。
2、9.22—9.25再建立派生类:Bomb,Ball,Enemy,MyPlane,Explosion等,并实现各自功能。
3、9.26—9.29在xxView.cpp中的OnTimer中实现背景的设置,对敌机,导弹,敌机子弹,爆炸效果的绘制,以及敌机子弹和战机,导弹和敌机的碰撞检验,并添加爆炸效果4、9.29—9.30最后释放pDC以及定时器3.实习过程3.1 技术准备透明贴图技术绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。
在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。
整个功能的实现过程如下:(1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图;(2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中;(3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色;(4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图设备描述表中存放的位图与位图设备描述表中的位图一样;(5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;(6) 把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作;(7) 重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操作绘制到对话框上;(8) 最后把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指针,最后把新建的设备描述表也删除。
java飞机大战的课程设计
java飞机大战的课程设计一、课程目标知识目标:1. 让学生掌握Java基本语法和程序结构,特别是循环结构、条件语句和面向对象编程基础;2. 使学生了解游戏开发中的坐标系、图形用户界面(GUI)设计以及事件处理机制;3. 帮助学生理解游戏开发中的线程概念及其运用。
技能目标:1. 培养学生运用Java语言编写简单的飞机大战游戏的能力;2. 培养学生分析问题、解决问题的能力,特别是在游戏逻辑设计方面的应用;3. 提高学生在团队合作中沟通协调和共同开发的能力。
情感态度价值观目标:1. 培养学生对编程和计算机科学的兴趣,激发学生的创新精神和实践能力;2. 培养学生面对困难时勇于尝试、积极进取的态度,增强学生的自信心;3. 通过团队合作,培养学生的团队精神,提高学生的集体荣誉感。
课程性质分析:本课程为信息技术相关课程,旨在通过实践性项目——飞机大战游戏开发,让学生将所学的Java编程知识应用于实际项目中,提高学生的实践能力和创新能力。
学生特点分析:考虑到学生所在年级,已具备一定的Java编程基础,对游戏开发有一定兴趣,但可能缺乏实际项目经验,需要通过本课程进一步巩固知识,提高实践技能。
教学要求:根据课程性质和学生特点,课程目标应具体、可衡量,注重理论与实践相结合。
在教学过程中,注重启发式教学,引导学生主动思考,培养学生解决问题的能力。
同时,关注学生的情感态度,营造积极、和谐的学习氛围。
通过分解课程目标为具体的学习成果,便于后续教学设计和评估。
二、教学内容1. Java基本语法回顾:包括变量定义、数据类型、运算符、循环结构(for、while)、条件语句(if-else、switch)等;2. 面向对象编程基础:类与对象、构造方法、封装、继承、多态等;3. 图形用户界面(GUI)设计:AWT和Swing图形用户界面组件、布局管理器、事件处理机制;4. 游戏开发中的线程概念:线程的创建、同步、生命周期等;5. 游戏设计:游戏逻辑、坐标系、角色控制、碰撞检测、得分系统等;6. 项目实践:分组进行飞机大战游戏的开发,结合所学知识,完成游戏设计、编码、测试和优化。
飞机大战游戏设计报告
JAVA期中作业飞机大战目录飞机大战游戏设计报告1、游戏名称 (1)2、游戏初步框架: (1)3、游戏规则: (1)4、需求分析 (2)4.1功能需求: (2)4.2数据需求: (3)4.3用户需求: (3)4.4行为需求: (3)5、系统设计 (4)5.1 系统模块划分 (4)5.2 主要功能模块 (5)6、详细设计 (6)6.1 开发工具 (6)6.2 游戏界面设计 (6)飞机大战游戏设计报告1、游戏名称《飞机大战》2、游戏初步框架:游戏元素:游戏背景、不同种类的飞机、敌机游戏成分:碰撞之后的血量计算、分数统计、暂停恢复、数据存储游戏的总体设计:分为三个场景,第一个为游戏的进入场景,第二个为游戏的主界面场景,第三个为游戏结束场景,游戏分别有不同关卡,每一关有自己的剧情设计,玩法各一。
游戏开始场景就是开场背景,资源加载以及初始化处理,比如数据存储等。
游戏主界面场景是游戏核心,主要展示游戏过程,在游戏过程中计算得分,玩家战机血量等。
游戏结束界面是统计当前分数,显示玩家的最高分记录,并给出菜单的进一步设计。
3、游戏规则:(1)玩家战机数量为1。
(2)玩家可自由选择战机。
(3)玩家飞机可通过键盘控制战机上下左右移动。
(4)玩家子弹攻击敌机,敌机血量减少。
(5)敌机有计算机自主控制(6)敌机从界面上端出现,不能反向运动,不能左右移动。
(7)敌机数量随机,由计算机控制。
(8)敌机可发送子弹,若战机被击中,血量减少,血量减少到一定程度,战机坠毁,游戏结束。
(9)子弹具有一定的速度。
(10)玩家可在一段时间内发送导弹清除屏幕中除Boss外的敌机。
4、需求分析4.1功能需求:飞机大战需要实现的主要功能如下:(1)用户进入游戏开始菜单可以选择开始游戏、退出游戏。
(2)战机可根据玩家的操作自由移动,但不可移出窗体外。
(3)玩家飞机以一定速度自下而上飞行,用户可以控制飞机上下左右移动。
(4)玩家飞机可连续发射子弹,子弹位置由战机起始位置决定,用户通过操控飞机位置来扫射飞机。
飞机大战游戏设计报告
飞机大战游戏设计报告一、需求分析飞机大战是一款经典的射击类游戏,玩家通过操作飞机并不断射击敌机,躲避敌机的攻击,获取高分。
游戏的主要目标是击败所有敌机,并活到最后,获得最高分数。
二、游戏流程设计1.开始界面:游戏开始时展示游戏的名称、背景音乐的控制按钮以及开始按钮。
2.游戏界面:游戏开始后,玩家会看到自己的飞机在屏幕底部,并且敌机会从屏幕顶部射击向玩家飞机。
玩家通过触摸或键盘控制自己的飞机移动,左手指向左,右手指向右,同时通过触摸或键盘射击按钮进行攻击。
3.游戏规则:-玩家可以通过左右移动来躲避敌机的攻击,同时用子弹攻击敌机。
-敌机被击中后会掉落道具,玩家可以通过接触道具来增加分数、生命值或者升级武器。
-玩家被敌机击中后,生命值减少,当生命值为0时,游戏结束。
-游戏结束后,会显示本局游戏得分和最高得分,并提供重新开始按钮和返回主菜单按钮。
三、游戏功能设计1.角色设计:-玩家飞机:可以左右移动,并发射子弹攻击敌机,有生命值。
-敌机:从屏幕顶部向下移动,发射子弹攻击玩家飞机,玩家可以通过攻击敌机获得分数。
-道具:掉落敌机后,玩家可以通过接触道具获得特殊能力,如增加分数、生命值或者升级武器。
2.武器设计:-玩家飞机的初始武器是普通子弹,每发射一颗消耗一定的能量。
-玩家可以通过接触道具来升级武器,拥有更强大的攻击能力。
-不同武器有不同的攻击方式和能量消耗。
3.难度设计:-游戏可以设置多个难度级别,随着游戏进行逐渐增加敌机的数量和速度。
-敌机的攻击方式和频率也会逐渐增加。
4.音效设计:-游戏中应该添加背景音乐,使游戏更具氛围。
-玩家飞机发射子弹、敌机爆炸、道具掉落等均应有相应的音效,增加游戏的趣味性和真实感。
四、游戏界面设计1.开始界面:简洁明了,显示游戏名称,背景音乐的控制按钮以及开始按钮。
2.游戏界面:-上方显示玩家得分和生命值。
-屏幕底部显示玩家飞机,并通过左右移动来躲避敌机的攻击。
-敌机从屏幕顶部向下移动,并发射子弹攻击玩家飞机。
Java算法实训(飞机大战)实验报告
淮阴工学院实验报告2016 ------- 2017 学年第 1 学期学院计算机与软件工程学院课程名称算法实训班级达内1151学号 1151331134姓名陈龙指导教师达内讲师算法实训实验报告一、实训目的及意义进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java 开发的实战经验。
学习java的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。
通过实习,巩固大二所学专业的基本知识,提高分析、判断和处理实际问题的能力,锻炼自己的实际动手能力,增强自己的团队协作意识,了解软件开发的思考角度和主要流程。
为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
二、实训任务实习期间,通过学习一个简单的Java程序——飞机大战,了解和掌握Java 编程的基础,如构造器、API接口等。
最后可以独立完成一个小程序。
三、实习训语言Java的特点1.Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
另一方面,Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
特别地,Java 语言不使用指针,并提供了自动的废料收集,不必为内存管理而担忧。
2、Java语言是一个面向对象的Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
Java语言全面支持动态绑定,而C++ 语言只对虚函数使用动态绑定。
总之,Java语言是一个纯的面向对象程序设计语言。
3、Java语言是分布式的Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。
飞机大战设计报告+开发计划讲解
项目设计报告项目名称:进击的飞机目录一、游戏整体概括 (3)1.1 游戏概括 (3)1.2 开发环境 (3)二、系统需求分析 (4)2.1用户功能需求分析 (4)2.2 系统性能要求 (4)2.3业务流程分析 (4)三、系统总体设计 (5)3.1 系统功能模块分析 (5)3.2 系统类关系图 (5)3.3 系统总体设计 (6)四、系统详细设计 (8)4.1 开发工具简介 (8)4.2 游戏界面设计 (8)4.2.1游戏开始界面ReadyView (8)4.2.2游戏主界面MainView (9)4.2.2.1 鼠标控制玩家飞机移动 (10)4.2.2.2 碰撞逻辑 (10)4.2.2.3 游戏暂停 (11)4.2.3帮助界面HelpView (11)4.2.4游戏失败界面EndView (12)五、游戏开发计划 (13)5.1游戏开发计划表 (13)5.2 游戏开发计划具体分工 (15)一、游戏整体概括1.1游戏概括本项目是一个基于android平台的、集休闲娱乐、互动交友、丰富生活等诸多元素与一身的手机竞技类游戏。
旨在通过此应用的设计与推广,为社会大众的生活增添乐趣与新意。
本项目产品名称为“进击的飞机”,功能丰富完善,界面简洁流畅,游戏方式简单,玩家易于上手。
1.2开发环境开发环境:Windows 7 & Windows 8.1开发工具:Eclipse开发语言:Java开发平台:Android ADT二、系统需求分析2.1用户功能需求分析由于本游戏交互性好,简单易操作,对用户并没有特殊的要求。
一般用户经过几分钟练习就可以掌握游戏规则。
2.2 系统性能要求①实时性:本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。
②易操作性:单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。
这是本应用对于操作性的要求。
2.3业务流程分析三、系统总体设计3.1 系统功能模块分析当前应用使用的SurfaceView来绘制的页面,因此相对来说大部分逻辑都是由View类来做处理的。
java飞机大战课程设计
java飞机大战 课程设计一、课程目标知识目标:1. 理解Java基本语法和面向对象编程概念;2. 掌握使用Java编写图形用户界面(GUI)程序;3. 学会运用数组、循环和条件语句实现游戏逻辑;4. 了解声音、图像等多媒体元素在Java中的应用。
技能目标:1. 能够运用面向对象思想设计和实现飞机大战游戏中的角色、子弹和敌机;2. 独立编写游戏主循环,实现角色移动、发射子弹和敌机生成等功能;3. 掌握游戏音效和图像的加载与播放;4. 学会调试和优化代码,解决程序运行中的问题。
情感态度价值观目标:1. 培养学生对编程的兴趣和热情,激发学习动力;2. 培养学生的团队协作意识,学会与他人共同解决问题;3. 培养学生的创新思维,鼓励尝试不同游戏设计;4. 培养学生面对困难不退缩,勇于克服问题的精神。
课程性质:本课程为信息技术课程,旨在让学生在实践操作中掌握Java编程基础,培养编程兴趣和实际操作能力。
学生特点:本课程针对八年级学生,他们对新鲜事物充满好奇,动手能力强,但注意力容易分散,需要通过趣味性的教学活动保持兴趣。
教学要求:结合学生特点,教师应采用任务驱动、案例教学等方法,引导学生主动探究,注重实践操作,确保学生能够达到课程目标所设定的具体学习成果。
同时,对学生的学习成果进行有效评估,为后续教学提供依据。
二、教学内容1. Java基本语法与面向对象编程:- 数据类型、变量、运算符;- 控制结构:分支、循环;- 面向对象:类与对象、构造方法、继承与多态。
2. Java图形用户界面编程:- JFrame、JPanel的使用;- 事件处理机制;- 常用组件的布局与绘制。
3. 游戏设计:- 游戏角色设计:玩家飞机、敌机、子弹;- 游戏逻辑实现:移动、碰撞检测、得分与生命值;- 游戏音效与图像加载。
4. 教学大纲:- 第一周:Java基本语法复习,介绍面向对象编程概念;- 第二周:图形用户界面编程,实现游戏窗口;- 第三周:设计游戏角色,编写角色移动和发射子弹功能;- 第四周:实现敌机生成和碰撞检测,完善游戏逻辑;- 第五周:加载游戏音效和图像,优化游戏体验。
基于Java的飞机大战游戏的设计与实现
基于Java的飞机大战游戏的设计与实现摘要飞机大战是电脑游戏发展史中早期最为经典的游戏之一,经常能在掌上游戏机、手机以及电脑上见到这个游戏。
不过,以往常见的飞机大战游戏是二维平面上的,并且大多以黑白的形式出现,当然在电脑上可以看到多种颜色的飞机大战。
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
本游戏是一个基于java的飞机大战游戏,利用Eclipse平台实现经典的飞机大战游戏。
游戏主要涉及了游戏状态控制功能、游戏难度的调整、游戏界面绘画功能、玩家游戏控制功能,最终展示了游戏开发的基本开发过程和设计思路。
关键词:飞机大战;游戏;java;Eclipse平台Design and implementation of airplane wargame based on JavaAbstractLightning is the history of the development of computer games in the early one of the most classic game, often on a handheld game consoles, mobile phone and computer to see this game. However, the previous common lightning game is two-dimensional plane, and mostly in black and white, in the course of the computer can see lightning in color.Since Java is very popular after the launch, the rapid development of the C + + language to form a strong impact. Java technology has excellent versatility, efficiency, platform portability and security, widely used in personal PC, data center, game consoles, scientific supercomputers, cell phones and the Internet, also has the world's largest developer of professional community . In the world of cloud computing and mobile Internet industry environment, Java and more have a significant advantage and broad prospects.This game is a game based on the realization of Java lightning, lightning classic game based on Eclipse platform. The game is mainly involved in the game state control function, the difficulty of the game, the game interface to adjust the drawing function, game player control function, finally shows the basic development process of game development and design ideas.Keywords: lightning; game; Java; Eclipse platform目录摘要 (i)Abstract (ii)1 引言 (1)1.1 项目背景 (1)1.2 国内外研究现状 (1)1.3 项目主要工作 (1)1.4 本文组织结构 (2)2 开发平台与开发技术 (3)2.1 Eclipse (3)2.2 Eclipse平台 (3)2.3 Java (4)2.4 Java语言的特点与优势 (5)2.5 java技术在游戏开发中的应用 (6)2.6 UML (8)3 飞机大战游戏模块设计 (9)3.1 用户需求分析 (9)3.2 可行性分析 (9)3.3 总体设计原则 (10)3.4 功能模块设计 (11)3.4.1 游戏状态控制功能 (11)3.4.2 游戏难度的调整 (11)3.4.3 游戏界面绘画功能 (11)3.4.4 玩家游戏控制功能 (11)3.5 游戏难点分析 (11)4 飞机大战功能实现 (12)4.1 游戏首页的实现 (12)4.1.1 界面实现 (12)4.1.2 流程图 (13)4.1.3 核心代码 (14)4.2 游戏开始模块的实现 (15)4.2.1 界面实现 (15)4.2.2 流程图 (16)4.2.3 核心代码 (17)4.3 发射子弹模块的实现 (18)4.3.1 界面实现 (18)4.3.2 流程图 (19)4.3.3 核心代码 (20)4.4 积分模块的实现 (22)4.4.1 界面的实现 (22)4.4.2 核心代码 (23)4.5 碰撞逻辑 (26)4.5.1 碰撞画面的实现 (26)4.5.2 核心代码 (27)4.6 游戏玩家与BOSS的血条 (28)4.6.1 玩家血条和BOSS血条的实现 (28)4.6.1 核心代码 (29)4.7 游戏操作的实现 (30)4.7.1 核心代码 (30)5 系统测试 (31)5.1 测试的定义及其重要性 (31)5.1.1 测试的定义 (31)5.1.2 测试的重要性 (31)5.2 测试实例的研究与选择 (31)5.3 测试结果 (32)总结和展望 (33)参考文献 (34)致谢 (35)外文原文 (36)中文翻译 (42)1 引言1.1 项目背景90年代的我们,对小时候的一些经典街机游戏肯定是印象深刻,像“飞机大战”、“超级玛丽”、“坦克大战”等,这些游戏伴随了我们童年,怀旧经典,重温这些经典的游戏,我选择“飞机大战”作为设计的项目。
飞机大战实训报告总结java -回复
飞机大战实训报告总结java -回复Java实训报告总结:飞机大战实训一、引言飞机大战是一款经典的游戏,其核心玩法是玩家操控飞机进行战斗,消灭敌机并击败关卡Boss。
为了学习和掌握Java编程语言的基本语法和面向对象编程的思想,我们进行了飞机大战实训项目。
本文将对该实训项目进行总结和归纳,详细介绍实训的过程和各个模块的设计与实现。
二、项目概述1. 项目背景飞机大战实训项目是为了让我们学习和运用Java编程语言的基础知识和面向对象的思想,掌握基本的游戏开发技能。
2. 项目目标通过实践,达到以下目标:(1) 熟悉Java编程语言的基本语法和面向对象编程的思想;(2) 掌握游戏开发的基本流程和常用技术;(3) 实践团队协作与沟通能力;(4) 提升问题解决能力和编程实际操作能力。
三、项目实施1. 分析与设计项目开始前,我们小组成员进行了对游戏需求的分析与设计。
首先,明确了游戏的基本功能模块和玩法规则。
然后,我们绘制了UML类图,定义了所需要的各个类及其之间的关系。
这一步骤对于后续的开发工作具有重要的指导意义。
2. 编码实现根据分析与设计的结果,我们开始进行编码实现。
首先,我们搭建了项目的基础框架,包括游戏窗口和图像资源的加载。
然后,我们根据UML类图中的定义,依次实现了飞机、子弹、敌机、Boss等各个类及其相关的功能方法。
编码过程中,我们注意代码的规范性和可读性,并进行了适当的功能封装和模块化设计。
3. 调试与测试在编码完成后,我们进行了代码的调试与测试。
首先,我们保证游戏的基本功能能够正常运行,包括飞机的移动、子弹的发射和敌机的生成等。
然后,我们对各个功能模块和类进行了逐一测试,修复了发现的问题和bug。
最后,我们对游戏进行了全面性能测试,确保游戏在各种情况下都能够稳定运行。
4. 优化与改进在游戏的调试与测试过程中,我们也发现了一些性能问题和改进的空间。
我们对游戏逻辑进行了优化,采用了线程池对敌机的生成和移动进行了控制,提高了游戏的性能和流畅度。
JAVA课程设计-飞机大战
JAVA课程设计-飞机⼤战JAVA课程设计-飞机⼤战1.团队名称、团队成员介绍1.1 团队名称:做个飞机哦1.2团队成员介绍:余俊良(组长):编写博客、游戏主界⾯设计与实现、英雄机与⼦弹类的实现、场景设计林祥涛:游戏⾳效设计、玩家类编码与设计、⼩Boss类设计、ppt设计⾼凯:画uml类图、积分榜设计、游戏道具定义实现、游戏状态设计2.项⽬git地址3.项⽬git提交记录截图4.前期调查及游戏介绍玩家通过控制飞机发射⼦弹击中不同的敌机获取积分,击中快速移动的浮标获得奖励(获得双倍⼦弹奖励、⽣命值增加)。
游戏过程伴随着背景⾳乐,⽽且击中敌机或⽣命耗尽后会产⽣相应⾳效。
与敌机相撞则扣除⽣命值1点,直到⽣命值为0,游戏结束,玩法简单有趣,锻炼反应能⼒。
5.项⽬功能架构图、主要功能流程图6.⾯向对象设计包图、类图包图类图7.项⽬运⾏截图主界⾯显⽰英雄机普通敌机精英机⼩boss切换飞机双倍⼦弹模式排⾏榜奖励游戏结束8.项⽬关键代码8.1⿏标事件使⽤⿏标事件监听MouseAdapter对⿏标进⾏监听,当⿏标移动时获取⿏标的坐标,点击时开启游戏,⿏标移出窗体后游戏暂停,移⼊则继续。
MouseAdapter m = new MouseAdapter() {// ⿏标移动事件public void mouseMoved(MouseEvent e) {// ⿏标坐标获取if (Running == state) {hero.moveTo(e.getX(), e.getY());}}// ⿏标点击事件public void mouseClicked(MouseEvent e) {if (Start == state) {// 点击开始游戏state = Running;} else if (Over == state) {// 游戏结束后点击重新开始state = Start;score = 0;// 积分,飞⾏物重置hero = new Heroplane();flyobj = new ArrayList<AbstractFlyingObject>();bullets = new ArrayList<Bullet>();}}// ⿏标移出事件public void mouseExited(MouseEvent e) {if (Running == state) {// 移出窗体,游戏暂停state = Pause;}}// ⿏标移⼊事件public void mouseEntered(MouseEvent e) {// 移回窗体,游戏继续if (Pause == state) {state = Running;}}};8.2双缓冲技术消除闪屏闪屏的出现是因为在while循环中执⾏线程时每循环⼀次便会重绘⼀次,⽽update()⽅法即会先清理掉当前的画⾯再重新绘制新的画⾯。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国地质大学长城学院Java 程序设计题目基于Java的打飞机游戏设计与实现系别信息工程系专业计算机科学与技术学生姓名马辉学号*********指导教师田玉龙2015 年 6 月18 日基于Java的打飞机游戏设计与实现1、软件运行所需要的软硬件环境本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。
本机器的配置如下:处理器:AMD A4 或英特尔同级别处理器主频:1.2Hz以上内存:1G以上硬盘:HHD 50G或更高采用的主要技术和软件编程语言:Java开发环境:windows7开发软件:Eclipse 3.72、软件开发环境配置JA V A_HOME = F:\JA V A\jdkPATH = % JA V A_HOME%\bin;%JA V A_HOME%\lib;%JA V A_HOME%\jre\lib;CLASSPATH = %JA V A_HOME%\lib;%JA V A_HOME%\jre\lib;3、软件功能框图4、软件所实现的截图5、主要功能部分的源代码import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Random;import java.util.Vector;import javax.swing.JOptionPane;import javax.swing.Timer;public class Controller extends KeyAdapter{public static Vector<Bang> bangs = new Vector<Bang>();public static Vector<EBullet> ebullets = new Vector<EBullet>();public static Vector<PBullet> pbullets = new Vector<PBullet>();public static Vector<EPlane> eplanes = new Vector<EPlane>();public static PPlane pplane = new PPlane();private GamePanel gamePanel;private Random random = new Random();public static int baoZhaNum;public Controller(Vector<Bang> bang,Vector<EBullet> ebullet,Vector<PBullet> pbullet,Vector<EPlane> eplane,PPlane pplane,GamePanel gamePanel) { super();this.bangs = bang;this.ebullets = ebullet;this.pbullets = pbullet;this.eplanes = eplane;this.pplane = pplane;this.gamePanel = gamePanel;//使用定时器每隔一秒为每一个敌机产生一个子弹Timer timer = new Timer(1000, new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubfor(int i=0;i < eplanes.size();i++){EBullet ebullet = new EBullet(eplanes.elementAt(i).x,eplanes.elementAt(i).y,8,2);ebullets.add(ebullet);}}});timer.start(); //声明定时器之后就开启定时器}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stubswitch (e.getKeyCode()){case KeyEvent.VK_UP:PPlane.UP = true;break;case KeyEvent.VK_DOWN:PPlane.DOWN = true;break;case KeyEvent.VK_LEFT:PPlane.LEFT = true;break;case KeyEvent.VK_RIGHT:PPlane.RIGHT = true;break;case KeyEvent.VK_X:PPlane.isFired = true;break;}}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stubswitch (e.getKeyCode()){case KeyEvent.VK_UP:PPlane.UP = false;break;case KeyEvent.VK_DOWN:PPlane.DOWN = false;break;case KeyEvent.VK_LEFT:PPlane.LEFT = false;break;case KeyEvent.VK_RIGHT:PPlane.RIGHT = false;break;case KeyEvent.VK_X:PPlane.isFired = false;}}public void StartRun(){new Thread(){public void run(){int count = 0; //通过count控制子弹避免连续按发送键时子弹连成线while(true){//本机移动pplane.pplaneMove();//添加本机子弹if(PPlane.isFired && count%5==0){PBullet pbullet1 = new PBullet(pplane.x+65, pplane.y+50, 8, 15);pbullets.add(pbullet1);PBullet pbullet2 = new PBullet(pplane.x+50, pplane.y+50, 8, 15);pbullets.add(pbullet2);PBullet pbullet3 = new PBullet(pplane.x+35, pplane.y+50, 8, 15);pbullets.add(pbullet3);PBullet pbullet4 = new PBullet(pplane.x+20, pplane.y+50, 8, 15);pbullets.add(pbullet4);}count++;//让本机子弹移动并判断是否打中敌机for(int i=0;i < pbullets.size();i++){pbullets.elementAt(i).bulletMove();int index = pbullets.elementAt(i).isPbulletHitEplane();if(index != -1) //不等于-1 证明打中了并产生爆炸{Bang bang = new Bang(pbullets.elementAt(i).x,pbullets.elementAt(i).y,30,30);bangs.add(bang);baoZhaNum++;eplanes.remove(index);}}//判断本机子弹出界就移除for(int i=0;i < pbullets.size();i++){if(pbullets.elementAt(i).y <= 0){pbullets.remove(i);//System.out.println("子弹移除");}}//添加敌机if(eplanes.size() < Global.ENEMY_NUMBER){int x = random.nextInt(Global.FRAME_WIDTH);int y = -30;EPlane eplane = new EPlane(x, y, 30, 30);eplanes.add(eplane);}//让敌机移动并且判断出界for(int i=0;i < eplanes.size();i++){eplanes.elementAt(i).eplaneMove();if(eplanes.elementAt(i).y >= Global.FRAME_HEIGHT){ eplanes.remove(i);}}//让敌机子弹移动并将超过边界的敌机子弹移除for(int i=0;i < ebullets.size();i++){ebullets.elementAt(i).bulletMove();if(ebullets.elementAt(i).isEBulletHitPPlane()){ebullets.elementAt(i).isUsed = true;PPlane.life -= 2;}if(ebullets.elementAt(i).y >= Global.FRAME_HEIGHT){ ebullets.remove(i);}}for(int i=0;i < bangs.size();i++){if(bangs.elementAt(i).isBang == true){bangs.remove(i);}}try {sleep(30);} catch (InterruptedException e) {e.printStackTrace();}JudgeLife();gamePanel.display(bangs, ebullets, pbullets, eplanes, pplane);}}}.start();}public void JudgeLife(){if(!pplane.isAlive()){int result = JOptionPane.showConfirmDialog(gamePanel,"继续重玩?","提示",JOptionPane.YES_OPTION);if(result==0){newGame();}else{System.exit(0);}}}public void newGame(){bangs.clear(); //重玩必须将一切对象都清空ebullets.clear();pbullets.clear();eplanes.clear();pplane = new PPlane(250, 400, 100, 100);baoZhaNum = 0;pplane.life = 100; //不重置生命值在进行JudgeLife判断会一直出现是否重玩的对话框PPlane.DOWN = false; //重新开始游戏之后必须重置所有的静态变量否则会保存上一次的静态变量值运动和发射子弹PPlane.UP = false;PPlane.LEFT = false;PPlane.RIGHT = false;PPlane.isFired = false;}}public class PBullet extends Bullet{private Image img; //保存子弹的图片private JPanel jpanel;public JPanel getJpanel() {return jpanel;}public void setJpanel(JPanel jpanel) {this.jpanel = jpanel;}public PBullet(int x, int y, int width, int heigth) {super(x, y, width, heigth);img = new ImageIcon("Image/fire.png").getImage();// TODO Auto-generated constructor stub}public void bulletMove() {// TODO Auto-generated method stubthis.y-=20; //子弹的速度一定要大于飞机的速度否则子弹会出现在飞机后面}public void drawMe(Graphics g) {// TODO Auto-generated method stubg.drawImage(img, x, y, width, heigth, jpanel);}//在本机子弹判断是否打中敌机public int isPbulletHitEplane(){for(int j=0;j < Controller.eplanes.size();j++){Rectangle recPbullet = new Rectangle(x,y,width,heigth);Rectangle recEplane = new Rectangle(Controller.eplanes.elementAt(j).x,Controller.eplanes.elementAt(j).y,Controller.eplanes.elementAt(j).w,Controller.eplanes.elementAt(j).h);if(recPbullet.intersects(recEplane)) //判断矩形重叠{return j;}}return -1;}}6、总结JA V A和Eclipse是一款非常好的开发语言和平台,类的建立使编程相对明朗,不同的组件很明确的摆在那,对于头脑不灵活的人来说真的是一款非常清晰明了的开发软件,通过这一段时间的JA V A程序开发,我感觉到尽管的是不同的语言和平台,开发程序一样需要动脑和努力,每一款软件或者游戏都不是一朝一夕能制作出的,都需要大量的构思和编程,最后还有繁琐的检查工作,通过这次接触JA V A我今后会更努力的学习它。