Gorilla (Schadensmodell und Eingabe) in C++
-
Servus,
ich programmiere gerade das alte Dosspiel Gorilla (Bananenwerfen) in C++ und habe 2 Probleme (bin noch Newcomer):
1. Schadensmodell der Häuser
Der Level von Gorilla besteht immer aus zufällig gezeichneten Levels. Der x- und y-Wert der oberen linken Ecke und der x-Wert der unteren rechten Ecke (Haus ist ein bar) werden in einem Feld gespeichert. So habe ich für alle Häuser die wichtigsten Werte gespeichert.
Ich habe bis jetzt ein einfaches Schadensmodell programmiert, allerdings bewirkt es immer nur, das einmal ein Kreis in der Hintergrundfarbe am Einschlagort gezeichnet wird. Wirft man wieder auf die Stelle passiert nichts, da ja der y- bzw. x-Wert immer noch der selbe ist. Deshalb brauche ich einen Tipp für ein Schadensmodell, bei dem man sich durch die Häuser bomben kann.2. Eingabe
Ich brauche Hilfe bei der Eingabe mit getch(). Wie lese ich da am besten Zahlen > 9 ein (z.B. eine 85, die ich dann auch bearbeiten kann)?
-
getch liest zeichen für zeichen, möchtest du mehr als ein Zeichen lesen, dann muss
der Benutzer erst die Zahl eingeben und anschließend enter drücken, 85 kannst du
dann so einlesenint i;
cin >> i; // Benutzereingabe wird nach enter-drücken eingelesen
-
Ich kenne auch schon den cin-Befehl, aber den kann ich nicht nehmen (es sei denn, den kann ich bei gewünschten Koordinaten benutzten). Deshalb wollte ich getch() nehmen. Weißt du, wie man Variablenwerte an gewünschten Koordinaten ausgibt?
-
Streiti Reiti schrieb:
Ich habe bis jetzt ein einfaches Schadensmodell programmiert, allerdings bewirkt es immer nur, das einmal ein Kreis in der Hintergrundfarbe am Einschlagort gezeichnet wird. Wirft man wieder auf die Stelle passiert nichts, da ja der y- bzw. x-Wert immer noch der selbe ist.
Wie wärs denn den y- bzw. x-Wert anzupassen!
Bye, TGGC \-/
-
Ich verstehe dich nicht ganz, aber bei dir fliegen die Bananen nicht durch bereits durchbombte Luecken durch?
Gorilla.bas laesst wohl die Bananen solange fliegen bis der Hintergrundpixel ungleich blau wird. Entweder machst Du das oder Du musst ein zweidimensionales Bananendurchflugsarray erstellen, wo jeder Eintrag einem Pixel auf dem Bildschirm entspricht. (z.B. 0=Durchlaessig 1=Haus 2=Gegner etc). Wenn die Banane einschlaegt (da wo im Array != 0 steht), zeichnes Du einmal den Kreis auf der Grafik und einmal im Array (mit nullen). Usw..
-
Streiti Reiti schrieb:
(Haus ist ein bar)
Du gibst Deine Häuser als Druck an?!?
Im Ernst: Würde Dir auch zu Gunnar's Methode raten...
-
Gunnar schrieb:
zweidimensionales Bananendurchflugsarray
Cool, das "Wort des Jahres" 2004!
-
Sgt. Nukem schrieb:
Streiti Reiti schrieb:
(Haus ist ein bar)
Du gibst Deine Häuser als Druck an?!?
Damit is ein Rechteck gemeint (das mit dem bar kommt warscheinlich aus Paskal... da war das glaub ich so)...
Beide Methoden ham vor. und nachteile:
1. zweidimensionales Bananendurchflugsarray:
brauch nen großes Array, is aber die einzige möglichkeit bei nem
bunten(mehrfarbigen) hintergrund.)2. der Pixelvergleich:
Spart dir Array / Ram, funzt aber nur bei nem öden einfarbigen hintergrundNaja, musst du wissen...
mfg!