We are about to switch to a new forum software. Until then we have removed the registration on this forum.
Hello!
I am trying to write a little game. Its a cats paw on the cursor and there are mice running around (both inserted as images). I was trying to find out, how the mice would disappear upon collision and a mouse click with the cats paw. any help maybe?
PImage pfote;         // Deklarieren der Pfote
PImage foto;          // Deklarieren von Holzboden
PImage maus;          // Deklarieren der Maus  
PFont f;                       // Deklaration der Variablen für den Font von der Klasse PFont
String lauftext[] = {          // Deklaration des Strings für den Lauftext
  "Ist die Katze doch im Haus, rennt die Maus."
     };
float t;            //Position des Lauftextes
int txt_nr =0;
float[] x = new float[5], y = new float[5],   // Mäuse: Deklaration der Arrays für 
        vx = new float[5], vy = new float[5]; // die Position und Geschwindigkeit
void setup() {                         // Beginn Void Setup
  size(852, 900);  // Grösse des Fotos
  f=createFont("Times New Roman", 16, true);
  t=width;                             // Start des Textes ist rechts 
  pfote = loadImage ("pfote.gif");     // Bild laden der Pfote
  maus = loadImage("maus.gif");        // Bild laden der Maus        
  foto = loadImage("holz.jpg");        // Bild Laden des Holzbodens
  for (int i=0; i<5; i++) {            // Mäuse: for-Schleife für die Initialisierung 
     vx[i] = random(15);               // der Geschwindigkeiten in x- und y-Richtung
     vy[i] = random(15);               // (vx[i] ist Geschwindigleit von der Maus i in x-Richtung)
  } // end for i
   frameRate(25);
} // end setup
void draw() {             // Beginn Void Draw
  background(foto);       // Das Objekt 'foto', der Holzboden wird als Hintergrund verwendet
  fill(0);
  imageMode (CENTER);
  image (pfote, mouseX, mouseY, 100, 120); // Bild der Pfote positionieren
// Anzeige des Textes  von Text [ txt_nr  ] an der Position x
  textFont(f, 25);
  textAlign(LEFT);
  text(lauftext[txt_nr], t, 810);
  t = t - 5;                      // Dekrementieren von t   
                                  // Wenn x kleiner als -Textbreite ist, verschwindet der Text links
                                  // und beginnt wieder rechts
  float w = textWidth(lauftext[txt_nr]);        // Feststellen der Textlänge
  if (t < -w) { 
    t= width;                                   // Wenn Text links weg geht, start rechts festlegen                  
    txt_nr = (txt_nr + 1)%lauftext.length;      // Textnummer um 1 erhöhen
  }
  if ( txt_nr > 2 ) {
    txt_nr = 0;
  }                                       // Falls Meldungsnummer zu gross ist, 
                                          // wieder bei 0 beginnen.
for (int i=0; i<5; i++) {                 // for-Schleife für die Aktualiserung des Arrays
     x[i] = x[i] + vx[i];                 // Berechnung der neuen x-Position von Ball i
     y[i] = y[i] + vy[i];                 // Berechnung der neuen y-Position von Ball i
     // Abprall an den Wänden. Sobald die Bälle i ausserhalb des Zeichenbereichs sind,
     // wird die x- bzw. y-Geschwindigkeit in Gegenrichtung gekehrt.
     if ((x[i]>width) || (x[i]<0)) { vx[i] = -vx[i]; } 
     if ((y[i]>400) || (y[i]<0)) { vy[i] = (-1)*vy[i]; } 
     image(maus, x[i],  y[i], 50, 50); // Foto der mäuse einfügen
}
} // end void draw
            
