Laden...

Projekt: PacMan

Erstellt von Remling vor 8 Jahren Letzter Beitrag vor 8 Jahren 8.827 Views
R
Remling Themenstarter:in
48 Beiträge seit 2013
vor 8 Jahren
Projekt: PacMan

Hallo liebe Community,

Ich habe vor kurzem mich mal an mein erstes größeres Spiel in C# gewagt. Einem PacMan. Es ist bei weitem nicht Perfekt, heißt es fehlen ein paar dinge aber in prinzip ist es Spielbar. Das heißt folgende dinge sind vorhanden:
-PacMan selbst mit animation (heißt mund auf und zu)
-münzen zum einsammeln mit punktecounter
-3 Leben (bei 0 ist Spielende)
-Ein Timer der Mitzählt
-Gegner (3 geister welche sich wirr ohne ziel bewegen)
-Spezialitem (damit man für kurze zeit die gegner töten kann)

Was ist nicht vorhanden:
-Eine gute KI (die gegner bewegen sich komplett random)
-gute Hitboxberechnungen bei gegnern (zurzeit stirbt man nur wenn man genau im gegner steht)
-Das movement ist teilweise noch schlecht, heißt man bleibt gerne an ecken hängen
-Musik (es gibt zwar die Audiodateien, diese funktionieren im code aber nicht einwandfrei)

Das dürfte soweit alles sein

Wenn es fragen zum Code gibt kann gerne gefragt werden.
Ps: es war mein erstes größeres projekt, die programmierung ist warscheinlich für die besseren unter euch grottig, sry dafür aber ich lerne noch :I

Edit: Die datei gibts jetzt als Dateianhand jedoch ohne musik weils sonst zu groß wäre, sonst bleibt alles gleich 😛

Changelog: 18.06.2015

-Verbessertes Movement. PacMan Speichert nun die gedrückte taste für eine gewisse zeit um das movement zu verbessern. (Danke an: OlafSt)

-Edit: Uuuund gleich nen BugFix hinterher:
es war ein Bug vorhanden bei dem man teilweise an wänden für Kurzezeit stecken blieb (also wenn man mit dem rücken dagegen stand und z.B. links dann rechts gedrückt hat)

Changelog: 19.06.2015

-Neues Layout (Bild wurde weiter unten gepostet)
-X-Button zum beenden wurde hinzugefügt
-Sollten nurnoch maximal 10 Punkte auf dem Spielfeld sein wird kein neues Specialitem generiert
-achja fast vergessen: beim aufsammeln des Speedboostet bekommt man nun einen kleinen Speedboost für die Zeit 😃

Bugfixes:
-Es wurde ein Bug behoben durch den man an einer gewissen Stelle aus der Map gehen konnte 😛
-Es wurde ein bug behoben bei dem eine Fehlermeldung kahm wenn man das Spiel gewonenn hatte. (Edit: Danke an inflames2k für das Melden des Bugs)

Changelog: 22.06.2015
Es gab jetzt länger kein Update dafür ist das jetzt umso größer 😛
-PacMan's farbe im "Ragemode" wurde ein wenig verdunkelt, einfach der Optikhalber
-Im "Ragemode" verändert sich das aussehen der Geister wie im Original
-Es wurden unnötige Timer und Methoden entfernt (hat keine direkte auswirkung auf das Gameplay, es wirkt nur flüssiger)

Und nun kommen wir zu den großen neuerungen 😄
-Die KI der Geister wurde leicht verbessert, d.h. die Geister versuchen jetzt immer irgentwie zu euch zu kommen und euch zu verfolgen, wenn auch manchmal etwas unbeholfen
-Solltet ihr im "Ragemode" sein werden die Geister versuchen vor euch zu fliehen
-Geister haben einen gewissen Radius in dem sie euch verfolgen

WHAT DOES THE FOX SAYS

B
357 Beiträge seit 2010
vor 8 Jahren

