首页>代码>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();
    }

}
最近下载更多
wybdxjq  LV1 2023年12月27日
dacfsdfaa  LV1 2022年5月25日
ma小跳  LV5 2021年7月2日
asdffghhj  LV1 2021年3月19日
happyzhu  LV1 2020年12月17日
TerryGaoBo  LV9 2020年8月26日
kkkxyh  LV13 2020年8月23日
a105259  LV3 2020年5月9日
xueiqngquan  LV1 2019年12月14日
aa123456awww  LV8 2019年12月9日
最近浏览更多
wybdxjq  LV1 2023年12月27日
tdfgjbi0de  LV6 2023年10月13日
Dominick  LV14 2023年3月28日
dacfsdfaa  LV1 2022年5月25日
香菇肉饼汤  LV8 2022年1月21日
chen_jw  LV10 2021年12月14日
金玉博  LV1 2021年9月6日
qsyqa0  LV6 2021年9月5日
aaa12138  LV1 2021年8月11日
ma小跳  LV5 2021年7月2日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友