package tanke.game;import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Vector;//为了监听键盘事件,实现keylistener
public class mypanel extends JPanel implements KeyListener {mytanke mytanke = null;
//定义敌人坦克放入到vector集合中Vector<enemytank>  enemytanks=new Vector<>();int enemytanksize=3;public mypanel() {mytanke = new mytanke(100, 100);//c初始化敌人坦克for(int i=0;i<enemytanksize;i++){enemytank enemytank1= new enemytank(100*(i+1),0);enemytank1.setDirect(2);enemytanks.add(enemytank1);}mytanke.setSpeed(2);}@Overridepublic void paint(Graphics g) {super.paint(g);g.fillRect(0, 0, 1000, 750);//填充矩形默认是黑色//画出坦克-方封装方法drawtank(mytanke.getX(), mytanke.getY(), g, mytanke.getDirect(), 1);//画出敌人坦克,遍历vectorfor(int i=0;i<enemytanksize;i++){//取出坦克enemytank enemytank=enemytanks.get(i);drawtank(enemytank.getX(),enemytank.getY(),g,enemytank.getDirect(),0);}}//x坦克坐标左上角,g是画笔,direct坦克方向,type 坦克类型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;}//接下来根据坦克方向绘制坦克//direct表示方向(0;向上,1;向右 2;向下 3;向左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;case 1://向右g.fill3DRect(x, y, 60, 10, false);//画出坦克左边轮子g.fill3DRect(x, y + 30, 60, 10, false);//画出坦克右边轮子g.fill3DRect(x + 10, y + 10, 40, 20, false);//画出坦克盖子g.fillOval(x + 20, y + 10, 20, 20);//画出圆g.drawLine(x + 30, y + 20, x + 60, y + 20);//画出炮筒直线break;case 2://向下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 + 60);//画出炮筒直线break;case 3://向左g.fill3DRect(x, y, 60, 10, false);//画出坦克左边轮子g.fill3DRect(x, y + 30, 60, 10, false);//画出坦克右边轮子g.fill3DRect(x + 10, y + 10, 40, 20, false);//画出坦克盖子g.fillOval(x + 20, y + 10, 20, 20);//画出圆g.drawLine(x + 30, y + 20, x, y + 20);//画出炮筒直线break;default:System.out.println("暂时没有处理");}}@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_W) {mytanke.setDirect(0);mytanke.moveup();} else if (e.getKeyCode() == KeyEvent.VK_D){mytanke.setDirect(1);mytanke.moveright();}else if (e.getKeyCode()==KeyEvent.VK_A){mytanke.setDirect(3);mytanke.moveleft();}else if (e.getKeyCode()==KeyEvent.VK_S){
mytanke.setDirect(2);
mytanke.movedown();}this.repaint();}@Overridepublic void keyReleased(KeyEvent e) {}
}

坦克大战第一阶段代码相关推荐

  1. java画好看坦克_坦克大战第一节——画出自己的坦克(新手篇)

    刚刚开始学习java,对java不是很熟悉,但是自己的兴趣挺喜欢java.现在自己在自学java做一个小游戏,坦克大战. 自己现在完成了画出自己的坦克和坦克的移动方向.希望各位大神指导一下我这个刚刚学 ...

  2. 坦克大战第一节——画出自己的坦克(新手篇)

    刚刚开始学习Java,对Java不是很熟悉,但是自己的兴趣挺喜欢Java.现在自己在自学Java做一个小游戏,坦克大战. 自己现在完成了画出自己的坦克和坦克的移动方向.希望各位大神指导一下我这个刚刚学 ...

  3. 坦克大战第一个不爆炸

    学习B站韩顺平老师的 Java 基础课时遇到的 Debug 在获取炸弹的那一行设置断点: 然后对敌方坦克射击,子弹接触到地方坦克时到达断点 此时查看变量数据,发现有 image1 变量(也就是存爆炸图 ...

  4. 坦克大战java_清华毕业大佬用一个坦克大战项目讲完了23种设计模式

    先给大家讲述一下坦克大战是怎么进行运行的. 坦克大战第一节: new 出一个窗口: 设定标题栏内容: TankFrame从Frame继承+显示: 认识paint方法,重写: 坦克大战第二节 学习gra ...

  5. C# - 课程流水线总结:计算器/计时器/我的画笔/中国象棋/坦克大战

    2020年6月末更新: 所有的源码我都传到GitHub上面去啦 点击前往GitHub 写博客这个事,还是要讲究时效性 今天补一下这学期上c#做的东西 计算器/计时器/我的画笔/中国象棋/坦克大战 第一 ...

  6. u-boot分析之两阶段代码分析(三)

    目录 u-boot(三)启动文件 1,概述 2,uboot第一阶段代码分析: 汇编 2,uboot第二阶段代码分析 C:_start_armboot C:main_loop u-boot(三)启动文件 ...

  7. java 坦克大战_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  8. java坦克大战课设报告_java课程设计之坦克大战

    本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...

  9. U-Boot 启动过程和源码分析(第一阶段)

    参考:http://blog.csdn.net/hare_lee/article/details/6916325 ******************************************* ...

最新文章

  1. 疫情期间在公共场所要全程佩戴口罩,不要抱有侥幸心理
  2. Ajax系统学习总结
  3. 阿里云OSS存储之SDK的使用
  4. python需要联网运行吗_如何暂停在终端中运行的python脚本
  5. 15原型模式(Prototype)
  6. centos7 修改yum源为阿里源
  7. php ascii art,ASCII art (简体中文)
  8. C# 采用线程重绘图形要点记录
  9. mysql5.0 mac_Mac OS X下MySQL 5.0的默认连接数
  10. oracle学习(1)--------windows环境下的安装和基本操作
  11. VMware Workstation未能挂起虚拟机
  12. 客户端设置超时,max_fails失效----问题分析
  13. linux编译谷歌浏览器方法,构建Linux版本的谷歌Chrome浏览器
  14. 华为、惠普、 戴尔、浪潮 服务器命名规则和型号分类
  15. Linux中vi编辑器的使用
  16. Omni协议PHP开发包
  17. Hello Lyq And Xj
  18. Qt Creator 快捷键
  19. 诺贝尔奖得主背后有哪些故事?美纳里尼基金会推出“超越国界对话”系列片...
  20. poi设置excel的预选下拉框

热门文章

  1. 如何查看Dell笔记本型号?
  2. 指南-Luat二次开发教程指南-功能开发教程-socket
  3. python 股票自动交易助手_哪些 Python 库让你相见恨晚?
  4. 深度学习推荐系统_深度推荐系统
  5. excel整行删除,图片一起删除
  6. 无线充电宝效果怎么样,无线充电实用性大吗
  7. 为什么互联网需要采用去中心化结构?
  8. 数据结构——图的创建以及遍历
  9. php swool 携程,EasySwoole-延迟队列-取消订单
  10. 骨传导耳机有哪些品牌、最好的骨传导蓝牙耳机品牌介绍