Answers
Try the following code (the changes are commented):
PImage pfote; // Deklarieren der Pfote PImage foto; // Deklarieren von Holzboden PImage maus; // Deklarieren der Maus PFont f; // Deklaration der Variablen für den Font von der Klasse PFont String lauftext[] = { // Deklaration des Strings für den Lauftext "Ist die Katze doch im Haus, rennt die Maus." }; float t; //Position des Lauftextes int txt_nr =0; int maeuse = 10; //Anzahl der Mäuse float[] x = new float[maeuse], y = new float[maeuse], // Mäuse: Deklaration der Arrays für vx = new float[maeuse], vy = new float[maeuse]; // die Position und Geschwindigkeit void setup() { // Beginn Void Setup size(852, 900); // Grösse des Fotos f=createFont("Times New Roman", 16, true); t=width; // Start des Textes ist rechts pfote = loadImage ("pfote.gif"); // Bild laden der Pfote maus = loadImage("maus.gif"); // Bild laden der Maus foto = loadImage("holz.jpg"); // Bild Laden des Holzbodens for (int i=0; i<maeuse; i++) { // Mäuse: for-Schleife für die Initialisierung vx[i] = random(15); // der Geschwindigkeiten in x- und y-Richtung vy[i] = random(15); // (vx[i] ist Geschwindigleit von der Maus i in x-Richtung) } // end for i frameRate(25); } // end setup void draw() { // Beginn Void Draw background(foto); // Das Objekt 'foto', der Holzboden wird als Hintergrund verwendet fill(0); imageMode (CENTER); image (pfote, mouseX, mouseY, 100, 120); // Bild der Pfote positionieren // Anzeige des Textes von Text [ txt_nr ] an der Position x textFont(f, 25); textAlign(LEFT); text(lauftext[txt_nr], t, 810); t = t - 5; // Dekrementieren von t // Wenn x kleiner als -Textbreite ist, verschwindet der Text links // und beginnt wieder rechts float w = textWidth(lauftext[txt_nr]); // Feststellen der Textlänge if (t < -w) { t= width; // Wenn Text links weg geht, start rechts festlegen txt_nr = (txt_nr + 1)%lauftext.length; // Textnummer um 1 erhöhen } if ( txt_nr > 2 ) { txt_nr = 0; } // Falls Meldungsnummer zu gross ist, // wieder bei 0 beginnen. for (int i=0; i<maeuse; i++) { // for-Schleife für die Aktualiserung des Arrays x[i] = x[i] + vx[i]; // Berechnung der neuen x-Position von Ball i y[i] = y[i] + vy[i]; // Berechnung der neuen y-Position von Ball i // Abprall an den Wänden. Sobald die Bälle i ausserhalb des Zeichenbereichs sind, // wird die x- bzw. y-Geschwindigkeit in Gegenrichtung gekehrt. if ((x[i]>width) || (x[i]<0)) { vx[i] = -vx[i]; } if ((y[i]>400) || (y[i]<0)) { vy[i] = (-1)*vy[i]; } // Wenn Computer-Maus gedrückt und Pfote über Maus i, töte die Maus // (Tausche Maus i mit der letzten "lebenden" Maus und verringere die Anzahl der Mäuse um 1) if(mousePressed && mouseX + 100 > x[i] && mouseX < x[i] + 50 && mouseY + 120 > y[i] && mouseY < y[i] + 50) { maeuse--; x[i] = x[maeuse]; y[i] = y[maeuse]; vx[i] = vx[maeuse]; vy[i] = vy[maeuse]; i--; continue; } image(maus, x[i], y[i], 50, 50); // Foto der mäuse einfügen } } // end void drawWow thats great! thanks! I kept on working on the project and I added the codes. still doesn't seem to work… it gives me an Out of bounds error.
// mmp13b, Lisa Müller
// Fang die Mäuse :P // 12.01.2014
Error:
Exception in thread "Animation Thread" java.lang.ArrayIndexOutOfBoundsException: 5 at sketch_dec28a.setup(sketch_dec28a.java:76) at processing.core.PApplet.handleDraw(PApplet.java:1608) at processing.core.PApplet.run(PApplet.java:1530) at java.lang.Thread.run(Thread.java:695)
Which line is highlighted?
I solved the Problem. It Works now. How can I make it re-run the game and music if the timer is over?