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. Command模式的实践
  2. 每位开发人员都应铭记的10句编程谚语 (我超喜欢,转载了)
  3. CV书单-Benjio PAMI review (up tp 2013)
  4. XP Sp2下双机通过无线网卡实现Internet共享
  5. linux系统在虚拟机中迁移的技术难点
  6. Css 分类 属性 选择器
  7. 数据:DeFi总锁定价值突破170亿美元
  8. 构建运营级IPv6网络
  9. 函数参数缺少const导致so无法加载
  10. Oracle数据库链接源文件
  11. ubuntu_使用ros显示imu的状态(6)
  12. css3图片放大缩小过度动画
  13. Python--所有的库
  14. 【改变键盘上方向键蹩脚的位置】通过autohotkey脚本实现键盘按键重映射【便利码代码】--以上下左右键映射为capslock与hjkl组合的按键 【附源码】
  15. 回归预测 | MATLAB实现贝叶斯优化门控循环单元(BO-GRU)多输入单输出
  16. 如何专业查看视频/音频/图片信息
  17. WEB编程开发常用的代码 选择自 AppleBBS 的 Blog
  18. 苹果保修期查询_查询iPhone的保修日期和激活日期
  19. 解决DVWA“reCAPTCHA key: Missing”
  20. Ubuntu 打开PSD

热门文章

  1. 【思前享后】区块链应用
  2. 采用Eclipse为IDE,设计一个Java程序,实现根据指定年份、月份计算该月天数的功能,即程序输入为年、月,输出为该月的天数。
  3. ECDH secp256k1 集成
  4. 029:vue+openlayers:使用MVT格式读取瓦片数据(示例代码)
  5. Unity 打包项目发红
  6. zend_Zend认证工程师
  7. 数据恢复必备宝典—BMP文件详解
  8. 一行输入两个整数,以空格间隔
  9. “泰迪杯”挑战赛-通过数据挖掘和监控分析网络舆情的关联度
  10. 揭开深度跟踪的力量--Unveiling the Power of Deep Tracking (ECCV2018)