用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

雷霆战机

2018-06-12 作者:云代码会员举报

[java]代码库

package taiyangxi;

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 javax.print.attribute.standard.PrinterInfo;

import cn.bjsxt.solar.MyFrame;
import cn.bjsxt.solar.ganeutil;

//飞机游戏的主窗口
public class solarframe extends MyFrame {
	Image bg= ganeutil.getImage("tupian/123.jpg");
	plane p=new plane("tupian/5.jpg",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.drew(g);
			
			//检测子弹与飞机的碰撞
			boolean peng=b.getRect().intersects(p.getRect());
			if(peng) {
				p.setLive(false);//飞机死掉
				endtime=new Date();
				//爆炸一次
				if(bao==null)
				 {bao=new explode(p.x, p.y);}
				bao.draw(g);
				break;
			}
		}
		if(!p.isLive()) {
			int period =(int)((endtime.getTime()-starttime.getTime())/1000);
			PrinterInfo(g,"时间:"+period+"秒",20,120,260,Color.white);
			switch (period/5) {
			case 0:
			case 1:
				PrinterInfo(g, "菜鸟",50, 100, 200, Color.white);
				break;
			case 2:
				PrinterInfo(g, "小鸟",50, 100, 200, Color.white);
				break;
			case 3:
				PrinterInfo(g, "大鸟",50, 100, 200, Color.white);
				break;
			case 4:
				PrinterInfo(g, "鸟王",50, 100, 200, Color.yellow);
				break;

			default:
				PrinterInfo(g, "鸟祖",50, 100, 200, Color.blue);
				break;
			}
		}
		PrinterInfo(g, "分数:100", 10, 50, 50, Color.yellow);
	}
	//在窗口上打印信息
	private void PrinterInfo(Graphics g,String str,int size,int x,int y,Color color) {
		// TODO Auto-generated method stub
		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 static void main(String[] args) {
		new solarframe().launchFrame();
	
	}
	
	
	public void launchFrame() {
		//直接调用父类的方法
		super.launchFrame();
		//键盘监听
		addKeyListener(new KeyMonitor());
		
		//生成一堆子弹
		for(int i=0;i<20;i++) {
				Bullet b=new Bullet();
				bulletList.add(b);
		}
		starttime =new Date();
	}
	//定义为内部类,可以使用外部类的普通属性
	//飞机的移动方向
	class KeyMonitor extends KeyAdapter{

		@Override
		public void keyPressed(KeyEvent e) {
			//显示按键上下左右 System.out.println("按下"+e.getKeyCode());
			p.addDirection(e);
		}

		//@Override
		public void keyReleased(KeyEvent e) {
			p.minusDirection(e);
		}
	}

}

[代码运行效果截图]


雷霆战机


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。