思路:添加子弹类,并且写出子弹运行的线,然后在Mytank中添加新的fire()方法,用于发射子弹时获得当前炮管的方向,因为子弹较多所以需要把子弹放在Vector集合里,并且需要开多线程,因为子弹运动需要进行重绘,所以就需要Panel开多线程。
1.Bullet类:
public class Bullet implements  Runnable{  //多线程private  int speed=10;private  int dir;boolean life=true;public int getSpeed() {return speed;}public void setSpeed(int speed) {this.speed = speed;}public int getDir() {return dir;}public void setDir(int dir) {this.dir = dir;}public  void run()//重写runnable 接口重点额run方法{while (true)//子弹一直飞{//JAVA特有异常抛出switch (getDir())//子弹坐标改变(移动){case 0:setY(getY()-getSpeed());break;case 1:setX(getX()-getSpeed());break;case 2:setY(getY()+getSpeed());break;case 3:setX(getX()+getSpeed());break;}if(getX()<0||getY()<0||getX()>1200||getY()>1000){life=false;break;}//判断是否过边界如果过边界了那么子弹的生命就没了try//程序正常时执行{Thread.sleep(50);//让程序暂停50ms}catch (Exception e)//非正常时执行{}}}public int getX() {return x;}public void setX(int x) {this.x = x;}public int getY() {return y;}public void setY(int y) {this.y = y;}private  int x;private  int y;Bullet(int x,int y,int dir)//子弹需要构造函数直接给方向赋值{this.x=x;this.y=y;this.dir=dir;}
}
2.MyTank中的新方法fire():
    public void fire()//装弹{switch (this.getDir()){case 0:bullet = new Bullet(this.getX()+8,this.getY()-7,0);bulletVector.add(bullet);break;case 1:bullet = new Bullet(this.getX()-7,this.getY()+8,1);bulletVector.add(bullet);break;case 2:bullet = new Bullet(this.getX()+8,this.getY()+30,2);bulletVector.add(bullet);break;case 3:bullet = new Bullet(this.getX()+30,this.getY()+8,3);bulletVector.add(bullet);break;}Thread thread = new Thread(bullet);thread.start();}
3.MyPanel中添加的线程
public void run(){while (true){try{Thread.sleep(50);}catch (Exception e){}repaint();}}

JAVA之坦克大战(三)我方坦克发射炮弹相关推荐

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

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

  2. (四)坦克大战--(2)发射炮弹

    1,前言 制作坦克发射炮弹 参考自–b站视频 2,思路 发射炮弹的思路其实就是: 实例化一个炮弹出来,然后给这个炮弹添加一个向前的力,使其发射 3,步骤 3.1,发射位置 首先需要给PlayerTan ...

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

    1 packagetankGame;2 import java.awt.*;3 import javax.swing.*;4 import java.awt.event.*;5 import 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. html5坦克大战游戏,HTML5坦克大战游戏简化版

    本文作者html5tricks,转载请注明出处 之前我们有分享过不少经典的HTML5游戏,有些还是很有意思的,比如HTML5版切水果游戏和HTML5中国象棋游戏.今天要分享的是一款简化版的 JavaS ...

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

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

最新文章

  1. C# GUID的使用
  2. 2020年全球程序员收入报告出炉,字节跳动成唯一上榜中国公司
  3. C语言和JAVA可以互相转换吗,求助大神!!!JAVA转换成C语言
  4. Xamarin.Forms Button长按事件
  5. AS3读取XML文档
  6. 心率 心律 脉率的区别
  7. 我去头条面试,面试官问我如何设计好API,看看我是如何吊打面试官的!
  8. cpu真假有没有装机测试软件,有了她装机被骗很难 实用电脑检测软件推荐
  9. 深度学习-深度卷积神经网络发展
  10. lpad用法 oracle,oracle lpad 的用法
  11. 前端入门篇(五十三)JS应用6打地鼠小游戏
  12. 小说里的编程 【连载之二十九】元宇宙里月亮弯弯
  13. 关于谷歌插件开发的了解
  14. RoboCupRescue心得
  15. Java implements和extends的区别
  16. 转发:任正非寄语2010:开放、妥协与灰度
  17. Comet OJ 夏季欢乐赛 完全k叉树
  18. 单词底部有波浪线,提示typo in word时
  19. 墨者学院-SQL注入漏洞测试(报错盲注)
  20. Base64转docx的python实现

热门文章

  1. MySQL索引系列:全文索引
  2. 1 什么是机器学习?
  3. 【明星学员】hadoop让我的人生拥有一万种可能-Java崔金辉
  4. ASPICE详细介绍-3.ASPICE有多少能力等级?
  5. jQuery ajaxSetup() 全局默认配置
  6. 适用于 Windows 的 X 服务器
  7. java版本的八字计算
  8. 读《暗时间》的很多摘抄与很少感悟
  9. css3动画简单案例
  10. CAD编辑指南2:PDF:转DWG的常见方法