I programmed a Pong game in the editor Processing. I would be glad if you could give some improvements.
//Variabeln werden erstellt
int untere_spiel_grenze;
int obere_spiel_grenze;
float spieler_x;
float spieler_y;
float ball_x;
float ball_y;
float ball_geschwindigkeit_x;
float ball_geschwindigkeit_y;
float spieler_2_x;
float spieler_2_y;
int runde;
int spieler_leben;
int spieler_2_leben;
int spieler_2_runden;
int spieler_runden;
int spieler_punkte;
int spieler_2_punkte;
boolean spieler_runde_anzeige;
boolean spieler_2_runde_anzeige;
//Blur-Effekt
int blur_anzahl = 10;
float [][] positions_array;
//Das Setup wird einmal am Anfang ausgeführt
void setup() {
//Definiert die grösse des Arrays
positions_array = new float[blur_anzahl][2];
//Deklariert die Werte der Variabeln
spieler_x = 20;
spieler_y = 60;
spieler_2_x = 780;
spieler_2_y = 60;
untere_spiel_grenze = 595;
obere_spiel_grenze = 5;
ball_x = 400;
ball_y = 300;
ball_geschwindigkeit_x = -3;
ball_geschwindigkeit_y = 0;
runde = 0;
spieler_leben = 5;
spieler_2_leben = 5;
spieler_punkte = 0;
spieler_2_punkte = 0;
spieler_runde_anzeige = false;
spieler_2_runde_anzeige = false;
spieler_2_runden = 0;
spieler_runden = 0;
textSize(14);
//Bestimmt die Grösse des Fenster
size (800, 600);
//Ändert den Ausgangspunkt der RECT
rectMode(CENTER);
}
void draw() {
//Bestimmt die Farbe des Fenster
background(0);
//Erstellt die beiden Spieler und den Ball
rect(spieler_x, spieler_y, 20, 100);
rect(spieler_2_x, spieler_2_y, 20, 100);
rect(ball_x, ball_y, 10, 10);
positions_array[0][0] = ball_x;
positions_array[0][1] = ball_y;
//Blur-Effekt
for (int i = (blur_anzahl -1); i > 0; i--) {
fill (0, 255, 0, 255/(i*2));
positions_array[i][0] = positions_array[i-1][0];
positions_array[i][1] = positions_array[i-1][1];
rect (positions_array[i][0], positions_array[i][1], 10, 10);
}
//Abfrage ob eine Taste Gedrückt ist
if (keyPressed) {
//Abfrage ob die nach unter Taste gedrückt ist
if (keyCode == DOWN) {
//Fragt, solange Spieler nicht aus dem Spielfeld
if (spieler_2_y < 550) {
//Spieler bewegt sich in y Richtung nach unten
spieler_2_y = spieler_2_y + 5;
}
}
//Abfrage ob die nach oben Taste gedrückt wird
if (keyCode == UP) {
//Fragt, solange Spieler nicht aus dem Spielfeld
if (spieler_2_y > 50) {
//Spieler bewegt sich in y Richtung nach oben
spieler_2_y = spieler_2_y - 5;
}
}
}
//Wird definiert, was passiert, wenn der Ball den Spieler trifft
if (ball_x > 770) {
if (ball_y < (spieler_2_y + 55) && ball_y > (spieler_2_y -55)) {
ball_geschwindigkeit_x = (-ball_geschwindigkeit_x) -1;//Verschnellert denn Ball
ball_geschwindigkeit_y = ball_geschwindigkeit_y - (spieler_2_y - ball_y) * 0.2; //Lässt ihn in eine andere Richtung fliegen
runde = runde +1 ;
spieler_2_punkte = spieler_2_punkte + 100;
}
//Der Ball kommt in die Mitte
else {
ball_x = 400;
ball_y = 300;
ball_geschwindigkeit_x = 0;
ball_geschwindigkeit_y = 0;
spieler_runde_anzeige = true;
spieler_runden = spieler_runden + 1;
spieler_2_leben = spieler_2_leben -1;
}
}
//Abfrage ob eine Taste Gedrückt ist
if (keyPressed) {
//Abfrage ob die S Taste gedrückt ist
if (key == 's') {
//Fragt, solange Spieler nicht aus dem Spielfeld
if (spieler_y < 550) {
//Spieler bewegt sich in y Richtung nach unten
spieler_y = spieler_y + 5;
}
}
//Abfrage ob die W Taste gedrückt ist
if (key == 'w') {
//Fragt, solange Spieler nicht aus dem Spielfeld
if (spieler_y > 50) {
//Spieler bewegt sich in y Richtung nach oben
spieler_y = spieler_y - 5;
}
}
}
//Hier bekommt der Ball seine Geschwindigkeit
ball_x = ball_x + ball_geschwindigkeit_x;
ball_y = ball_y + ball_geschwindigkeit_y;
//Wird definiert, was passiert, wenn der Ball den Spieler trifft
if (ball_x < 30) {
if (ball_y < (spieler_y + 55) && ball_y > (spieler_y - 55)) {
ball_geschwindigkeit_x = (-ball_geschwindigkeit_x) +1;//Verschnellert denn Ball
ball_geschwindigkeit_y = ball_geschwindigkeit_y - (spieler_y - ball_y) * 0.2;//Lässt ihn in eine andere Richtung fliegen
runde = runde +1 ;
spieler_punkte = spieler_punkte + 100;
}
//Der Ball kommt in die Mitte
else {
ball_x = 400;
ball_y = 300;
ball_geschwindigkeit_x = 0;
ball_geschwindigkeit_y = 0;
spieler_2_runde_anzeige = true;
spieler_2_runden = spieler_2_runden + 1;
spieler_leben = spieler_leben -1;
}
}
//Erstellt die untere und obere Spielgrenze
if (ball_y > untere_spiel_grenze || ball_y < obere_spiel_grenze) {
ball_geschwindigkeit_y = -ball_geschwindigkeit_y;
}
//Fragt ab, ob der Ball in der Mitte steht
if (ball_geschwindigkeit_x == 0) {
//Fragt ab, welcher mehr Runden hat
if (spieler_runde_anzeige == true) {
textSize(15);
text("Spieler1 hat diese Runde gewonnen!", 270, 200);
textSize(14);
}
if (spieler_2_runde_anzeige == true) {
textSize(15);
text("Spieler2 hat diese Runde gewonnen!", 270, 200);
textSize(14);
}
//Erstellt die Reset Funktion
if (keyPressed) {
if (key == 'r' ) {
ball_geschwindigkeit_x = -3;
ball_geschwindigkeit_y = 0;
runde = 0;
spieler_2_runde_anzeige = false;
spieler_runde_anzeige = false;
}
}
}
//Erstellt den ganzen Text im Spiel (Rundenangabe, Leben usw.)
text("Runde: " + runde, 360, 20);
text("Gewonnene Runden: " + spieler_runden, 100, 20);
text("Gewonnene Runden: " + spieler_2_runden, 600, 20);
text("Spieler1 Leben: " + spieler_leben, 100, 550);
text("Spieler2 Leben: " + spieler_2_leben, 600, 550);
text("Punkte: "+ spieler_punkte, 100, 40);
text("Punkte: "+ spieler_2_punkte, 600, 40);
//Fragt, wenn der Spieler1 verloren hat
if (spieler_leben == 0 ) {
textSize(20);
text ("Spieler2 hat die Partie gewonnen!", 240, 500);
text("Punktestand: " + spieler_2_punkte, 320, 450);
textSize(14);
//Fragt, ob Reset verlangt wurde
if (keyPressed) {
if (key == 'r' ) {
exit();//Schliesst das Spiel
}
}
}
//Fragt, wenn der Spieler1 verloren hat
if ( spieler_2_leben == 0) {
textSize(20);
text ("Spieler1 hat die Partie gewonnen!", 240, 500);
text("Punktestand: " + spieler_punkte, 320, 450);
textSize(12);
//Fragt, ob Reset verlangt wurde
if (keyPressed) {
if (key == 'r' ) {
exit();//Schliesst das Spiel
}
}
}
}