坦克类:
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);
}
}
实现效果:
本方法采用直接绘制,也可选用加入图片的形式实现坦克绘制
出处:韩顺平老师
声明:此文章为学习笔记,如有侵权请联系删除。