Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在尝试创建矩形循环时,如何解决while循环(处理)中的问题_Java_Processing - Fatal编程技术网

Java 在尝试创建矩形循环时,如何解决while循环(处理)中的问题

Java 在尝试创建矩形循环时,如何解决while循环(处理)中的问题,java,processing,Java,Processing,这个代码有什么问题 Boolean counter2, counter1, counter3, counter4; 这是计数器变量 switch(key) { case 'x': counter3 = true; break; } 开关键功能 while(counter3 == true) { int bullet = 355; rect(bullet, jump1, 10, 20); bullet++;

这个代码有什么问题

 Boolean counter2, counter1, counter3, counter4; 
这是计数器变量

switch(key) {
    case 'x': 
        counter3 = true;
        break; 
}
开关键功能

while(counter3 == true)
{
      int bullet = 355;
      rect(bullet, jump1, 10, 20); 
      bullet++;
}
当功能按下“x”时,它会持续停止

完整代码

 int wm1 =355;

    int a=355;
    boolean counter2,counter1,counter3,counter4;
    int movement1=280,movement2=850;
      int jump1=380,jump2=380;
    int x,y,z;

    void setup(){
    background(200);
    }



    void settings(){

    size(600,600);

    }
    void draw(){
      background(0);
      fill(200);
    textSize(70);

    text("2p shooter game",10,150);
    textSize(60);
    fill(42);
    rect(250,300,120,60);
    fill(x,y,z);
    text("Play",250,350);
    textSize(20);
    fill(249,249,0);
    text("made by: mostafa mahmoud sayed",149,500);
    text("version:beta",250,560);
    x=x+1;
    y=y+2;
    z=z+3;

    if(mouseX<370&&mouseX>250&&mouseY<360&&mouseY>300&&mousePressed){
    delay(150);

     class SecondApplet extends PApplet {

      public void settings() {
        size(1200, 600);
      }
      public void draw() {
    background(200);
        fill(0,255,0);
        rect(50,500,500,50);
        rect(650,500,500,50);
            rect(50,220,500,50);
        rect(650,220,500,50);
        //  ground terrian //
        fill(255,0,0);
        rect(movement1,jump1,70,120);
        rect(movement1,jump1,70,50);
        //p1//
        fill(0,0,255);
        rect(movement2,jump2,70,120);
        rect(movement2,jump2,70,50);
        //p2//


            rect(wm1,jump1,10,40);

        rect(wm1,jump1,50,25);

        switch(key){
        case 'w' :  

        fill(0,0,0);
    jump1=100;
    break;
    case 'i':

    jump2=100;
    break;
    case 'd':

    counter1=true;
     break;   
     case 'a':

    counter1=false;
     break;  
      case 'l':

    counter2=true;
     break;  
      case 'j':

    counter2=false;
     break;   
     case 'k':

    jump2=380;
     break;  
      case 's':

    jump1=380;
     break;  
    case'x':counter3=true;
    break;

        }
   while(counter3==true){int bullet = 355;rect(bullet,jump1,10,20); bullet++;}
    if(counter1==true){
    movement1++;
    wm1++;
    }
    else if(counter1==false){movement1--;wm1--;}

    if(counter2==true){
    movement2++;
    }
    else if(counter2==false){movement2--;}



      }}



      String[] args = {"TwoFrameTest"};
      SecondApplet sa = new SecondApplet();
      PApplet.runSketch(args, sa);

    }
    }
intwm1=355;
INTA=355;
布尔计数器2,计数器1,计数器3,计数器4;
int movement1=280,movement2=850;
内部跳线1=380,跳线2=380;
int x,y,z;
无效设置(){
背景(200);
}
无效设置(){
尺寸(600600);
}
作废提款(){
背景(0);
填充(200);
文本大小(70);
文本(“2p射击游戏”,10150);
文本大小(60);
填充(42);
rect(250300120,60);
填充(x,y,z);
文本(“播放”,250350);
文本大小(20);
填充(249249,0);
文本(“作者:mostafa mahmoud sayed”,149500);
文本(“版本:beta”,250560);
x=x+1;
y=y+2;
z=z+3;
如果(鼠标250&&mouseY300&&mousePressed){
延迟(150);
类SecondApplet扩展了PApplet{
公共无效设置(){
大小(1200、600);
}
公众抽签(){
背景(200);
填充(0255,0);
rect(50500500,50);
rect(65050500,50);
rect(50220500,50);
rect(650220500,50);
//地面地形//
填充(255,0,0);
rect(移动1,跳线1,70120);
rect(移动1、跳跃1、70、50);
//p1//
填充(0,0255);
rect(移动2,跳线2,70120);
rect(移动2、跳跃2、70、50);
//p2//
rect(wm1,jump1,10,40);
rect(wm1,jump1,50,25);
开关(钥匙){
案例“w”:
填充(0,0,0);
跳线1=100;
打破
案例“i”:
跳线2=100;
打破
案例“d”:
计数器1=真;
打破
案例“a”:
计数器1=假;
打破
案例“l”:
计数器2=正确;
打破
案例“j”:
计数器2=假;
打破
案例“k”:
跳线2=380;
打破
案例s:
跳线1=380;
打破
案例“x”:counter3=true;
打破
}
while(counter3==true){int bullet=355;rect(bullet,jump1,10,20);bullet++}
if(counter1==true){
movement1++;
wm1++;
}
如果(counter1==false){movement1--;wm1--;}
if(counter2==true){
movement2++;
}
如果(counter2==false){movement2--;}
}}
字符串[]args={“TwoFrameTest”};
SecondApplet sa=新的SecondApplet();
PApplet.runSketch(args,sa);
}
}

在处理过程中,在draw方法中使用大量循环不是一个好主意,因为draw()会在每一帧自动调用。此外,在您的代码中,计数器3在while循环中从不改变,所以您的代码进入无限循环

将while更改为if,它将不再冻结

if(counter3==true) {
    int bullet = 355;
    rect(bullet,jump1,10,20);
    bullet++;
}

确保根据您的程序逻辑在某个地方更改计数器3,否则它将始终为真,并且将始终执行if块

您发布的不是a,但这看起来像一个无限循环。
while
循环的条件不会在循环体内部更新,因此循环体只会一次又一次地执行。
while(counter3==true){int bullet=355;rect(bullet,jump1,10,20);bullet++;}
是一个无限循环,或者根本不会运行。你是说不要在循环中创建对象,而是在主体中创建对象,并在更改变量时使用它。我建议做几件事,让你的生活更轻松:1)正确设置代码格式,使其更具可读性2)在尝试使用之前先学习面向对象编程的基础知识制作一个游戏3)学会正确使用事件,如击键等-对
键的处理看起来非常脆弱。谢谢大家的评论,我会以其他方式考虑制作多个矩形