JAVA之坦克大战(二)我方坦克移动
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();}
}
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之坦克大战(二)我方坦克移动相关推荐
- 坦克大战_我方坦克发射子弹
Members package com.wxh.tank3;//坦克类,父类 class Tank {// 表示坦克的横坐标int x = 0;// 坦克的纵坐标int y = 0;// 坦克方向// ...
- java版坦克大战_JAVA实现坦克大战1.0版本
1 packagetankGame;2 import java.awt.*;3 import javax.swing.*;4 import java.awt.event.*;5 import java ...
- Java之坦克大战(二)---坦克图形绘制
紧接着我们上一篇的坦克大战一,今天我们先画出一个坦克. 如果直接用面向过程的思想来做的话,那么很容易就可以画出一个坦克. 但是后面我们需要画出很多个坦克, 所以我们要先把面向对象的思想设计好. 我们的 ...
- Java基础 坦克大战01绘制坦克
java绘图坐标体系 坐标体系-像素 1.绘图还必须搞清一个非常重要的概念-像素 一个像素等于多少厘米? 2.计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的.例如,计算机显示器的分辨率是800 ...
- java 坦克大战暂停_【 java版坦克大战--事件处理】 坦克动起来了
折腾了这么久,坦克总算能动了.只贴代码编辑不给上首页,花了半个小时的时间写了n多注释. 再顺便把绘图的原理发在这里: 绘图原理 Component类提供了两个和绘图有关的重要方法: ① paint ...
- 坦克大战java_java版坦克大战游戏源码
[java]代码库package tankwar; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; imp ...
- 坦克大战代码_坦克大战系列文章-坦克大战简介
前言 本篇主要对坦克大战Robocode做一个简单的介绍,对java最初的人工智能算法演练工具做一个了解 坦克大战简介 今天我们要谈的是java 最初的基于人工智能算法的仿真模拟坦克大战,全称Robo ...
- Fc坦克大战java_java的坦克大战
一个渣渣写坦克大战的步骤: 1.首先创造好一个坦克和一个GAME框架,并且坦克能够跟着键盘键位移动 案例:在我的博客文件中保存,它的名字是:tankwar0100.rar 主要解决了:1.坦克背景框 ...
- android 坦克,Android坦克大战游戏《坦克骑士 Tank Riders》
<坦克骑士 Tank Riders>是一款3D坦克战斗游戏,玩家在游戏当中将操控一个造型非常Q的小坦克在激烈的战斗中寻求出路.与红白机时代的坦克大战玩法完全不同,坦克骑士更具有冒险性质,而 ...
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
1.先定义坦克的一些属性 class Tank : public CCSprite { public :Tank();~Tank();static Tank* createTankWithTankTy ...
最新文章
- Redis 内存压缩实战,学习了!
- 神策数据胡士文:数据智能驱动业务实践
- How is javascript asynchronous AND single threaded?
- Linux如何配置网络IP地址
- ef mysql 连接数_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
- 生产环境nginx平滑升级
- struts2 空文件上传解决
- mysql -prompt选项
- 2021抖音数据报告(完整版)
- 字节跳动前端实习面试经历分享
- 10bit视频是什么?
- Delphi图像处理 -- 彩色浮雕
- PTA ## 统计字符
- 图文档管理系统-让企业图文档管理“井井有条”
- Android内存检测工具
- MLAT-Autoencoders---下篇-关键代码及结果展示(3)(终)
- Android太太太太太卷了,累了,android开发入门与实战体验
- UCLA计算机科学硕士项目,UC加州大学各分校哪些专业特别牛?
- 数据结构用递归算法计算二叉树中叶子结点数目的思想c语言程序,编写递归算法计算二叉树中叶子结点的数目。.doc...
- 大数据同步工具Canal