分别绘制坦克的上下左右方向的坦克,方便后续坦克移动时使用
package com.tank.tankgame2;
import javax.swing.*;
import java.awt.*;
/**
* 坦克大战的绘图区域
*/
public class MyPanel extends JPanel {
Hero hero = null;
public MyPanel(){
hero = new Hero(100,100); // 初始化自己的坦克
}
@Override
public void paint (Graphics g){
super.paint(g);
g.fillRect(0,0,1000,750); // 填充矩形,默认黑色
// 画出坦克-封装方法
drawTank(hero.getX(),hero.getY(),g,3,1);
}
/**
* 封装的坦克方法
* @param x 坦克的左上角 x坐标
* @param y 坦克的左上角 y坐标
* @param g 画笔
* @param direct 坦克方向 上下左右
* @param type 坦克类型
*/
public void drawTank(int x,int y,Graphics g,int direct ,int type){
switch (type){
case 0: // 敌人的坦克
g.setColor(Color.cyan);
break;
case 1: // 我们的坦克
g.setColor(Color.YELLOW);
break;
}
// 根据坦克的方向绘制坦克
switch (direct){
case 0: // 0表示向上
g.fill3DRect(x,y,10,60,false); // 坦克左边的轮子
g.fill3DRect(x+30,y,10,60,false); // 坦克右边的轮子
g.fill3DRect(x+10,y+10,20,40,false); // 画出坦克的盖子
g.fillOval(x+10,y+20,20,20); // 画出圆形的盖子
g.drawLine(x+20,y+30,x+20,y); // 画出炮筒
break;
case 1: // 1表示向右
g.fill3DRect(x,y,60,10,false); // 坦克左边的轮子
g.fill3DRect(x,y+30,60,10,false); // 坦克右边的轮子
g.fill3DRect(x+10,y+10,40,20,false); // 画出坦克的盖子
g.fillOval(x+20,y+10,20,20); // 画出圆形的盖子
g.drawLine(x+30,y+20,x+60,y+20); // 画出炮筒
break;
case 2: // 2表示向下
g.fill3DRect(x,y,10,60,false); // 坦克左边的轮子
g.fill3DRect(x+30,y,10,60,false); // 坦克右边的轮子
g.fill3DRect(x+10,y+10,20,40,false); // 画出坦克的盖子
g.fillOval(x+10,y+20,20,20); // 画出圆形的盖子
g.drawLine(x+20,y+30,x+20,y+60); // 画出炮筒
break;
case 3: // 3表示向左
g.fill3DRect(x,y,60,10,false); // 坦克左边的轮子
g.fill3DRect(x,y+30,60,10,false); // 坦克右边的轮子
g.fill3DRect(x+10,y+10,40,20,false); // 画出坦克的盖子
g.fillOval(x+20,y+10,20,20); // 画出圆形的盖子
g.drawLine(x+30,y+20,x,y+20); // 画出炮筒
break;
default:
System.out.println("暂时没有处理");
}
}
}
网友评论