Könnt ihr mir bei meinem Processing-Spiel helfen?
Hey, ich habe eine Frage zu einem Java-Code. Und zwar habe ich ein unfertiges Spiel gemacht, wo drei Kugeln herunterfallen und wieder oben erscheinen, falls diese ganz unten angekommen sind.
Im Programmieren bin ich noch ein Anfänger und ich habe nicht so viel Wissen dazu.
Mit den Pfeiltasten rechts und links kann man unten das Rechteck bewegen.
Die Kugeln erhalten immer eine neue Farbe, wenn sie oben neu erscheinen.
Meine zwei Fragen wären:
- Wie kann ich es so machen, dass, wenn eine Kugel wieder oben erscheint, nur diese vom fill-Befehl betroffen ist und somit nicht das Rechteck und alle anderen Kugeln eine neue Farbe erhalten, wenn eine Kugel oben neu erscheint (Priorität)?
- Wie kann ich die Bewegung vom Rechteck smoother machen? Weil wenn man zu schnell rechts und links drückt, dann laggt das und geht irgendwie in die entgegengesetze Richtung, die man drückt (optional).
Den Code habe ich in Processing geschrieben.
Ich bedanke mich schon einmal im Voraus für jede Antwort.
Hier der Code:
float x = 200; // Rechts-, Links-Wert für den Eimer
float x1 = 250; // Wo die 1. Kugel sich horizontal befindet
float y1 = 0; // Wo die 1. Kugel sich vertikal befindet
float x2 = 100; // Wo die 2. Kugel sich horizontal befindet
float y2 = 50; // Wo die 2. Kugel sich vertikal befindet
float x3 = 385; // Wo die 3. Kugel sich horizontal befindet
float y3 = 250; // Wo die 3. Kugel sich vertikal befindet
void setup() {
size(500, 500);
}
void draw() {
background(0, 255, 0);
// Die fallenden Kugeln:
// 1. Kugel
ellipse(x1, y1, 50, 50);
y1 = y1 + 2;
if (y1 > 500) {
fill(random(0, 255));
y1 = 0;
x1 = random(50, 450);
}
// 2. Kugel
ellipse(x2, y2, 50, 50);
y2 = y2 + 2;
if (y2 > 500) {
fill(random(0, 255));
y2 = 0;
x2 = random(50, 450);
}
// 3. Kugel
ellipse(x3, y3, 50, 50);
y3 = y3 + 2;
if (y3 > 500) {
fill(random(0, 255));
y3 = 0;
x3 = random(50, 450);
}
// Der Eimer:
noStroke();
rect(x, 400, 100, 50);
if (keyPressed) {
if (keyCode == LEFT && x >0) {
x = x - 5;
}
if (keyCode == RIGHT && x <400) {
x = x + 5;
}
}
}
1 Antwort
float x = 200; // Rechts, Links Wert für den Eimer
float x1 = 250; // Wo die 1. Kugel sich Horizontal befindet
float y1 = 0; // Wo die 1. Kugel sich Vertikal befindet
float x2 = 100; // Wo die 2. Kugel sich Horizontal befindet
float y2 = 50; // Wo die 2. Kugel sich Vertikal befindet
float x3 = 385; // Wo die 3. Kugel sich Horizontal befindet
float y3 = 250; // Wo die 3. Kugel sich Vertikal befindet
// Jede Kugel hat eine eigene Farbe
color color1 = color(255, 0, 0); // Anfangsfarbe für Kugel 1
color color2 = color(0, 255, 0); // Anfangsfarbe für Kugel 2
color color3 = color(0, 0, 255); // Anfangsfarbe für Kugel 3
void setup() {
size(500, 500); // Setzt die Fenstergröße
}
void draw() {
background(0, 255, 0); // Grüner Hintergrund
// Die fallenden Kugeln:
// 1. Kugel
fill(color1); // Farbe für Kugel 1
ellipse(x1, y1, 50, 50); // Zeichnet Kugel 1
y1 = y1 + 2; // Kugel 1 fällt um 2 Pixel pro Frame
if (y1 > 500) { // Wenn Kugel 1 den Boden erreicht
y1 = 0; // Setze die Höhe zurück
x1 = random(50, 450); // Zufällige horizontale Position
color1 = color(random(255), random(255), random(255)); // Zufällige neue Farbe für Kugel 1
}
// 2. Kugel
fill(color2); // Farbe für Kugel 2
ellipse(x2, y2, 50, 50); // Zeichnet Kugel 2
y2 = y2 + 2; // Kugel 2 fällt um 2 Pixel pro Frame
if (y2 > 500) { // Wenn Kugel 2 den Boden erreicht
y2 = 0; // Setze die Höhe zurück
x2 = random(50, 450); // Zufällige horizontale Position
color2 = color(random(255), random(255), random(255)); // Zufällige neue Farbe für Kugel 2
}
// 3. Kugel
fill(color3); // Farbe für Kugel 3
ellipse(x3, y3, 50, 50); // Zeichnet Kugel 3
y3 = y3 + 2; // Kugel 3 fällt um 2 Pixel pro Frame
if (y3 > 500) { // Wenn Kugel 3 den Boden erreicht
y3 = 0; // Setze die Höhe zurück
x3 = random(50, 450); // Zufällige horizontale Position
color3 = color(random(255), random(255), random(255)); // Zufällige neue Farbe für Kugel 3
}
// Der Eimer:
noStroke(); // Keine Umrandung für das Rechteck
fill(255); // Der Eimer ist weiß
rect(x, 400, 100, 50); // Zeichnet den Eimer
// Bewegung des Eimers: Smoother durch keyIsDown()
if (keyIsDown(LEFT) && x > 0) { // Wenn die linke Taste gedrückt wird
x = x - 5; // Bewege den Eimer nach links
}
if (keyIsDown(RIGHT) && x < 400) { // Wenn die rechte Taste gedrückt wird
x = x + 5; // Bewege den Eimer nach rechts
}
}
raphaelbud
04.10.2024, 14:44
@Domi1712
liegt wahrscheinlich daran, dass keyIsDown() korrekt verwendet werden muss, indem man sicherstellt, dass die Konstanten LEFT und RIGHT (für die Pfeiltasten) richtig verwendet werden.
Danke für deine Mühe, aber weenn ich versuche den code auszuführen dann steht da da folgendes in rot: The function keyIsDown(int) does not exist.