⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gameplayer.java~69~

📁 坦克大战的游戏以及游戏管理 包括注册
💻 JAVA~69~
📖 第 1 页 / 共 3 页
字号:
                        break;

                    case DIRLEFT:
                        b1 = (ti.x >= me1.x) && (ti.x <= me1.x + MYTANKWIDTH);
                        b2 = (me1.y >= ti.y) && (me1.y <= ti.y + TANKHEIGHT);
                        b3 = (ti.y >= me1.y) && (ti.y <= me1.y + MYTANKHEIGHT);
                        break;

                    case DIRRIGHT:
                        b1 = (me1.x >= ti.x) && (me1.x <= ti.x + TANKWIDTH);
                        b2 = (me1.y >= ti.y) && (me1.y <= ti.y + TANKHEIGHT);
                        b3 = (ti.y >= me1.y) && (ti.y <= me1.y + MYTANKHEIGHT);
                        break;
            }

            if (b1 && (b2 || b3))
            {
                        acCollide.play();
                return true;
            }
            else
                return false;
    }

        //判断敌人的炮弹是否打中我方坦克,true---打中, false---没有
        public boolean judgeShootMe(BombInfor bi, MyTank me1)
        {
                boolean b1=false, b2=false;
                switch(bi.dir)
                {
                        case DIRUP:
                        case DIRDOWN:
                        case DIRLEFT:
                        case DIRRIGHT:
                            b1 = (bi.x >= me1.x) && (bi.x <= me1.x + MYTANKWIDTH);
                            b2 = (bi.y >= me1.y) && (bi.y <= me1.y + MYTANKHEIGHT);
                            break;
                }

                if (b1 && b2)
                    return true;
                else
                    return false;
        }

        //判断我方炮弹是否打中敌人坦克,true---打中, false---没有
        public boolean judgeShootEnemy(BombInfor bi, Vector tankGroup1)
        {
            for (int i=0; i<tankGroup1.size(); i++)
            {
                    TankInfor ti = (TankInfor)tankGroup1.elementAt(i);
                        boolean b1=false, b2=false;
                        switch(bi.dir)
                        {
                                case DIRUP:
                                case DIRDOWN:
                                case DIRLEFT:
                                case DIRRIGHT:
                                    b1 = (bi.x >= ti.x) && (bi.x <= ti.x + TANKWIDTH);
                                    b2 = (bi.y >= ti.y) && (bi.y <= ti.y + TANKHEIGHT);
                                    break;
                        }

                        if (b1 && b2)
                        {
                                tankGroup1.removeElement(ti);
                                i--;
                        }
            }

            if (tankGroup1.size() == 0){
              //score += 100;
              return true;
            }
            else
                return false;
        }


        public void paint(Graphics g)
        {
                if (paintStage == 0)
                {
                        mPanel.repaint();
                        lUser.repaint();
                        tfName.repaint();
                        lPass.repaint();
                        pfPass.repaint();
                        btLogin.repaint();
                        btReset.repaint();
                }
                else
                {
                    Image ii = this.createImage(this.getWidth(),this.getHeight());
                    Graphics g1 = ii.getGraphics();

                    g1.setColor(Color.yellow);
                    g1.fillRect(getX(), getY(),getWidth(),getHeight());
                    g1.setColor(Color.lightGray);
                    g1.fillRect(10, 10, 510, 510);
                    g1.setColor(Color.black);
                    g1.fillRect(15, 15, 500, 500);

                    drawTank(g1);
                    drawBomb(g1);

                    g1.setFont(new Font("黑体", Font.BOLD, 16));
                    g1.drawString("Name : "+tfName.getText(), 40, 550);
                    g1.drawString("Level : " + level, 40, 575);
                    g1.drawString("Score : " + score, 40, 600);

                    g1.drawString("Message From Server : ", 200, 550);
                    g1.drawString("                                  ", 220, 570);
                    g1.drawString(messageFromServer, 220, 575);
                    g1.drawString("Bomb Left : " + me.bombRemainder, 200, 600);
                    g1.drawImage(tankExa, 400, 530, this);


                    if (gameOver)
                    {
                            g1.setColor(Color.red);
                                g1.setFont(new Font("Comic Sans MS", Font.BOLD, 60));
                    g1.drawString("Game Over!", 100, 300);
                    }

                    g.drawImage(ii, 0, 0, this);
                }
        }

    public void drawTank(Graphics g)
    {
            //画敌人的坦克
            for (int i=0; i<tankGroup.size(); i++)
            {
                    TankInfor ti = (TankInfor)tankGroup.elementAt(i);
                    switch(ti.dir)
                    {
                            case DIRUP:
                                g.drawImage(tank1, ti.x, ti.y, this);
                                break;

                            case DIRDOWN:
                                g.drawImage(tank2, ti.x, ti.y, this);
                                break;

                            case DIRLEFT:
                                g.drawImage(tank3, ti.x, ti.y, this);
                                break;

                            case DIRRIGHT:
                                g.drawImage(tank4, ti.x, ti.y, this);
                                break;
                    }
            }

            //画自己的坦克
            switch(me.dir)
            {
                    case DIRUP:
                        g.drawImage(myTank1, me.x, me.y, this);
                        break;

                    case DIRDOWN:
                        g.drawImage(myTank2, me.x, me.y, this);
                        break;

                    case DIRLEFT:
                        g.drawImage(myTank3, me.x, me.y, this);
                        break;

                    case DIRRIGHT:
                        g.drawImage(myTank4, me.x, me.y, this);
                        break;
            }
    }


        public void drawBomb(Graphics g)
        {
                //画敌人的炮弹
                for (int i=0; i<bombGroup.size(); i++)
                {
                        BombInfor bi = (BombInfor)bombGroup.elementAt(i);
                    g.drawImage(bomb, bi.x, bi.y, this);
                }

                //画自己的炮弹
                for (int i=0; i<myBomb.size(); i++)
                {
                        BombInfor bi = (BombInfor)myBomb.elementAt(i);
                    g.drawImage(bomb, bi.x, bi.y, this);
                }
        }

        public void update(Graphics g)
        {
                paint(g);
        }


        //处理玩家的按键信息
        class KeyHandler extends KeyAdapter
        {
                public void keyPressed(KeyEvent e)
                {
                        switch(e.getKeyCode())
                        {
                                case KeyEvent.VK_UP:
                                    me.dir = DIRUP;
                                    me.y -= 6;
                                    if (me.y < GAMEY)
                                        me.y = GAMEY;
                                    break;

                                case KeyEvent.VK_DOWN:
                                    me.dir = DIRDOWN;
                                    me.y +=6;
                                    if (me.y > GAMEY+GAMEHEIGHT-MYTANKHEIGHT)
                                        me.y = GAMEY+GAMEHEIGHT-MYTANKHEIGHT;
                                    break;

                                case KeyEvent.VK_LEFT:
                                    me.dir = DIRLEFT;
                                    me.x -=6;
                                    if (me.x < GAMEX)
                                        me.x = GAMEX;
                                    break;

                                case KeyEvent.VK_RIGHT:
                                    me.dir = DIRRIGHT;
                                    me.x +=6;
                                    if (me.x > GAMEX+GAMEWIDTH-MYTANKWIDTH)
                                        me.x = GAMEX+GAMEWIDTH-MYTANKWIDTH;
                                    break;

                                default:
                                    if (me.bombRemainder > 0)
                                    {
                                        acExplode.play();
                                        myBomb.addElement(new BombInfor(me.x, me.y, me.dir));
                                        me.bombRemainder--;
                                    }
                                    else
                                    {
                                            gameOver = true;
                                    }
                                    break;
                        }
                }
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -