Processing 处理:自上而下射手中的多发子弹

Processing 处理:自上而下射手中的多发子弹,processing,Processing,我想做一个简单的自上而下的射手。当用户按下W、A、S或D时,“子弹”(矩形)将从“射手”中弹出。根据我的代码,在到达屏幕末端之前,每个方向只能发射一颗子弹。有没有办法让他们(用户)可以朝一个方向发射多发子弹 这是我的密码: package topdownshooter; 导入处理.core.PApplet; 导入加工.core.PImage; 公共类TopDownShooter扩展PApplet{ 皮马杰射手; 浮动射手x=400; 浮动射击=300; 浮动速度; 浮球速度; 浮球速度; 浮球速

我想做一个简单的自上而下的射手。当用户按下W、A、S或D时,“子弹”(矩形)将从“射手”中弹出。根据我的代码,在到达屏幕末端之前,每个方向只能发射一颗子弹。有没有办法让他们(用户)可以朝一个方向发射多发子弹

这是我的密码:

package topdownshooter;
导入处理.core.PApplet;
导入加工.core.PImage;
公共类TopDownShooter扩展PApplet{
皮马杰射手;
浮动射手x=400;
浮动射击=300;
浮动速度;
浮球速度;
浮球速度;
浮球速度;
布尔shootUp=false;
布尔左=假;
布尔分解=假;
布尔shootRight=false;
公共静态void main(字符串[]args){
PApplet.main(“topdownshooter.topdownshooter”);
}
公共作废设置(){
shooter=loadImage(“shooter.png”);
}
公共无效设置(){
尺寸(800600);
}
按public void键(){
如果(键=='w'){
shootUp=true;
}
如果(键=='a'){
shootLeft=true;
}
如果(键=='s'){
击落=正确;
}
如果(键=='d'){
shootRight=true;
}
}
公众抽签(){
背景(206);
图像模式(中心);
图像(射手、射手、射击术);
如果(shootUp==true){
rect(shooterX,shooterY-u_-bulletSpeed,5,5);
u_速度+=2;
如果(u_Bullet速度>300){
速度=0;
射击=假;
}
}
if(shootLeft==true){
rect(shooterX-l_bulletSpeed,shooterY,5,5);
l_速度+=2;
如果(低速>400){
l_速度=0;
shootLeft=false;
}
}
如果(分解==真){
rect(shooterX,shooterY+d_bulletSpeed,5,5);
d_速度+=2;
如果(d_Bullet速度>300){
d_速度=0;
击落=错误;
}
}
if(shootRight==true){
rect(shooterX+r_bulletSpeed,shooterY,5,5);
r_速度+=2;
如果(r_bulletSpeed>400){
r_速度=0;
shootRight=false;
}
}
}
}
语言正在处理,我正在使用EclipseIDE。
谢谢

如果我是你,我会这么做。首先,我将您的项目符号数据封装到一个类中,如下所示:

class Bullet{
  float x;
  float y;
  float xSpeed;
  float ySpeed;

  // you probably want a constructor here

  void drawBullet(){
    // bullet drawing code
  }
}
bullets.add(new Bullet(bulletX, bulletY));
然后我将创建一个
ArrayList
,其中包含
Bullet
实例:

ArrayList<Bullet> bullets = new ArrayList<Bullet>();
然后,为了绘制项目符号,我将迭代
ArrayList
,并调用相应的函数:

for(Bullet b : bullets){
  b.drawBullet();
}
无耻的自我推销:

  • 是关于创建类的教程
  • 是关于使用
    ArrayList
    的教程

@Hedgy你对哪一部分感到困惑?还请注意,您可以从将值存储在单独的数组或ArrayList中开始。这不是一个很好的习惯,但它可能会帮助你摆脱困境。一切正常。。。几乎。在
项目符号.add(新项目符号(bulletX,bulletY))
中,我得到一个错误
变量bulletX/Y不存在
。我试着让它们变为变量,但它说
构造函数项目符号(float,float)不存在
@Hedgy请注意,我的代码只是一个示例,并不打算复制粘贴。注意我的
Bullet
类中的注释,它说您可能需要添加自己的构造函数。