Swing 画出坦克

 

package com;

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

public class TankGame1 extends JFrame{

 MyTankPanel mytankPanel=null;
 
 public static void main(String[] args) {
  TankGame1 tankGrame=new TankGame1();
 }
 
 public TankGame1(){
  mytankPanel=new MyTankPanel();
  this.add(mytankPanel);
  this.setSize(400, 300);
  this.setLocation(400, 250);
  this.setVisible(true);
  this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
 }
}

//我的面板
class MyTankPanel extends JPanel{
 
 //定义一个我的坦克
 MyTank myTank=null;
 
 public MyTankPanel(){
  myTank=new MyTank(12,12);
 }
 
 //重写paint方法
 public void paint(Graphics g){
  super.paint(g);
  g.fillRect(0, 0, 400, 300);
  
  this.drawTank(myTank.getX(), myTank.getY(), g, 1, 0);
 }
 
 /**
  * 画坦克方法
  * @param x 横轴
  * @param y 纵轴
  * @param g 画图尖
  * @param type 是自己还是敌人
  * @param derect 方向
  */
 public void drawTank(int x,int y,Graphics g,int type,int derect){
  
  //判断坦克类型
  switch(type){
  //如果为0,则表示我的坦克
  case 0:
   g.setColor(Color.CYAN);
   break;
  //如果为0,则表示我的坦克
  case 1:
   g.setColor(Color.RED);
   break;
  }
  
  //判断方向
  switch(derect){
  //向上
  case 0:
   //1.画出左边的矩形
   g.fill3DRect(x, y, 7, 32,false);
   //2.画出右边的矩形
   g.fill3DRect(x+20, y, 7, 32,false);
   //画出中间矩形
   g.fill3DRect(x+5, y+5, 15, 22,false);
   //画出圆形
   g.fillOval(x+5, y+8, 15, 15);
   //画出一条直线
   g.drawLine(x+13, y-2, x+13, 30);
   break;
  
  case 1:
   break;
  }
 }
}


//坦克类
class Tank{
 
 //坦克横坐标
 int x=0;
 //坦克纵坐标
 int y=0;
  
 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;
 }

 public Tank(int x,int y){
  this.x=x;
  this.y=y;
 }
}

//我的坦克
class MyTank extends Tank{
 
 public MyTank(int x,int y){
  super(x,y);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值