java绘制坦克

坦克类:

package 坦克大战.坦克;

/**
 * @Auther:
 * @Date: 2022/4/17 - 04 - 17 - 13:29
 * @Description: 坦克大战.坦克
 * @version: 1.0
 */
public class Tanke_Class {
    private int x;      //坦克横坐标
    private int y;      //坦克纵坐标
    //构造器
    public Tanke_Class(int x, int y) {
        this.x = x;
        this.y = y;
    }
/*      以下为set 和 get 方法*/
    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}

画板类:

package 坦克大战.坦克;

import javax.swing.*;
import java.awt.*;

/**
 * @Auther:
 * @Date: 2022/4/17 - 04 - 17 - 13:31
 * @Description: 坦克大战.坦克
 * @version: 1.0
 *  绘图区域
 */
public class Panel extends JPanel {
    //定义坦克
    Tanke_Class tanke = null;
    public Panel(){
        //初始化坦克
        tanke = new Tanke_Class(100,100);
    }

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.fillRect(0,0,1000,750);    //绘画区域填充矩形,默认黑色
        drawTanke(tanke.getX(),tanke.getY(),g,0,0);     //绘制坦克
    }

    //编写绘画坦克的方法
    /*
    *   x : 坦克左上角x坐标
    *   y : 坦克左上角y坐标
    *   g: 画笔
    *   direct : 坦克方向
    *   type : 坦克类型
    * */
    public void drawTanke(int x,int y,Graphics g,int direct,int type){
        switch(type){
            case 0:     //设置自己坦克的颜色
                g.setColor(Color.cyan);
                break;
            case 1:     //设置敌方坦克颜色
                g.setColor(Color.green);
                break;
        }
        //根据方向绘制坦克
        switch(direct){
            case 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;
            default:
                System.out.println("暂未处理");
        }
    }
}

主程序:

package 坦克大战.坦克;

import javax.swing.*;

/**
 * @Auther: 
 * @Date: 2022/4/17 - 04 - 17 - 13:38
 * @Description: 坦克大战.坦克
 * @version: 1.0
 */
public class Game extends JFrame {//继承JFrame、JFrame对应窗口,可以当作一个画框
    //定义panel
    Panel panel = null;

    public static void main(String[] args) {
            Game game = new Game();
    }

    public Game(){
        //初始化面板
        panel = new Panel();
        //面板放入画框
        this.add(panel);
        //设置画框大小
        this.setSize(1000,750);
        //设置当点击窗口结束按钮后程序退出。若无此设置点击窗口 x 按钮后程序仍在执行
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //设置显示
        this.setVisible(true);
    }
}

实现效果:

本方法采用直接绘制,也可选用加入图片的形式实现坦克绘制
在这里插入图片描述
出处:韩顺平老师
声明:此文章为学习笔记,如有侵权请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Byte_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值