坦克大战第一阶段代码
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) {}
}
坦克大战第一阶段代码相关推荐
- java画好看坦克_坦克大战第一节——画出自己的坦克(新手篇)
刚刚开始学习java,对java不是很熟悉,但是自己的兴趣挺喜欢java.现在自己在自学java做一个小游戏,坦克大战. 自己现在完成了画出自己的坦克和坦克的移动方向.希望各位大神指导一下我这个刚刚学 ...
- 坦克大战第一节——画出自己的坦克(新手篇)
刚刚开始学习Java,对Java不是很熟悉,但是自己的兴趣挺喜欢Java.现在自己在自学Java做一个小游戏,坦克大战. 自己现在完成了画出自己的坦克和坦克的移动方向.希望各位大神指导一下我这个刚刚学 ...
- 坦克大战第一个不爆炸
学习B站韩顺平老师的 Java 基础课时遇到的 Debug 在获取炸弹的那一行设置断点: 然后对敌方坦克射击,子弹接触到地方坦克时到达断点 此时查看变量数据,发现有 image1 变量(也就是存爆炸图 ...
- 坦克大战java_清华毕业大佬用一个坦克大战项目讲完了23种设计模式
先给大家讲述一下坦克大战是怎么进行运行的. 坦克大战第一节: new 出一个窗口: 设定标题栏内容: TankFrame从Frame继承+显示: 认识paint方法,重写: 坦克大战第二节 学习gra ...
- C# - 课程流水线总结:计算器/计时器/我的画笔/中国象棋/坦克大战
2020年6月末更新: 所有的源码我都传到GitHub上面去啦 点击前往GitHub 写博客这个事,还是要讲究时效性 今天补一下这学期上c#做的东西 计算器/计时器/我的画笔/中国象棋/坦克大战 第一 ...
- u-boot分析之两阶段代码分析(三)
目录 u-boot(三)启动文件 1,概述 2,uboot第一阶段代码分析: 汇编 2,uboot第二阶段代码分析 C:_start_armboot C:main_loop u-boot(三)启动文件 ...
- java 坦克大战_java课程设计之坦克大战
本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...
- java坦克大战课设报告_java课程设计之坦克大战
本文实例为大家分享了java坦克大战的具体代码,供大家参考,具体内容如下 环境要求: 操作系统:Windows 10 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 功能提示 ...
- U-Boot 启动过程和源码分析(第一阶段)
参考:http://blog.csdn.net/hare_lee/article/details/6916325 ******************************************* ...
最新文章
- Command模式的实践
- 每位开发人员都应铭记的10句编程谚语 (我超喜欢,转载了)
- CV书单-Benjio PAMI review (up tp 2013)
- XP Sp2下双机通过无线网卡实现Internet共享
- linux系统在虚拟机中迁移的技术难点
- Css 分类 属性 选择器
- 数据:DeFi总锁定价值突破170亿美元
- 构建运营级IPv6网络
- 函数参数缺少const导致so无法加载
- Oracle数据库链接源文件
- ubuntu_使用ros显示imu的状态(6)
- css3图片放大缩小过度动画
- Python--所有的库
- 【改变键盘上方向键蹩脚的位置】通过autohotkey脚本实现键盘按键重映射【便利码代码】--以上下左右键映射为capslock与hjkl组合的按键 【附源码】
- 回归预测 | MATLAB实现贝叶斯优化门控循环单元(BO-GRU)多输入单输出
- 如何专业查看视频/音频/图片信息
- WEB编程开发常用的代码 选择自 AppleBBS 的 Blog
- 苹果保修期查询_查询iPhone的保修日期和激活日期
- 解决DVWA“reCAPTCHA key: Missing”
- Ubuntu 打开PSD
热门文章
- 【思前享后】区块链应用
- 采用Eclipse为IDE,设计一个Java程序,实现根据指定年份、月份计算该月天数的功能,即程序输入为年、月,输出为该月的天数。
- ECDH secp256k1 集成
- 029:vue+openlayers:使用MVT格式读取瓦片数据(示例代码)
- Unity 打包项目发红
- zend_Zend认证工程师
- 数据恢复必备宝典—BMP文件详解
- 一行输入两个整数,以空格间隔
- “泰迪杯”挑战赛-通过数据挖掘和监控分析网络舆情的关联度
- 揭开深度跟踪的力量--Unveiling the Power of Deep Tracking (ECCV2018)