package com.hooyu.tankgame;
import javax.swing.*;
/**
* @author Akita Hooyu
* @version 1.0
*/
public class HooyuTankGame01 extends JFrame {
//定义MyPanel
MyPanel mp = null;
public static void main(String[] args) {
HooyuTankGame01 hooyuTankGame01 = new HooyuTankGame01();
}
public HooyuTankGame01(){
mp = new MyPanel();
this.add(mp);//把面板(游戏绘图区)加入
this.setSize(1000,750);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
package com.hooyu.tankgame;
import javax.swing.*;
import java.awt.*;
/**
* @author Akita Hooyu
* @version 1.0
*/
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, 0, 0);
}
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:
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 com.hooyu.tankgame;
/**
* @author Akita Hooyu
* @version 1.0
*/
public class Tank {
private int x;
private int y;
public Tank(int x, int y) {
this.x = x;
this.y = y;
}
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 com.hooyu.tankgame;
/**
* @author Akita Hooyu
* @version 1.0
*/
public class Hero extends Tank {
public Hero(int x, int y){
//父类无参构造器被有参构造器覆盖
//所以子类必须调用父类的构造器,完成父类的初始化
super(x,y);
}
}