最代码广告位
首页>分享>java swing开发表情包大作战游戏>/src/com/Penguin/PenguinGameFrame.java
package com.Penguin;

import com.util.Constant;
import com.util.GameUtil;
import com.util.MyFrame;

import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import java.util.ArrayList;
import java.util.Date;

public class PenguinGameFrame extends MyFrame{
    Image bg = GameUtil.getImage("images/bg.png");

    Penguin p=new Penguin("images/left.gif",50,50);

    ArrayList faceList = new ArrayList();

    //Explode baozha=new Explode(50,50);

    Explode bao;

    Date startime;
    Date endtime;
    Date currentTime;
    int time,period;
    boolean peng=false;


    public void paint(Graphics g) {
        g.drawImage(bg, 0, 0, null);
        p.draw(g);
        //baozha.draw(g);
        //bao.draw(g);
        //observer观察者

        //遍历画子弹
        for (int i = 0; i < faceList.size(); i++) {
            Face b = (Face) faceList.get(i);
            b.draw(g);

            //检测企鹅的碰撞

                peng= b.getRect().intersects(p.getRect());

            if(peng){

                if(bao==null) {
                    bao = new Explode(p.x-52, p.y-52);
                }


                p.live=false;
                //System.out.println("############peng!!");
                endtime=new Date();


            }
            else{
                //画个时间表
                //if(!(p.x==1000)){
                    currentTime = new Date();
                    try {
                        time = (int) ((currentTime.getTime() - startime.getTime()) / 1000);
                    } catch(Exception e) {

                    }


                    printInfo(g, "时间" + time + "秒", 20, Constant.GAME_WIDTH - 100,
                            70, Color.black);
                //}
            }

        }
        if(!p.live) {


            int fx=Constant.GAME_WIDTH/2-100;
            int fy=Constant.GAME_HEIGHt/2;

                period = ((int) endtime.getTime() - (int) startime.getTime()) / 1000;



            int time1=(time-period+1);
            //System.out.println(time1);
            //掉到窗口外面会游戏结束
            if(p.y<Constant.GAME_HEIGHt+30) {
                p.y = p.y + time1 * time1 *5;
            }else {
                printInfo(g, "Game Over!", 50,fx,
                        fy,Color.black);

                printInfo(g,"生存时间:"+ period+"秒",20 , fx,
                        fy+40, Color.black);

                //判断等级
                switch (period/10){
                    case 0:  printInfo(g,"级别:菜鸟",50,fx,fy-60,Color.black);
                        break;
                    case 1:printInfo(g,"级别:小鸟",50,fx,fy-60,Color.black);
                        break;
                    case 2:printInfo(g,"级别:大鸟",50,fx,fy-60,Color.black);
                        break;
                    case 3:printInfo(g,"级别:鸟王子",50,fx,fy-60,Color.black);
                        break;
                    case 4:printInfo(g,"级别:鸟人",50,fx,fy-60,Color.black);
                        break;
                    default: printInfo(g,"级别:鸟神",50,fx,fy-60,Color.black);
                        break;
                }

            }

            if(bao!=null) {
                bao.draw(g);

            }

        }



    }

    //在窗口上打印信息
    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 = this.createImage(Constant.GAME_WIDTH, Constant.GAME_HEIGHt);
        }
        Graphics g0ff=offScreenImage.getGraphics();
        paint(g0ff);
        g.drawImage(offScreenImage,0 , 0, null);

    }




    //定义为内部类,可以方便的使用外部类的普通属性
    class keyMonitor extends KeyAdapter{
        //表示键盘按下去
        public void keyPressed(KeyEvent e){
            //每一个键都对应一个值
            //System.out.println("按下:"+e.getKeyCode());
            switch(e.getKeyCode()) {
                case KeyEvent.VK_LEFT:
                    p.img=GameUtil.getImage("images/left.gif");
                    p.left=true;
                    break;
                case KeyEvent.VK_UP:
                    p.img=GameUtil.getImage("images/up.gif");
                    p.up=true;
                    break;
                case KeyEvent.VK_RIGHT:
                    p.img=GameUtil.getImage("images/right.gif");
                    p.right=true;
                    break;
                case KeyEvent.VK_DOWN:
                    p.img=GameUtil.getImage("images/down.gif");
                    p.down=true;
                    break;
            }


        }

        //表示按键释放
        public void keyReleased(KeyEvent e){
            //System.out.println("释放:"+e.getKeyCode());
            switch(e.getKeyCode()) {
                case KeyEvent.VK_LEFT:
                    p.left=false;
                case KeyEvent.VK_UP:
                    p.up=false;
                    break;
                case KeyEvent.VK_RIGHT:
                    p.right=false;
                    break;
                case KeyEvent.VK_DOWN:
                    p.down=false;
                    break;
            }
        }
    }

    //增加键盘监听
    public void launchFrame(){
        super.launchFrame();
        addKeyListener(new keyMonitor());

        //生成一堆表情
        for (int i = 0; i < 53; i++) {
            Face b=new Face("images/"+(i+1)+".gif");
            faceList.add(b);
        }
        startime=new Date();
    }





    public static void main(String[] args) {
        new PenguinGameFrame().launchFrame();
    }

}
最近下载更多
a105259 LV25月9日
星星星星
xueiqngquan LV12019年12月14日
星星
aa123456awww LV72019年12月9日
月亮星星星星星星
124125411 LV52019年12月8日
月亮星星
zslzslhaha LV12019年11月26日
星星
pllpll LV92019年11月23日
月亮月亮星星
zhbsky LV32019年11月9日
星星星星星星
qweqweqwe321321233 LV102019年11月6日
月亮月亮星星星星
dora0427 LV52019年11月5日
月亮星星
lixiang1996 LV62019年10月12日
月亮星星星星
最近浏览更多
爱情戴罪的羔羊 LV25月24日
星星星星
yxx_yxx LV85月20日
月亮月亮
a105259 LV25月9日
星星星星
xiaofeng88 LV34月9日
星星星星星星
f708cool LV24月8日
星星星星
最可爱 LV63月19日
月亮星星星星
暂无贡献等级
hu123123 LV22月1日
星星星星
2979153431 LV21月8日
星星星星
222啧啧啧 LV12019年12月29日
星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友