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

11

05.01.2007, 17:38

Ok werde ich mal versuchen Danke

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

12

05.01.2007, 17:38

Ich würde dir erstmal raten, den Cursor für Pacman auszuschalten und stattdessen den Spieler durch einen Buchstaben zu repräsentieren (evtl. farbig). Da der Spieler ja seine Position und evtl. noch paar mehr Werte braucht empfielt sich eine Klasse.
Jetzt könntest du z.b. für deine Gegner auch eine Klasse erstellen, die von der Spielerklasse erbt und zusätzlich noch methoden dafür hat, wie sich die Gegner bewegen sollen.

Für die Kollision gibt es ja im wesentlichen 2 Fälle:
Figur - Map (Mauer o.ä.)
Figur - Figur

Für den ersten Fall musst du eigentlich nur testen, ob an der neuen Position einer Figur eine Mauer ist -> auf alte Position zurücksetzen.
Im 2. Fall musst du testen, ob de Positionen übereinstimmen und dann je nachdem was du für ein ereignis haben willst das dann implementieren.

// naja, bisschen spät^^

@Koschka: ich würde ein char-array nehmen, so kann man das Spielfeld gleich unkompliziert zeichnen (sollte bei Pacman eigentlich mit dem selben Zeichen nicht Mauer und Weg geben^^)

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

13

05.01.2007, 17:45

chars sind auch nur vorzeichenlose Zahlen.... ;)

14

05.01.2007, 23:15

Hi also das mit dem Feld funktioniert aber wie kann ich nach eine Eingabe das Feld neu zeichnen damit sich pac fortbewegt tastatureingabe mach ich mit

GetAsyncKeyState(VK_DOWN)

und eben eine schleife mit do while wo ich ja das feld neu zeichnen muss

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

15

05.01.2007, 23:20

Es gibt im wesentlichen 2 Möglichkeiten:

1. gotoxy(0,0) oder wo auch immer dein Feld anfängt, das ganze Feld neu zeichnen und dann die Figuren neu draufzeichenen (nich so gut)

2. nur die Bereiche der Map, die geändert wurden neu zeichnen. Also wenn eine Figur bewegt wurde werden die 8 umliegenden Felder neu gezeichnet und dann wieder die Figuren (schon besser)

gbit sicher noch mehr Möglichkeiten

16

05.01.2007, 23:26

Ja aber mir fehlt die funktion dazu weil wenn ich es so neu zeichne zeichnet er mir das feld direkt unter dem anderen mit der bewegten figur
gibt es da ne funktion um die konsole zu löschen und dann wieder neu zeichnen

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

17

05.01.2007, 23:29

Klar kann man die Konsole löschen... aber mit meiner Lösung geht es auch so. indem du gotoxy(0,0) aufrufst zeichnest du das neue Feld nicht unter das alte sondern an die selbe Stelle und überschreibst somit das alte Bild.

18

05.01.2007, 23:32

ja aber damit kann ich nur den cursor bewegen oder kann ich der funktion ein zeichen zuweisen

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

19

05.01.2007, 23:36

Du kannst der Funktion kein Zeichen zuweisen, aber da wo der Cursor ist wird weitergeschrieben. Wenn also z.b. der Spieler auf (2, 3) war und nach (2, 4) gegangen ist dann musst du mit gotoxy(2, 3); dort die Map wieder Zeichnen: std::cout << map[2][3]; dann gotoxy(2, 4); std::cout << "P" (vorausgesetzt P ist das Playerzeichen^^

20

05.01.2007, 23:46

kannst du mir den befehl geben wie man die Konsole neu zeichnet ich will da mal was ausprobieren

Werbeanzeige