java基础学习之时间监听--坦克

来源:互联网 发布:java数组的用法 编辑:程序博客网 时间:2024/06/01 08:03
/**  *   */  package com.demo;  import java.awt.*;  import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.*;import javax.swing.*;  /**  * @author Administrator  *  */  public class MyTankGame1 extends JFrame{        /**      * @param args      */      MyPanel mp=null;      public static void main(String[] args) {          // TODO 自动生成的方法存根          MyTankGame1 mtg =new MyTankGame1();        }      //构造函数      public MyTankGame1()      {          mp=new MyPanel();          this.add(mp);          //注册监听        this.addKeyListener(mp);        this.setSize(400,300);          this.setVisible(true);                }      //我的面板      class MyPanel extends JPanel implements KeyListener     {          //定义一个坦克          Hero hero=null;          //定义敌人坦克        Vector<EnemyTank> ets=new Vector<EnemyTank>();                int enSize=3;        //构造函数          public MyPanel()          {              hero=new Hero(10,10);             //初始化敌人的坦克            for(int i=0;i<enSize;i++)            {            //创建一辆敌人坦克对象            EnemyTank et=new  EnemyTank((i+1)*50,0);            et.setColor(0);            //加入            ets.add(et);;            }        }                    //重写paint          public void paint(Graphics g)          {              super.paint(g);              //将区域设为黑色              g.fillRect(0, 0, 400, 300);              this.drawTank(hero.getX(),hero.getY(),g,this.hero.direct,1);              //画出敌人的坦克            for(int i=0;i<ets.size();i++)            {             this.drawTank(ets.get(i).getX(),ets.get(i).getY(),g,this.hero.direct,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,5,30,false);                  //画出右边的矩形                  g.fill3DRect(x+15,y,5,30,false);                  //画出中间矩形                  g.fill3DRect(x+5,y+5,10,20,false);                  //画出中间圆                                    g.fillOval(x+5,y+10,10,10);                  //画线                  g.drawLine(x+10,y+15, x+10, y);                  break;              case 1:            //向右             g.fill3DRect(x,y,30,5,false);                   //画出右边的矩形                   g.fill3DRect(x,y+15,30,5,false);                   //画出中间矩形                   g.fill3DRect(x+5,y+5,20,10,false);                   //画出中间圆                                      g.fillOval(x+10,y+5,10,10);                   //画线                   g.drawLine(x+15,y+10, x+30, y+10);                   break;              case 2://下                                //画出我的坦克                  //画出左面的矩形                  g.fill3DRect(x,y,5,30,false);                  //画出右边的矩形                  g.fill3DRect(x+15,y,5,30,false);                  //画出中间矩形                  g.fill3DRect(x+5,y+5,10,20,false);                  //画出中间圆                                    g.fillOval(x+5,y+10,10,10);                  //画线                  g.drawLine(x+10,y+15, x+10, y+30);                  break;              case 3:            //向右             g.fill3DRect(x,y,30,5,false);                   //画出右边的矩形                   g.fill3DRect(x,y+15,30,5,false);                   //画出中间矩形                   g.fill3DRect(x+5,y+5,20,10,false);                   //画出中间圆                                      g.fillOval(x+10,y+5,10,10);                   //画线                   g.drawLine(x+15,y+10, x, y+10);                   break;                          }                                    }        //键使用aswd控制上下左右public void keyPressed(KeyEvent arg0) {// TODO 自动生成的方法存根if(arg0.getKeyCode()==KeyEvent.VK_W){//设置我的坦克的方向this.hero.setDirect(0);this.hero.moveUp();}else if(arg0.getKeyCode()==KeyEvent.VK_A){this.hero.setDirect(3);this.hero.moveLeft();}else if(arg0.getKeyCode()==KeyEvent.VK_S){this.hero.setDirect(2);this.hero.moveDown();}else if(arg0.getKeyCode()==KeyEvent.VK_D){this.hero.setDirect(1);this.hero.moveRight();}//重新绘制Panelthis.repaint();}public void keyReleased(KeyEvent arg0) {// TODO 自动生成的方法存根}public void keyTyped(KeyEvent arg0) {// TODO 自动生成的方法存根}      }    }    class Tank  {      int x;      int y;      //坦克方向0上1右2下3左    int direct=0;    int color=0;    public int getColor() {return color;}public void setColor(int color) {this.color = color;}public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}//速度    int speed=1;    public int getDirect() {return direct;}public void setDirect(int direct) {this.direct = direct;}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;      }  }  

//成员类

package com.demo;//敌人的坦克class EnemyTank extends Tank{public EnemyTank(int x,int y){super(x, y);  }}//我的坦克  class Hero extends Tank  {    public Hero(int x,int y)    {        super(x, y);          }    //坦克向上移动  public void moveUp()  {  y-=speed;  }  //向右移动  public void moveRight()  {  x+=speed;  }  public void moveLeft()  {  x-=speed;  }  public void moveDown()  {  y+=speed;  }}  

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 运动后心慌想吐怎么办 激素停后全身疼怎么办 运动完头晕想吐怎么办 跑了步全身酸痛怎么办 运动后全身没力气怎么办 学完游泳不会换气怎么办 猫不吃饭精神不好怎么办 运动完头晕目眩想吐怎么办 酒后第二天恶心想吐怎么办 剧烈运动后肌肉酸痛怎么办 剧烈运动后吐了怎么办 长跑后头晕想吐怎么办 运动后一直想吐怎么办 跑多了恶心想吐怎么办 剧烈运动恶心想吐怎么办 长跑之后 恶心想吐怎么办 喝咖啡后绞心痛怎么办 牛奶喝多了胃胀怎么办 运动后大量出汗头晕怎么办 屁股出汗淹的特别痛怎么办 运动完感觉很累怎么办 跑步后感觉很累怎么办 输液多了伤脾胃怎么办 运动完后特别晕怎么办 运动过量大腿肌肉酸痛怎么办 13岁发烧38.2度怎么办 头晕恶心想吐四肢无力怎么办 烧退了浑身疼怎么办 下午睡久了头疼怎么办 一天睡久了头疼怎么办 在家躺久了头疼怎么办 4周多儿童睡眠差怎么办 6岁儿童睡眠差怎么办 四年级的孩子不会写作文怎么办 四年级的孩子写不出作文怎么办? 欠了三万网贷怎么办 打完篮球浑身疼怎么办 在部队当兵意外死亡了怎么办 派派没有体力瓶怎么办 e记账登录不上怎么办 洁净净化区湿度高怎么办