[Awt]——太空猛禽
来源:互联网 发布:纯js实现前端分页插件 编辑:程序博客网 时间:2024/05/01 01:44
文件目录:
工具类:
工具类:
public class Constant {public static final int GAME_WIDTH=300;//游戏中的常量public static final int GAME_HEIGHT=500;public static final int Time_lapse=50;}
public class 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 (Exception e) {e.printStackTrace();}return bi;}}
public class MyFrame extends Frame{public void launchFrame(){//加载窗口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);}});}class PaintThread extends Thread{@Overridepublic void run() {while(true){repaint();try {Thread.sleep(Constant.Time_lapse);} catch (InterruptedException e) {e.printStackTrace();}}}}}实体类:
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;speed=5;}public void draw(Graphics g){Color c=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-17||y<30) {degree=-degree;}if (x>Constant.GAME_WIDTH-16||x<7) {degree=Math.PI-degree;}g.setColor(c);}}
public class Explode {double x,y;static Image[] images=new Image[16];int count;static{for (int i = 0; i < 16; i++) {images[i]=GameUtil.getImage("Explode/e"+(i+1)+".gif");images[i].getWidth(null);}}public void draw(Graphics g){if (count<=15) {g.drawImage(images[count],(int)x,(int)y, null);count++;}}public Explode(double x,double y) {this.x=x;this.y=y;}}
public class GameObject {Image image;double x,y;int speed=10;int width,height;public Rectangle getRect(){return new Rectangle((int)x,(int)y,width,height);}public GameObject(Image image, double x, double y, int speed, int width, int height) {super();this.image = image;this.x = x;this.y = y;this.speed = speed;this.width = width;this.height = height;}public GameObject(){}}
public class plane extends GameObject{private boolean left,up,right,down;private boolean live=true;public void draw(Graphics g){if (live) {g.drawImage(image,(int)x,(int)y, null);move();}}public void move(){if (left) {x-=speed;}if (right) {x+=speed;}if (up) {y-=speed;}if (down) {y+=speed;}}public plane(String imagePath, double x, double y) {this.image =GameUtil.getImage(imagePath);this.x = x;this.y = y;this.width=image.getWidth(null);this.height=image.getHeight(null);}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 plane(){}public boolean isLive() {return live;}public void setLive(boolean live) {this.live = live;}}
public class PlaneGameFrame extends MyFrame{Image bg=GameUtil.getImage("images/bg.jpg");plane p=new plane("images/plane.png",50,50);ArrayList bulletList=new ArrayList();Date startTime;Date endTime;Explode bao;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);//飞机死掉if (bao==null) {bao=new Explode(p.x, p.y);endTime=new Date();}bao.draw(g);break; }}if (!p.isLive()) {int period=(int)((endTime.getTime()-startTime.getTime())/1000);printInfo(g,"时间"+period+"秒",20,20,220, Color.white);switch (period/10) {case 0:case 1:printInfo(g,"菜鸟",20,20,160, Color.white);break;case 2:printInfo(g,"小鸟",20,20,160, Color.white);break;case 3:printInfo(g,"鸟王子",20,20,160, Color.white);break;case 4:printInfo(g,"鸟人",20,20,160, Color.white);break;default:break;}}}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);}//双缓冲private Image offScreenImage=null;public void update(Graphics g){if (offScreenImage==null){ offScreenImage=createImage(Constant.GAME_WIDTH,Constant.GAME_HEIGHT);}Graphics gOff=offScreenImage.getGraphics();paint(gOff);g.drawImage(offScreenImage, 0, 0, null);}public static void main(String[] args) {//主函数在这里new PlaneGameFrame().launchFrame();}public void launchFrame(){super.launchFrame();addKeyListener(new KeyMonitor());for (int i = 0; i <6; 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);}}}效果图:
0 0
- [Awt]——太空猛禽
- JavaGUI——AWT
- Unity3D 太空大战——整理
- Unity3D学习——《太空射击》
- jzoj 高中 1286——太空电梯
- 传智播客——awt细节
- java 学习 —— AWT布局组件
- Java图形用户界面——AWT概述
- [Awt]——图片获取方式
- [Awt]——物体反弹检测
- [Awt]——太阳系模型制作
- Java AWT实践——NoteBook
- 10.Java笔记—awt事件模型
- 黑马程序员—AWT鼠标键盘事件
- 自定义java.awt.Canvas—趣味聊天
- F22 猛禽战斗机 攻略
- AWT
- AWT
- OC篇学习-字典
- 《leetCode》:Factorial Trailing Zeroes
- 【HPU】[1730]字符串
- 正则表达式替换foreach_if_elseif_else
- 微博API iOS9的适配问题
- [Awt]——太空猛禽
- spring+mybatis使用事务管理不生效原因分析
- 数据结构上机2.1
- solr入门之创建solrcloud的collection索引集合
- 6CSS常见操作 对齐、尺寸、分类、导航栏、图片
- CSP考试 2015年9月第2题 日期计算 C语言实现
- 读书笔记----javascript类和模块
- ConcurrentHashMap原理分析
- RecyclerView单选