Zwar noch nicht getestet, aber ich halte erst mal nichts davon, jemanden von der Seite anzumachen, nur weil derjenige noch lernt. Von daher schonmal: Gute Arbeit, unabhängig von der Codequalität. Guten Code kann man mit der Zeit lernen, aber jemand, der gar nicht erst den Hintern hochbekommt, kriegt man nur schwer dazu, überhaupt was zu tun.

Beim kurzen reinschauen allerdings gesehen, dass du bei jedem Tastendruck ein Bild von der Festplatte ausliest. Das würde ich einmal zu Spielbeginn machen und dann nur noch zwischen den Speicherobjekten wechseln. Besser noch: du brauchst nur 2 Bilder, eins mit und eins ohne Mund. Das kannst du im Speicher in 90° Schritten drehen. Spart Ressourcen und vor allem IO-Zugriffe. 😉

R
Remling Themenstarter:in
48 Beiträge seit 2013
vor 8 Jahren

Danke schonmal für das nette Feedback 😃

ich hatte anfangs die selbe Idee mit dem 90° hatte dann aber das problem das wenn ich z.B. nach oben gehe und dann nach unten will ich ja um 180° drehen muss und ich anfangs eher dachte es sei so einfacher als das alles einzeln abzufragen :I

WHAT DOES THE FOX SAYS

C
2.121 Beiträge seit 2010
vor 8 Jahren

KI ist ein bisschen zu viel gesagt für das Spiel. Was genau meinst du damit?
Zeige oder beschreibe relevante Teile, wie bewegst du die Figuren? Wie berechnest du den Hit?
Berechne die Distanz zwischen zwei Figuren mit Pythagoras, wenn die kleiner ist als ... dann ist es ein Hit.
Wie ist das Prinzip der Bewegung, was passiert beim hängenbleiben?

Zur Bewegung: Bei jedem Schritt neu per Random eine Richtung wählen ergibt nur ein Zittern. Das musst du verfeinern, damit eine eingeschlagene Richtung für eine bestimmte (zufällige) Zeit beibehalten wird.
Zum drehen der Figur kannst du den Originalzustand behalten und den jedes mal drehen. Oder du hältst einfach alle 4 Richtungen. So schlimm resourcenfressend finde ich das noch nicht, das dürfte nur ein kleines Bildchen sein.

742 Beiträge seit 2005
vor 8 Jahren

Bei Pacman gibts genau 4 Geister, jeder hat eine eigene Strategie.

Schau mal hier rein: http://home.comcast.net/~jpittman2/pacman/pacmandossier.html#Chapter_4

Du kannst natürlich deinen eigenen Ansatz reinbringen, aber für den Anfang ist das vll. nicht schlecht.

463 Beiträge seit 2009
vor 8 Jahren

Wollte es mir gerade anschauen, aber ich finde keinen Link, oder bin ich blind?

R
Remling Themenstarter:in
48 Beiträge seit 2013
vor 8 Jahren

Sry die Datei ist nun als Dateianhang zu finden 😃

-malignate:
Danke für den Hinweis, werde es mir gleich mal durlesen 😃

WHAT DOES THE FOX SAYS

O
79 Beiträge seit 2011
vor 8 Jahren

Das der Pacman beim Abbiegen an einer Wand oder Ecke hängen bleibt, ist n bissel nervig 😉 Der geübte WASD-WoW-Zocker kriegt da schnell ne Zornesader :auf der Stirn 😁 Aber dagegen gibt es ein Mittel. Das original-Pacman aus den 70er Jahren ist einfach so lange in die bisherige Richtung weitergelaufen, bis es abbiegen konnte - allerdings nur solange, bis es einen (oder waren es zwei ?) "Freßpunkte" überquert hatte (unabhängig davon, ob der Punkt nun tatsächlich gefressen wurde oder nicht). Jedes Kommando zur Richtungsänderung hat diese "Warten bis ich abbiegen kann" natürlich überschrieben.

