有一个按键按键手机java游戏下载的游戏

四、package和class的关系图
五、代码部分:
1、Constants类
package com.liang.
public class Constants { public static final double FRAME_WIDTH = 400;
public static final double FRAME_HEIGTH = 600; }
2、获取图片的工具类
package com.liang.
import java.awt.Iimport java.awt.image.BufferedIimport java.net.URL;
import javax.imageio.ImageIO;//工具类:获取图片public class GameUtil { public static Image getImage(String imagepath){
= GameUtil.class.getClassLoader().getResource(imagepath);
BufferedImage image =
image = ImageIO.read(url);
}catch(Exception e){
e.printStackTrace();
3、JFrame父类
package com.liang.
import java.awt.event.WindowAimport java.awt.event.WindowE
import javax.swing.JF
public class MyFrame extends JFrame{ /**
* 工具类:框架
*/ private static final long serialVersionUID = 1L; public void launchFrame(){
this.setBounds(200,
100, (int)Constants.FRAME_WIDTH, (int)Constants.FRAME_HEIGTH);
this.setVisible(true);
this.setResizable(false);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent arg0) {
System.exit(0);
new PaintThread().start();
} /*//利用双缓冲处理闪烁问题 private Image offScreenImage = private Graphics goff = @Override public void update(Graphics g) {
//super.update(g);
if(offScreenImage == null){
offScreenImage = this.createImage((int)Constants.FRAME_WIDTH, (int)Constants.FRAME_HEIGTH);
goff = offScreenImage.getGraphics();
paint(goff);//自己调用这个函数
g.drawImage(offScreenImage, 0, 0, null);
//内部类,线程 public class PaintThread extends Thread{
public void run() {
while(true){
repaint();
Thread.sleep(33);
}catch(Exception e){
e.printStackTrace();
4、Bullet类
package com.liang.planeG
import java.awt.C
import java.awt.G
import com.liang.util.C
public class Bullet extends Substance{
//image, body_x, body_y,speed,degree
//private I
public Bullet(){
public Bullet(double x,double y,double speed, double width, double height){
//this.image =
this.speed =
degree = Math.random()*Math.PI * 2;
this.width =
this.height =
public void draw(Graphics g){
//g.drawImage(image, (int)x, (int)y, null);
Color c = g.getColor();
g.setColor(Color.yellow);
g.fillOval((int)x, (int)y, (int)width, (int)height);
g.setColor(c);
void move(){
x += speed * Math.cos(degree);
y += speed * Math.sin(degree);
if(x & 0 || x & Constants.FRAME_WIDTH){
degree = Math.PI -
if(y & 0 || y & Constants.FRAME_HEIGTH){
degree = -
5、plane类package com.liang.planeG
import java.awt.G
import java.awt.I
import com.liang.util.GameU
public class Plane extends Substance{
//判断键盘的方向
private boolean left, right , up,
private boolean alive = //飞机是否被击中
public Plane(){
public Plane(Image image){
this.image =
public Plane(String imagePath){
this.image = GameUtil.getImage(imagePath);
public Plane(String imagePath,double x, double y, double speed) {
this.image = GameUtil.getImage(imagePath);
this.speed =
this.width = image.getWidth(null);
this.height = image.getWidth(null);
public void draw(Graphics g){
if(alive){
g.drawImage(image, (int)x, (int)y, null);
private void move(){
if(right){
public boolean isAlive() {
public void setAlive(boolean alive) {
this.alive =
public boolean isLeft() {
public void setLeft(boolean left) {
this.left =
public boolean isRight() {
public void setRight(boolean right) {
this.right =
public boolean isDown() {
public void setDown(boolean down) {
this.down =
public boolean isUp() {
public void setUp(boolean up) {
6、框架父类package com.liang.planeG
import java.awt.C
import java.awt.F
import java.awt.G
import java.awt.I
import java.awt.event.KeyA
import java.awt.event.KeyE
import java.util.ArrayL
import java.util.D
import com.liang.util.C
import com.liang.util.GameU
import com.liang.util.MyF
public class GameFrame extends MyFrame{
private static final long serialVersionUID = 1L;
Image bg = GameUtil.getImage("Images/background.jpg");
Plane plane = new Plane("Images/plane.PNG",200, 200, 4);//image, 初始化x和y,speed
ArrayList&Bullet& bulletList =
new ArrayList&Bullet&();
Date startT
int count = 0;//防止计时数改变
//String rankI
public void paint(Graphics g) {
g.drawImage(bg, 0, 0, null);
plane.draw(g);
//draw bullets
for(int i = 0; i & bulletList.size(); i++){
Bullet b = (Bullet)bulletList.get(i);
if(plane.isAlive() == true){
b.draw(g);
boolean hit = b.getRect().intersects(plane.getRect());
plane.setAlive(false);
//防止再次碰到,导致计时数改变
if(count == 0){
endTime = new Date();
if(! plane.isAlive()){
paintInfo(g, "
GameOver", 70,260,32,Color.yellow);
paintInfo(g, "key ENTER to again", 65, 60, 23, Color.white);
long time = (endTime.getTime() - startTime.getTime())/1000;
paintInfo(g, time+" seccond", 290, 60, 20, Color.orange);
//等级信息
String rankInformation = Ranking(time);
paintInfo(g, rankInformation, 130, 300, 34, Color.white);
public void paintInfo(Graphics g, String string, double x, double y, int word_size, Color color){
Font font = new Font("正楷",Font.BOLD, word_size);
= g.getColor();
g.setColor(color);
g.setFont(font);
g.drawString(string, (int)x, (int)y);
g.setColor(c);
public String Ranking(long time){
String rankInfo =
switch((int)time/10){
rankInfo = "菜鸟";
rankInfo = "小鸟";
rankInfo = "大鸟";
rankInfo = "鸟人";
default:rankInfo = "凤凰";
return rankI
//内部类,键盘事件
public class MyKeyEvent extends KeyAdapter{
public void keyPressed(KeyEvent event) {
switch(event.getKeyCode()){
case KeyEvent.VK_LEFT:
plane.setLeft(true);
case KeyEvent.VK_RIGHT:
plane.setRight(true);
case KeyEvent.VK_UP:
plane.setUp(true);
case KeyEvent.VK_DOWN:
plane.setDown(true);
public void keyReleased(KeyEvent event) {
switch(event.getKeyCode()){
case KeyEvent.VK_LEFT:
plane.setLeft(false);
case KeyEvent.VK_RIGHT:
plane.setRight(false);
case KeyEvent.VK_UP:
plane.setUp(false);
case KeyEvent.VK_DOWN:
plane.setDown(false);
//重写父类的方法,以便加入监听器
public void launchFrame() {
super.launchFrame();
startTime = new Date();
addKeyListener(new MyKeyEvent());
//增加子弹对象
for(int i = 0; i & 20; i++){
Bullet bullet = new Bullet(Constants.FRAME_WIDTH/2, 20, 3, 10, 10);//x, y, speed
bulletList.add(bullet);
//bullet.get(i).draw(g);
public static void main(String args[]){
new GameFrame().launchFrame();
7、bullet和plane的父类package com.liang.planeG
import java.awt.G
import java.awt.I
import java.awt.R
public class Substance {
//image, body_x, body_y,speech,
protected double x , y ,
protected double width,//the width and height of image
//空构造方法
public Substance(){
public Substance(Image image, double x, double y, double speed,
double width, double height) {
this.image =
this.speed =
this.width =
this.height =
public void draw(Graphics g){
g.drawImage(image,
(int)x, (int)y, null);
//绘制飞机图片所在的长方形,以便进行碰撞事件的判断
public Rectangle getRect(){
return new Rectangle((int)x, (int)y, (int)width, (int)height);
大一下学期做的一个飞机游戏(JAVA)
如果你和我一样还是个菜鸟级别的程序员,但是又想自己写一个游戏来获得成就感,我想你很可能会想到诸如坦克大战类的射击游戏。
首先不得不说设计类游戏的实现不难(我说的是简单的,哈哈),我写的里面基本上没什...
飞机大战游戏(java实现)
做了一个飞机大战的小游戏,现在把这个思路总结以及代码分享出来。希望通过几篇博客后能让看到的人都可以实现自己飞机大战的游戏。...
【Java小项目】打飞机
主要功能:
1.w,a,s,d八个方向移动,j射击
2.默认会右有5个敌机,敌机会有一个随机方向,并一直按着这个方向移动,碰到边界会发生反弹
Java打飞机小游戏(附完整源码)
写在前面技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简...
Java小项目——飞机大战
一、总体需求分析
(一)创建类
3、我方飞机类
4、敌方飞机
二、背景绘制
该游戏需要背景图片不断移动,展示出飞机不断往上飞的感觉。
定义一个 y1,...
--------------------------java飞机小项目总结-----------------------------游戏一共有7个类分别是:
静态属性类
点击有惊喜
技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop...
java打飞机游戏完整代码
技术源于分享,所以今天抽空把自己之前用java做过的小游戏整理贴出来给大家参考学习。java确实不适合写桌面应用,这里只是通过这个游戏让大家理解oop面向对象编程的过程,纯属娱乐。代码写的很简单,也很...
Java小游戏之打飞机(一)
Java小游戏之打飞机(一)
下午写了一下午,把打飞机的基本结构已经写完,下面要详细说明功能及源码:
先看一下运行界面:
游戏运行中图片
左上角是英雄机,黄色的是子弹,英雄机的任务就是躲子弹...
java打飞机小游戏
import java.util.R
敌飞机: 是飞行物,也是敌人
public class Airplane extends FlyingObject impl...
没有更多推荐了,90.飞机游戏之键盘控制方向运行的算法【尚学堂Java视频教程第二季之Java游戏项目实战频教程(基于Java7)】
- 爱酷学习网,免费高清视频教程在线观看
90.飞机游戏之键盘控制方向运行的算法
距离广告结束还有
本视频教程是尚学堂最新的Java视频教程(基于Java7进行讲解),内容十分丰富,包含了在使用Java过程中的所有方方面面,是至今为止Java视频教程里最全的一套视频教程,一共有300集左右(我日,够多啊)。原视频共有三季,每季视频都很多,且特别长,为了方便广大Java爱好者的学习,本人进行了一定的整理(所幸,我自己就是学Java出身的,就当是做点贡献了),在原来的视频的基础上进行了一些名称上的修改,让它更适合Java程序员的习惯。这是第二季视频教程,主要是在学习了第一季的Java基础之后,用所学的知识来做一个游戏的项目实战开发,通过做游戏的实战,能让你对所学的各种知识有一个比较深入的了解,主要内容有:游戏开发中的窗口加载、图片加载等游戏开发中的常用算法太阳系模型系统的建议飞机游戏的开发
Album Info
请输入正确的邮件(格式:xxx@xxx.xx)
必须填本条信息!Java写了一个小游戏,但是用了键盘监听器按键没反应,请大神们帮忙看看
[问题点数:100分,结帖人qq_]
本版专家分:0
结帖率 66.67%
CSDN今日推荐
本版专家分:7878
2017年8月 Java大版内专家分月排行榜第二2017年7月 Java大版内专家分月排行榜第二2017年6月 Java大版内专家分月排行榜第二2017年5月 Java大版内专家分月排行榜第二
本版专家分:5825
本版专家分:0
本版专家分:0
本版专家分:36405
2017年 总版技术专家分年内排行榜第九
2017年11月 Java大版内专家分月排行榜第一2017年10月 Java大版内专家分月排行榜第一2017年9月 Java大版内专家分月排行榜第一2017年8月 Java大版内专家分月排行榜第一2017年7月 Java大版内专家分月排行榜第一2017年6月 Java大版内专家分月排行榜第一2017年5月 Java大版内专家分月排行榜第一2017年4月 Java大版内专家分月排行榜第一2017年3月 Java大版内专家分月排行榜第一2017年2月 Java大版内专家分月排行榜第一
2017年12月 Java大版内专家分月排行榜第三
本版专家分:20
本版专家分:20
本版专家分:7878
2017年8月 Java大版内专家分月排行榜第二2017年7月 Java大版内专家分月排行榜第二2017年6月 Java大版内专家分月排行榜第二2017年5月 Java大版内专家分月排行榜第二
匿名用户不能发表回复!
其他相关推荐发生了什么?
随着移动互联的快速普及,用户越来越喜欢在手机端查看内容、交流互动。为了让大家不错过任何精彩瞬间,我们将小组和MOOC迁移至饭团,丰富产品使用功能,提供优质用户体验。
什么是饭团?
饭团是一个自由交流的平台,所有人都可以发布内容,和兴趣相投的人直接分享你的见解;内嵌于微信之中,操作简单,随时随地与他人交流!
我要怎么找到它?
小组和MOOC的用户内容和资料导出功能即将上线}

我要回帖

更多关于 java模拟器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信