MENU

java 画坦克

• 2019 年 05 月 31 日 • 阅读: 125 • 源码

package com.tankg;
import java.awt.*;
import javax.swing.*;
public class TankGame {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyFrame mf = new MyFrame();
    }

}
class MyFrame extends JFrame{
    MyPanel mp;
    public MyFrame() {
        mp = new MyPanel();
        this.add(mp);
        this.setTitle("坦克大战1.0版");
        this.setSize(800, 600);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
class MyPanel extends JPanel{
    Hero hero;
    public MyPanel() {
        hero = new Hero(100, 200);//x = 100; y = 200;
    }
    //覆盖paint方法,在paint方法画出坦克
    public void paint(Graphics g) {
        super.paint(g);
        //设置面板大小
        this.setSize(600, 400);
        this.setBackground(Color.BLACK);
        g.setColor(Color.yellow);
        //画第一行坦克
        drawTank(100,200,0,0,g);//在100,200的位置,画出黄色的我方坦克,向上的坦克
        drawTank(200,200,1,1,g);
        drawTank(300,200,0,0,g);//在300,200的位置,画出黄色的我方坦克,向上的坦克
        drawTank(400,200,1,1,g);
        //画第二行坦克
        drawTank(100,300,0,2,g);
        drawTank(200,300,1,3,g);
        drawTank(300,300,0,2,g);
        drawTank(400,300,1,3,g);
    }
    public void drawTank(int x,int y,int type,int direct,Graphics g) {
        //int x,int y表示坦克坐标位置,int type表示坦克类型,type的值是0,表示我方坦克,用黄颜色,type的值是1,表示敌方坦克,用红色表示
        //int direct坦克方向,direct的值是0,表示坦克向上,1表示坦克向右,2表示坦克向下,3表示坦克向左,Graphics g画笔
        //判断类型,根据值来修改画笔的颜色
        if(type==0) {
            //type的值是0,表示我方坦克,用黄颜色,type的值是1,表示敌方坦克,用红色表示
            g.setColor(Color.YELLOW);
        }
        if(type == 1) {
            g.setColor(Color.RED);
        }
        //判断坦克方向
        switch (direct) {
        case 0:
            //画方向向上的坦克
            //画左边矩形
            g.fill3DRect(x-10, y-15, 5, 30, false);
            //画右边矩形
            g.fill3DRect(x+5, y-15, 5, 30, false);
            //中间矩形
            g.fill3DRect(x-5, y-10, 10, 20, false);
            //中间圆圈
            g.fillOval(x-4, y-4, 8, 8);
            //炮筒
            g.drawLine(x, y, x, y-15);
            break;
        case 1:
            //画方向向右的坦克
            //上面矩形
            g.fill3DRect(x-15, y-10, 30, 5, false);
            //下面矩形
            g.fill3DRect(x-15, y+5, 30, 5, false);
            //中间矩形
            g.fill3DRect(x-10, y-5, 20, 10, false);
            //中间圆圈
            g.fillOval(x-4, y-4, 8, 8);
            //炮筒
            g.drawLine(x, y, x+15, y);
            break;
        case 2:
            //画方向向下的坦克
            //画左边矩形
            g.fill3DRect(x-10, y-15, 5, 30, false);
            //画右边矩形
            g.fill3DRect(x+5, y-15, 5, 30, false);
            //中间矩形
            g.fill3DRect(x-5, y-10, 10, 20, false);
            //中间圆圈
            g.fillOval(x-4, y-4, 8, 8);
            //炮筒
            g.drawLine(x, y, x, y+15);
            break;
        case 3:
            //画方向向左的坦克
            //上面矩形
            g.fill3DRect(x-15, y-10, 30, 5, false);
            //下面矩形
            g.fill3DRect(x-15, y+5, 30, 5, false);
            //中间矩形
            g.fill3DRect(x-10, y-5, 20, 10, false);
            //中间圆圈
            g.fillOval(x-4, y-4, 8, 8);
            //炮筒
            g.drawLine(x, y, x-15, y);
            break;
        }
    }
}
//坦克类,是所有坦克的父类
class Tank{
    int x;//坦克的坐标位置
    int y;//坦克的坐标位置
    int direct;//坦克方向,direct的值是0,表示坦克向上,1表示坦克向右,2表示坦克向下,3表示坦克向左
    public Tank(int x,int y) {
        this.x = x; 
        this.y = y;
    }
}
//我方坦克类
class Hero extends Tank{

    public Hero(int x, int y) {
        super(x, y);
    }
}
- - - The END - - -
  • 文章标题:java 画坦克
  • 文章链接:https://gxusb.com/java-TankGame.html
  • 版权所有:本文版权归 Get-林林小窝 所有,转载请注明出处!除特殊注明外(如有侵权,请联系 gxggxl@qq.com ),本站原创内容均采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可
  • 广告

    返回文章列表 文章二维码 打赏
    本页链接的二维码
    打赏二维码
    添加新评论