思路:写出我方坦克的上下左右的移动方法,在MyPanel类里继承Keylistener接口,重写三个方法
在KeyPressed方法中写出上写左右四个动作对应的四个方向,和方法,然后重绘
MyPanel类:
import javafx.scene.input.KeyCode;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.*;
import java.util.Vector;public class MyPanel extends Panel implements KeyListener {MyTank myTank = null;Vector<EnemyTank> enemyTanks = new Vector<EnemyTank>();//集合类int enemynum = 12;//坦克数量MyPanel() {myTank = new MyTank(120, 220);//初始化我的坦克的初始坐标myTank.setSpeed(5);for (int i = 0; i < enemynum / 2; i++) {EnemyTank enemyTank = new EnemyTank(i * (230 + 5), 0);//给上面的enemyTank初始化坐标enemyTanks.add(enemyTank);//向集合里面添加enemyTank}for (int i = 6; i < enemynum; i++) {EnemyTank enemyTank = new EnemyTank((12 - i - 1) * (230 + 5), 930);//给下面的enemyTank初始化坐标enemyTanks.add(enemyTank);}}public void paint(Graphics g) //重写paint方法{g.setColor(Color.black);//画笔着色g.fillRect(0, 0, 1200, 1000);//面板if (myTank.life) {drawTank(myTank.getX(), myTank.getY(), myTank.getDir(), g, 0);//画我方坦克}for (int i = 0; i < enemyTanks.size(); i++) {EnemyTank enemyTank = enemyTanks.get(i);drawTank(enemyTank.getX(), enemyTank.getY(), enemyTank.getDir(), g, 1);//画敌方坦克}}public void drawTank(int x, int y, int dir, Graphics g, int type)//画坦克{//System.out.println(dir);switch (type) {case 0://我方g.setColor(Color.red);break;case 1://敌方g.setColor(Color.green);break;}switch (dir) {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 - 3);//炮管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 - 3, 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 + 33);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 + 33, y + 10);break;}}public void keyReleased(KeyEvent e){};public void keyTyped(KeyEvent e){};public void keyPressed(KeyEvent e){if(e.getKeyCode()==KeyEvent.VK_W){myTank.up();myTank.setDir(0);}else if(e.getKeyCode()==KeyEvent.VK_S){myTank.down();myTank.setDir(2);}else if(e.getKeyCode()==KeyEvent.VK_A){myTank.left();myTank.setDir(1);}else if(e.getKeyCode()==KeyEvent.VK_D){myTank.right();myTank.setDir(3);}this.repaint();}
}
MyTank类:
public class MyTank extends Tank {MyTank(int x,int y){super(x,y);}public void up(){setY(getY()-getSpeed());}public  void down(){setY(getY()+getSpeed());}public  void left(){setX(getX()-getSpeed());}public  void right(){setX(getX()+getSpeed());}
}

JAVA之坦克大战(二)我方坦克移动相关推荐

  1. 坦克大战_我方坦克发射子弹

    Members package com.wxh.tank3;//坦克类,父类 class Tank {// 表示坦克的横坐标int x = 0;// 坦克的纵坐标int y = 0;// 坦克方向// ...

  2. java版坦克大战_JAVA实现坦克大战1.0版本

    1 packagetankGame;2 import java.awt.*;3 import javax.swing.*;4 import java.awt.event.*;5 import java ...

  3. Java之坦克大战(二)---坦克图形绘制

    紧接着我们上一篇的坦克大战一,今天我们先画出一个坦克. 如果直接用面向过程的思想来做的话,那么很容易就可以画出一个坦克. 但是后面我们需要画出很多个坦克, 所以我们要先把面向对象的思想设计好. 我们的 ...

  4. Java基础 坦克大战01绘制坦克

    java绘图坐标体系 坐标体系-像素 1.绘图还必须搞清一个非常重要的概念-像素 一个像素等于多少厘米? 2.计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的.例如,计算机显示器的分辨率是800 ...

  5. java 坦克大战暂停_【 java版坦克大战--事件处理】 坦克动起来了

    折腾了这么久,坦克总算能动了.只贴代码编辑不给上首页,花了半个小时的时间写了n多注释. 再顺便把绘图的原理发在这里: 绘图原理 Component类提供了两个和绘图有关的重要方法: ①   paint ...

  6. 坦克大战java_java版坦克大战游戏源码

    [java]代码库package tankwar; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; imp ...

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

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

  8. Fc坦克大战java_java的坦克大战

    一个渣渣写坦克大战的步骤: 1.首先创造好一个坦克和一个GAME框架,并且坦克能够跟着键盘键位移动 案例:在我的博客文件中保存,它的名字是:tankwar0100.rar 主要解决了:1.坦克背景框 ...

  9. android 坦克,Android坦克大战游戏《坦克骑士 Tank Riders》

    <坦克骑士 Tank Riders>是一款3D坦克战斗游戏,玩家在游戏当中将操控一个造型非常Q的小坦克在激烈的战斗中寻求出路.与红白机时代的坦克大战玩法完全不同,坦克骑士更具有冒险性质,而 ...

  10. cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示

    1.先定义坦克的一些属性 class Tank : public CCSprite { public :Tank();~Tank();static Tank* createTankWithTankTy ...

最新文章

  1. Redis 内存压缩实战,学习了!
  2. 神策数据胡士文:数据智能驱动业务实践
  3. How is javascript asynchronous AND single threaded?
  4. Linux如何配置网络IP地址
  5. ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  6. 生产环境nginx平滑升级
  7. struts2 空文件上传解决
  8. mysql -prompt选项
  9. 2021抖音数据报告(完整版)
  10. 字节跳动前端实习面试经历分享
  11. 10bit视频是什么?
  12. Delphi图像处理 -- 彩色浮雕
  13. PTA ## 统计字符
  14. 图文档管理系统-让企业图文档管理“井井有条”
  15. Android内存检测工具
  16. MLAT-Autoencoders---下篇-关键代码及结果展示(3)(终)
  17. Android太太太太太卷了,累了,android开发入门与实战体验
  18. UCLA计算机科学硕士项目,UC加州大学各分校哪些专业特别牛?
  19. 数据结构用递归算法计算二叉树中叶子结点数目的思想c语言程序,编写递归算法计算二叉树中叶子结点的数目。.doc...
  20. 大数据同步工具Canal

热门文章

  1. 实验九:ENSP虚拟专用网络分析
  2. 数学建模当中常用的十大模型及各对应算法
  3. ISP图像调试工程师——宽动态增强(熟悉图像预处理和后处理技术)
  4. 1.Python 配置 idea+python
  5. PHP辅助工具安装-phpMyAdmin和论坛
  6. php+鼠标离开事件,onmouseout
  7. 谷粒商城项目笔记之高级篇(三)
  8. 用腾讯优图AI视觉模组在树莓派上玩吃火锅体感游戏
  9. mysql根据id删除数据库,MYSQL删除表中的指定ID数据
  10. IE浏览器右键清理方法