目录

  • 1. java绘图技术
    • 1.1 画坦克
    • 1.2 画乌龟
  • 2. 移动图形
    • 2.1 移动小球
    • 2.2 移动坦克
    • 2.3 Java事件处理机制

欢迎来到坦克大战

1. java绘图技术


JFrame:画板
Jpanel:画板
Graphics:画笔

初始化画板,定义画框的大小,设置可视化;

1.1 画坦克




初始化我方坦克、敌方坦克

绘图:(1)更改背景颜色;(2)绘制敌方坦克;(3)绘制我方坦克

绘制坦克

 /*** @param x      坦克左上角的x坐标* @param y      坦克左上角的y坐标* @param g      画笔* @param direct 坦克方向(上下左右)* @param 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;}//根据坦克方法,绘制坦克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;}
}

1.2 画乌龟


2. 移动图形

2.1 移动小球

  1. 为了让小球可以移动,用x,y表示小球左上角的坐标
  2. 实现KeyListener监听器,监听键盘的按压
  3. 调用repaint()重新绘制画板
  4. 给画框JFrame添加键盘监听器

2.2 移动坦克

实现监听事件

//为了监听键盘事件,实现监听器接口KeyListener
public class MyPanel extends JPanel implements KeyListener {@Overridepublic void keyTyped(KeyEvent e) {}@Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_DOWN || e.getKeyCode() == KeyEvent.VK_S) {hero.setDirect(2);hero.moveDown();} else if (e.getKeyCode() == KeyEvent.VK_UP || e.getKeyCode() == KeyEvent.VK_W) {hero.setDirect(0);hero.moveUp();} else if (e.getKeyCode() == KeyEvent.VK_RIGHT || e.getKeyCode() == KeyEvent.VK_D) {hero.setDirect(1);hero.moveRight();} else if (e.getKeyCode() == KeyEvent.VK_LEFT || e.getKeyCode() == KeyEvent.VK_A) {hero.setDirect(3);hero.moveLeft();}//重绘this.repaint();}@Overridepublic void keyReleased(KeyEvent e) {}
}

2.3 Java事件处理机制

java事件处理是采用的“委派事件模型”,当事件发生时,产生事件的对象,会把此“信息”传给“事件的监听者”来处理,这里所说的“信息”实际上就是java.awt.event事件类库里的某个类所创建的对象,称为“事件的对象”。

1.事件源:事件源是一个产生事件的对象,比如按钮、窗口等;
2.事件:事件是承载事件源状态改变时的对象,比如当键盘事件、鼠标事件、窗口事件等等,会生成一个事件对象,该对象保存着当前事件很多信息,比如KeyEvent对象有含有被按下键的Code值。java.awt.event包和javax.swing.event包中定义了各种事件类型。
3.事件监听器接口:(1)当事件源产生一个事件,可以传送给事件监听者处理;(2)事件监听者实际上就是一个类,该类实现了某个事件监听器接口,比如前面案例中的MyPanel就是一个类,它实现了KeyListener接口,就可以作为一个事件监听者,对接收到的事件,进行处理;(3)事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现多个监听接口;(4)这些监听器接口在java.awt.event包和javax.swing.event包中定义。

❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀坦克大战系列二:从零编写【坦克大战】❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀欢迎点赞

坦克大战系列一:从零编写【坦克大战】相关推荐

  1. c语言编写坦克大战设计报告,c语言编写坦克大战源代码

    <c语言编写坦克大战源代码>由会员分享,可在线阅读,更多相关<c语言编写坦克大战源代码(10页珍藏版)>请在人人文库网上搜索. 1.include tank.h#include ...

  2. 坦克大战系列二:从零编写【坦克大战】

    目录 1. 我方坦克发射单颗子弹 2.敌方坦克发射子弹 3. 击中敌方坦克 4. 爆炸效果 5. 敌方坦克自由移动 6.移动范围问题 7. 我方坦克发射多颗子弹 8. 敌方发射的子弹消亡后可以再发射子 ...

  3. eclipse 导入项目_JAVA编程实战:坦克大战系列2-坦克如何在eclipse中编写

    游戏中寻找学习JAVA的乐趣之 坦克大战系列2-坦克如何在Eclipse中编写 前言 本篇主要对Robocode在eclipse中如何配置并编写. Eclipse中的配置 通过本身自带的编辑器去写代码 ...

  4. 坦克大战代码_坦克大战系列文章-坦克大战简介

    前言 本篇主要对坦克大战Robocode做一个简单的介绍,对java最初的人工智能算法演练工具做一个了解 坦克大战简介 今天我们要谈的是java 最初的基于人工智能算法的仿真模拟坦克大战,全称Robo ...

  5. java坦克大战爆炸效果_Java极致毁童年系列、你们火星的坦克大战这样的吧

    原标题:Java极致毁童年系列.你们火星的坦克大战这样的吧 这是使用java开发的一个单机版的小游戏 (未使用任何游戏引擎) 和经典版的坦克大战有些不同, 这里是纯坦克之间的战争, 英雄坦克并不用保护 ...

  6. CocosCreator项目学习系列lt;三gt;BattleCity_90tank坦克大战项目的学习

    CocosCreator项目学习系列<三>坦克大战项目的学习<25/12/2017> 知识点总结: 1.TileMap的使用精髓; 2.Joystick虚拟摇杆的整合单脚本; ...

  7. MFC与坦克大战系列(奇迹冬瓜)---chapter2(photoshop与TransparentBlt---快速生成背景与透明位图处理)

    今天继续MFC与坦克大战系列.做程序是要有团队合作.毕竟大多数程序员不可能做到美工和程序都精通.但是只有一个人的时候.就需要快捷的生成比较看的过去的图片供游戏所需.就拿坦克大战这个游戏程序来说.刚开始 ...

  8. python编写坦克大战过程

    目录 一.首先明白编写坦克大战有哪些需求 二.细节编写 1.完成游戏的主要逻辑 2.完成坦克 1)完成我方坦克 2)完成敌方坦克 3.完成子弹 1)我方坦克射击 2)敌方坦克 3)我方子弹和敌方坦克碰 ...

  9. java编写坦克大战

    微信公众号:Java成长录 感兴趣可以关注下哦,Java知识点,学习路线规划,Java相关电子书,一起学习呀!. 简介:纯java面向对象编程,用到多线程,GUI,异常处理 1.我方坦克粉色,敌方坦克 ...

最新文章

  1. Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法
  2. tf.stack与tf.unstack
  3. iTween基础之Color(变换颜色)
  4. MySQL逻辑运算符的使用
  5. vscode中安装webpack_webpack项目配置流程
  6. Matlab 图像处理的一些杂记
  7. nil,Nil,NULL,NSNull
  8. Toad for Oracle9.7中导入数据库以后,数据有中文乱码:
  9. SQL索引管理器——用于SQL Server和Azure上的索引维护的免费G​​UI工具
  10. php 删除数字索引元素,PHP重置数组为连续数字索引的几种方式
  11. chap6_2 Parallax mapping in OGRE
  12. 蚁群算法路径规划_环境感知与规划专题(十)——基于采样的路径规划算法(二)...
  13. 2016-05-25 margin-right jsp获取页面流变量 文字颜色
  14. 统计学的Python实现-013:频度分布表
  15. postman安装报错 无法定位_Postman中文版
  16. MySQL数据库入门(三)--- 查询、权限、join语法、外键、备份
  17. php自定义文件后缀名,显示文件扩展名 显示文件后缀名设置篇-DIV CSS网页开发准备...
  18. java类注释 写作规范_Java标准注释及规范
  19. 用python读取txt文件中的数据并画各类图形展示_Python实现读取txt文件中的数据并绘制出图形操作示例...
  20. 如何使用正规seo技术做网站排名?

热门文章

  1. Quene与Public Group的应用场景
  2. Invalid options object. Dev Server has been initialized using an options object
  3. 关于SpringCloud消费者报I/O error on GET request for...的错误
  4. 关于SD净价的计算的机理
  5. 关于tesseract的报错解决
  6. 微信小程序中使用echart、动态加载几条折线
  7. bryntum gantt
  8. 安装.NET Framework 3.5 SP1 超慢的解决办法
  9. 使用Python脚本玩转类FOMO3D游戏
  10. checkbox判断是否选中和设置选中状态