Hello guys!
I am in need of your help. I am currently working on a game that is similar to Pac-Man without the walls and stuff.
Doing it while being a beginner in coding and Processing.
You will also see that I am still not finished with my work and that there are some mistakes there and there…
The biggest obstacle for me right now is on how I can loop the methods, so it won’t start the methods just once. I tried to do it with while and do-while, but got a lot of eh errors and stuff
Can you guys help me? Thank you!
Here is the code:
//Team: Medina, --, -- ;
//Class: TG13I
//Date: 23.06.2021
//Project: PacMan-AmongUs
import processing.sound.*;
SoundFile music;
PImage Hintergrund; //Allgemein: Hintergrund
PImage start; //Starthintergrund
PImage spiel; //Spielhintergrund nach dem man "1" gedrückt hat
PImage victory; //Hintergrund für Sieg
PImage defeat; //Hintergrund für Verloren
PImage muenze; //Bild Münze
//Bewegung PAC
boolean PAC;
float pacX;
float pacY;
//Münzen
boolean M;
int muenzen = 100; //Anzahl der Münzen
float [] mPoX = new float[muenzen]; //Position von Münzen x
float [] mPoY = new float[muenzen]; //Position von Münzen y
//Bewegung Geister
int geister = 4; //Anzahl Geister
float geist_ge_x; //Position des Geistes x-richtung
float geist_ge_y; //Position des Geistes y-richtung
float geist_ge_vx; //Geschwindigkeit des Geistes x-richtung
float geist_ge_vy; //Geschwindigkeit des Geistes y-richtung
//Anfang SETUP
void setup() {
size(640,640); //Größe des Fensters
start = loadImage("Hintergrund 1.png"); //Laden des Startbildes
spiel = loadImage("spielHG.png"); //Laden des Spielhintergrundes
victory = loadImage("victory.png"); //Laden des Spielhintergrundes
defeat = loadImage("defeat.png"); //Laden des Spielhintergrundes
muenze = loadImage("Münze.png"); //Laden des Spielhintergrundes
Hintergrund = start; //Startbild wird angezeigt
background(Hintergrund); //Hier deklariert
music = new SoundFile (this, "main.wav"); //Laden der Musik
music.play(); //einmalige Abspielung der Musik von "main.wav"
//music = new SoundFile (this, "victory.wav"); //Laden der Musik
//music = new SoundFile (this, "defeat.wav"); //Laden der Musik
//Geister
geist_ge_x=400; //Position des Geistes x-richtung
geist_ge_y=300; //Position des Geistes y-richtung
geist_ge_vx =-4;//Geschwindigkeit in x - Richtung
geist_ge_vy =0;//Geschwindigkeit in y - Richtung
//Münze
for (int i=0; i<muenzen;i++){ //for-Schleife für Münzen -> Initalisieren
mPoX [i] = random(0); //Position in x - Richtung
mPoY [i] = random(0); //Position in y - Richtung
switch (muenzen) //Abfrage: sobald je 25 münzen eingesammelt worden sind, verschnellern sich die Geister
{
case 75:
-- geist_ge_x; //Geschwindigkeit in x - Richtung
break;
case 50:
-- geist_ge_x; //Geschwindigkeit in x - Richtung
break;
case 25:
-- geist_ge_x; //Geschwindigkeit in x - Richtung
break;
}
}
//Pac
pacX = 20;
pacY = 60;
rectMode(CENTER);
}
//Ende von SETUP
//Anfang DRAW
void draw() {
background (Hintergrund); //Anzeige Hintergrund, hier von "start"
//Spiel wird gestartet
Start();
}
//Ende DRAW
void muenze(){
M=true;
//Münzen aktualisierung
for (int i=0; i<muenzen;i++)
{
mPoX[i] = mPoX[i]+ mPoY[i]; //Aktualisierung der Positionen
mPoY[i] = mPoY[i]+ mPoY[i];
//sollte Pac über Münze sein, verschwindet diese und wird abgezählt
if((pacY < mPoY[i]) && (mPoY[i] > pacY)||(pacX < mPoX[i]) && (mPoX[i] > pacX))
{
muenzen--; //Minus Münze
mPoX[i] = mPoX [muenzen]; //Position in x - Richtung
mPoY[i] = mPoY [muenzen]; //Position in y - Richtung
i--;
continue;
}
if (muenzen==0){ //Sollte Pac alle münzen haben -> Pac win
Hintergrund = victory; //Anzeige Hintergrund
background(Hintergrund); //Hintergrund gewechselt
}
image(muenze, mPoX[i],mPoY[i],15,15);
}
}
void Start(){
if (keyPressed)
{
if (keyCode == '1')
{
Hintergrund = spiel; //Anzeige Starthintergrund auf Spielhintergrund
background(Hintergrund); //Bei Tastendruck der "1" wird der Hintergrund gewechselt
music.stop(); //Musik wird gestoppt
Pac();
Geist();
muenze();
}
if (keyCode == '2')
{
Hintergrund = start; //Anzeige Spielhintergrund auf Starthintergrund
background(Hintergrund); //Bei Tastendruck der "2" wird der Hintergrund gewechselt
music.pause(); //Musik wird pausiert
music.play(); //Musik wird wieder gespielt
}
}
}
void Geist(){
fill(random(255), random(255), random(255), random(255));
rect(geist_ge_x,geist_ge_y,25, 25);
geist_ge_x = geist_ge_x + geist_ge_vx;
geist_ge_y = geist_ge_y + geist_ge_vy;
if((geist_ge_y < pacY) && (geist_ge_y > pacY)||(geist_ge_x < pacX) && (geist_ge_x > pacX)){ //Sollte Geist auf Pac treffen -> Pac lose
PAC = false;
Hintergrund = defeat; //Anzeige Hintergrund
background(Hintergrund); //Hintergrund gewechselt
}
// Abprall an den Wänden
if ( geist_ge_y > 50 || geist_ge_y < 590)
{
geist_ge_vy = -geist_ge_vy;
}
if ( geist_ge_x > 635)
{
geist_ge_vx = -geist_ge_vx;
}
}
void Pac(){
PAC = true;
fill(255,255,0);
rect(pacX,pacY,20, 20);
if (keyPressed) {
if (keyCode == LEFT) {
if(pacX > 50)
{
pacX = pacX - 5;
}
}
else if (keyCode == RIGHT) {
if(pacX < 590)
{
pacX = pacX + 5;
}
}
else if (keyCode == UP) {
if(pacY > 50)
{
pacY = pacY - 5;
}
}
else if (keyCode == DOWN) {
if(pacY < 590)
{
pacY = pacY + 5;
}
}
}
}