Ansonsten finde ich das ganze echt gelungen - den Code habe ich mir allerdings nicht angeschaut, der ist ausdrücklich aus dieser Wertung ausgenommen 😁

R
Remling Themenstarter:in
48 Beiträge seit 2013
vor 8 Jahren

hh danke für das feedback
ja ich weiß die Steuerung ist sehr hackelig, wollte das mit dem zwischenspeichern schon vorher einbauen hatte da aber ein par schwierigkeiten werde es aber nochmal versuchen damit das alles flüssiger leuft :3

edit: hier mal ein bild vom neuen Design
vorschläge sind immer willkommen 😄

WHAT DOES THE FOX SAYS

2.298 Beiträge seit 2010
vor 8 Jahren

Hallo,

ich habe es mal angetestet. Nach dem Beenden der Spielrunde erscheint die Meldung, dass es abgeschlossen wurde und wie lange man dafür gebraucht hat. - Nach Bestätigung der Meldung wird eine IndexOutOfRange Exception geworfen. - Das solltest du auf jeden Fall noch Fixen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

R
Remling Themenstarter:in
48 Beiträge seit 2013
vor 8 Jahren

oha danke hab ich garnicht gesehen 😄
aber ich weiß schon was ich fixen muss 😃

WHAT DOES THE FOX SAYS

16.807 Beiträge seit 2008
vor 8 Jahren

Kurzer Hinweis.
Meines Wissens nach ist "Pac-Man" von Namco geschützt, wie auch die Figuren.
Du solltest es dann - vermutlich - nicht direkt PacMan nennen, sondern vielleicht eher sowas wie "ähnlich wie PacMan".
Aber was da der sichere Weg ist, das kann ich Dir nicht sagen.

Das ist ja wie wenn Du in der Garage nen Auto zusammen baust und es dann Porsche nennst.

P
1.090 Beiträge seit 2011
vor 8 Jahren

Zu KI vieliecht einen Vorschlag.

Grundlegend könntest du für die Geister immer den kürzesten Weg zu PacMan berechnen und sie ihn gehen lasse. (Sollte sich ein Algorithmus zu im Internet finden.)

Wenn sich 2 Geister berühren, kannst du den einen den kürzesten Weg gehen lassen. Für den 2. tust du dann so tun als ob der Weg in der Richtung Blockiert ist. Für den 3 (oder Mehr). kannst du dann schauen ob noch ein Weg frei ist, wenn ja da den den Weg nehmen, ansonsten denn des ersten.

Ich denke den Weg wirst du auch nicht jede "GameLoop" neu berechnen müssen (Wo mit du einen Skalierungs Faktor hast). Und je weiter die Geister von PacMan weg sind, des soweniger offt / genau musst du den Weg berechnen.

Ich denke da hat Abt schon recht. In meiner jugend habe ich "Rudi the Rat" gespielt. Ein PacMan Clon in dem eine Ratte Käse gesammelt hat und von Katzen gejagt wurde.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

5.657 Beiträge seit 2006
vor 8 Jahren

In meiner jugend habe ich "Rudi the Rat" gespielt.

Auf der Robotron PolyPlay war der Pacman-Clone im Hase-und-Wolf-Stil.

Ich würde ja ein Oktopus-Thema bevorzugen.

Aber offenbar sind Abts Bedenken nicht ganz abwegig: Namco Shuts Down Student's Pac-Man Project 8o

Christian

Weeks of programming can save you hours of planning

R
Remling Themenstarter:in
48 Beiträge seit 2013
vor 8 Jahren

Danke für die Anregungen, bin grade nur viel mit dem Design und Bugfixen beschäftigt
aber hier mal das Aktuelle Design, gefällt mir persönlich besser als das Alte 😄

WHAT DOES THE FOX SAYS