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);
}
}
万水千山总是情,给个打赏行不行。
打赏

百度已收录