java 坦克发射子弹_【Java_项目篇<1>】--JAVA实现坦克大战游戏--坦克发射子弹(三)...

本文介绍了如何在Java中实现坦克大战游戏的子弹发射功能。通过创建子弹类并实现Runnable接口,子弹可以按四个方向移动。在Hero坦克类中添加发射子弹的方法,并在键盘监听器中响应开火操作。同时,MyPanel类实现Runnable接口,定期重绘子弹位置,确保其在屏幕上显示。
摘要由CSDN通过智能技术生成

前期相关文章

一、任务需求

添加hero坦克子弹并且发射。

二、思路

1.创建子弹类

1.由于每颗子弹都是一个独立的线程,会不断变换子弹坐标,所以子弹类要实现Runnable接口。

2.子弹需要坐标x,y以及方向,所以构造函数有三个参数。

3.实现Runnable接口后,要覆盖run方法:

1.如果不让线程sleep,子弹飞出去很快,快到在屏幕如上瞬间消失。

2.所以增加一个sleep()

3.另外,子弹需要判断四个方向,增加switch语句

4.子弹跑出屏幕需要死亡,增加变量islive判断是否存活。否则无限制飞行,不断占用内存空间。

2.hero坦克类中加入shotEnemy()方法,表示发射子弹

1.新建子弹变量s

Shot s = null;

2.判断开火的方向,增加switch语句。

3.开火后,启动线程。

Thread t =new Thread(s);

t.start();

3.完成子弹实现过程,接着要在屏幕中让子弹显示,即画出子弹

1.paintComponent方法里加入,画出子弹

判断子弹是否存活

hero.s!=null很重要,游戏刚开始没有发射子弹,hero.s=null,此时进入if去画子弹会出现异常。

if(hero.s!=null&&hero.s.isLive==true){

g.setColor(Color.red);

g.draw3DRect(hero.s.x, hero.s.y, 1, 1, false);

}

2.在KeyPressed监听器处添加,按下J键发射一颗子弹

if(e.getKeyCode()==KeyEvent.VK_J){

hero.shotEnemy();

}

4.MyPanel实现Runnable接口

1.由于子弹打出去后,需要不断让它显示,屏幕每隔一段时间需要repaint()

所以重载run()方法,让MyPanel每隔一段时间repaint()一次

public void run() {

while(true){

try {

Thread.sleep(100);//休息100ms,重画一次MyPanel

} catch (Exception e) {

e.printStackTrace();

}

repaint();

}

5.由于MyPanel实现了Runnable接口,所以让该线程跑起来

1.在MyTankGame方法中启动线程即可

p1 = new MyPanel();

Thread t = new Thread(p1);

t.start();

三、代码如下

MyTankGame.java

0818b9ca8b590ca3270a3433284dd417.png

/** * 功能:坦克游戏的2.0 * 1.画出坦克 * 2.坦克的移动 * 3.坦克发射子弹 */

package Tank_03;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.K

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值