Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.03.2011, 18:17

Pacman Spiel

Hallo ich bin dabei ein Pacman Spiel zu machen um mein Programmier wissen nach dem Buch zu festigen. Ich bin grade dabei das Spiel so zu machen das man wenn man eine Wand stößt nicht weiter laufen kann das verhindere ich indem ich jede Position mit diesem Quelltext eintrage.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void CPlayer::CheckPosition ()
{
  // Linker und rechter Rand
  if (m_fXPos < 128.0f)
    m_fXPos = 128.0f;
  else if (m_fXPos > 472.0f)
    m_fXPos = 472.0f;

  // Animationsphase prüfen
  if (m_fAnimPhase < 0.0f)
    m_fAnimPhase = 0.0f;
  else if (m_fAnimPhase > 4.0f)
    m_fAnimPhase = 4.0f;

} // CheckPosition


Ich habe jetzt die 128 eingetragen das man seitlich nicht raus kann (das geht soweit nur wenn ich jetzt die 472 eintrag sind das nicht die richtigen koordinates. Jetzt habe ich aber auch gemerkt das das ziemlich lange dauern würde das so zu realisieren gibts da vill. ein tool mit dem das einfacher gehen könnte oder gibts nur tatsächlich diese einzige Möglichkeit es zu realisieren.

Phalax

Frischling

Beiträge: 82

Beruf: Student Media Systems

  • Private Nachricht senden

2

19.03.2011, 20:05

Also was genau ist denn jetzt die Frage? Der Code im Moment soll doch dazu dienen, dass der Spieler nicht Links oder Rechts aus dem Labyrinth kann, oder nicht? Naja um jetzt aber die Kollision mit den Wänden zu prüfen, bietet sich eigentlich tile-basierte Kollisionserkennung an. Pacman ist ein typisches Beispiel für ein Tile basierendes Spiel.

Hier ist ein Artikel der die Funktionsweise von tiles erläutert (zwar ist die Programmiersprache C#, aber das Prinzip ist in C++ das gleiche):
http://www.xnamag.de/article.php?aid=27

Falls die Frage aber ist, wie man die exakten Koordinaten für den linken und rechten Spielfeldrand herausfindet ohne diese auszuprobieren, könntest du einfach für die linke Koordinate den Abstand von Bildschirmrand und Spielfeldrand (die 128px) nehmen und für die rechte Koordinate (im Quelltext wohl die 472px) auf das vorherige Ergebnis die Spielfeldbreite addieren.

Also ungefähr so:

Quellcode

1
2
linkerSpielfeldrand = offsetX;
rechterSpielfeldrand = offsetX + SpielfeldBreite;


offsetX sind hier wohl deine 128px.

Dann kannst du dir die hartcodierten Konstanten 128 und 472 sparen und sie durch linkerSpielfeldrand und rechteSpielfeldrand ersetzen.