1

こんにちは私はスロットマシンゲームを構築していますが、処理に関してかなり新しい問題がいくつかあります。

私はこのコードを作成し、「ホイール」をランダムにする必要がありますが、それらはすべて同じイメージを持っています(垂直方向)

画像が表示されないことは承知しておりますので、必要に応じてリンクをご覧ください。

http://tinypic.com/r/i1jq7t/6(diamond1

http://tinypic.com/r/29fe5cg/6(cherry1

http://tinypic.com/r/sen1jo/6(bell1

int numFrames = 3;  // The number of frames in the animation
int frame = 0;
int spincount = 0;
int state = 0;
PImage[] images1 = new PImage[3];

PImage[] images2 = new PImage[3];

PImage[] images3 = new PImage[3];

void setup() {
  size(1080, 720);
  frameRate(12);

  // wheel 1 
  images1[0]  = loadImage("bell1.png");
  images1[1]  = loadImage("cherry1.png"); 
  images1[2]  = loadImage("diamond1.png");


  // wheel 3
  images3[0]  = loadImage("cherry1.png");
  images3[1]  = loadImage("bell1.png"); 
  images3[2]  = loadImage("diamond1.png");


  // wheel 2
  images2[0]  = loadImage("diamond1.png");
  images2[1]  = loadImage("bell1.png"); 
  images2[2]  = loadImage("cherry1.png");

} 

void draw() { 
  background(o);
  //test state to see if I should be spinning
  if(state == 1) {
    spin();   
  } 

}

//if a key is pressed then set the wheel to spin 
void keyReleased() {
 state = 1;
}


void spin() {
    //spin for 5 times the break out  
  if (frame == 3) { 
    frame = 0; 
    spincount ++;
      if (spincount == 10) { 
        state = 0;
        spincount = 0;
        //check if its a win and do stuff
        winner();
      }   
  }
    // wheel 1  
    image(images1[frame], 20, 0);
    image(images1[frame], 20, 170); //this is the image to test
    image(images1[frame], 20, 340);

    // wheel 2

    image(images3[frame], 200, 0);
    image(images3[frame], 200, 170); //this is the image to test
    image(images3[frame], 200, 340);

    // wheel 3

    image(images2[frame], 400, 0);
    image(images2[frame], 400, 170); //this is the image to test
    image(images2[frame], 400, 340);


    frame ++;

  }  



 void winner() {

    //are the names of the images the same   
    //if ((images3[frame].get(0,0)) == (images2[frame].get(0,0)) == (images1[frame].get(0,0))) {
       // display a question from you list of questions by generating a random number and selecting the text

       // wait for an answer
      for (int i = 0; i < 400; i = i+1) {
        if (keyPressed == true) {
          // whats the key is it correct
        }
        if (i > 400) {
        //display times up
        }
      }
    }
 // }

「勝者」の取得にも問題があります(左隅の水平方向の画像のピクセルが「勝者」に一致する場合。

私は誰もが提供できるどんな助けにも本当に感謝します。

4

1 に答える 1

0

コードにはいくつかの問題があります。

draw 関数では、おそらく黒い背景を描画したいと考えていますが、現在、数字の 0 (ゼロ) ではなく文字「o」を使用しています。

おそらく、描画関数で現在のホイールの状態を画面に描画する必要があります。現在、回転していない限り、黒いウィンドウが表示されます。

色を直接比較することはできません。

これを機能させるために変更されたコードを次に示します。

int numFrames = 3;  // The number of frames in the animation
int maxSpin = 10;
int frame = 0;
int spincount = 0;
boolean spinning = false;
boolean checkWinner = false;
PImage[] images1 = new PImage[3];
PImage[] images2 = new PImage[3];
PImage[] images3 = new PImage[3];

void setup() {
  size(1080, 720);
  frameRate(12);

  // wheel 1 
  images1[0]  = loadImage("bell1.png");
  images1[1]  = loadImage("cherry1.png"); 
  images1[2]  = loadImage("diamond1.png");


  // wheel 3
  images3[0]  = loadImage("cherry1.png");
  images3[1]  = loadImage("bell1.png"); 
  images3[2]  = loadImage("diamond1.png");


  // wheel 2
  images2[0]  = loadImage("diamond1.png");
  images2[1]  = loadImage("bell1.png"); 
  images2[2]  = loadImage("cherry1.png");
} 

void draw() { 
  background(0);
  //test state to see if I should be spinning

  // wheel 1  
  image(images1[frame], 20, 0);
  image(images1[frame], 20, 170); //this is the image to test
  image(images1[frame], 20, 340);

  // wheel 2

  image(images3[frame], 200, 0);
  image(images3[frame], 200, 170); //this is the image to test
  image(images3[frame], 200, 340);

  // wheel 3

  image(images2[frame], 400, 0);
  image(images2[frame], 400, 170); //this is the image to test
  image(images2[frame], 400, 340);

  if (spinning) {
    spin();
  }

  //this draws circles stroked in the color of the pixel at their center
  //this is just to show how the code works, you can remove this
  noFill(); // make the circles transparent
  loadPixels(); // required before using pixels[]
  color wheel1 = pixels[170*width+20];
  color wheel2 = pixels[170*width+200];
  color wheel3 = pixels[170*width+400];
  stroke(wheel1);
  ellipse(20, 170, 10, 10);
  stroke(wheel2);
  ellipse(200, 170, 10, 10);
  stroke(wheel3);
  ellipse(400, 170, 10, 10);
}

//if a key is pressed then set the wheel to spin 
void keyReleased() {
  if(!spinning) spinning = !spinning;
}


void spin() {
  //spin for maxSpin times then break out  

  if (frame == numFrames-1) { 
    spincount ++;
    if (spincount == maxSpin) { 
      spinning = !spinning;
      spincount = 0;
      //check if its a win and do stuff
      winner();
    }
    else frame = 0;
  }
  else frame++;
}  



void winner() {
  loadPixels();
  color wheel1 = pixels[171*width+21];
  color wheel2 = pixels[171*width+201];
  color wheel3 = pixels[171*width+401];
  if(hue(wheel1) == hue(wheel2) && hue(wheel2) == hue(wheel3)) println("winner");
  else println("not a winner");
}

これには、画像の角の色を確認する目的の方法が含まれますが、現在どの画像が中央に表示されているかを追跡することをお勧めします.

これにより、少なくとも正しい方向に進むことができれば幸いです。

于 2012-11-13T22:43:46.617 に答える