📄 gameplayer.java~69~
字号:
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 + -