![]() |
Abbruchbedingung und Bewegung bei 4 Gewinnt
Schön juten Tag.
Ich versuch mich gerade an dem Spiel "4 Gwinnt". Bin auch schon relativ weit voran geschritten, habe aber jetzt ein Problem mit der Steuerung. Da ich meine Programme meistens immer sehr komplex mache, dachte ich mir mal, dass man den Chip ja per Cursortasten bewegen könnte. Die Bewegung nach Links und nach Rechts habe ich schon fertig, was mir jetzt aber noch fehlt wäre die Bewegung nach unten. Diese habe ich mir folgenderweise vorgestellt: - Pfeiltaste "unten" wird gedrückt - Timer bewegt den Chip langsam nach unten - wird überprüft wann das Ende des Spielfeldes kommt bzw. ob ein Chip schon unter ihm liegt Bei dieser Problematik benötige ich jetzt mal bitte Hilfe. Wäre nett, wenn mir jemand weiter helfen könnte. Mfg Holle |
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
Wie verwaltest du das Spielfeld?
|
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
Das Spielfeld hab ich mir von Delphi zeichnen lassen.
Also with image1.canvas do..... Bisschen umständlich, ich weiß^^ |
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
Zur Bewegung schaust du vielleicht
![]() |
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
erstmal legst du ein array mit den feldern an
Delphi-Quellcode:
dort kannst du reinspeichern deine Chips
TSpielerSeite = (Rot, Gelb);
TFeld = (Rot,Gelb,None) TFelder = Array[0..6,0..5] of TFeld; var Felder:TFelder; SpielerAnDerReihe:TSpielerSeite;
Delphi-Quellcode:
und um herauszufinden, welches feld in der spalte das niedrigstmögliche ist, benutzt du ImpactY
Felder[ChipX,ImpactY(ChipX)] := SpielerAnDerReihe;
Delphi-Quellcode:
velleicht hilft dir das
function ImpactY(X:Integer): Integer;
var i:integer; begin for i := 0 to 5 do if Felder[X,i] <> None then begin result := i - 1; exit; end; end; |
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
@taaktaak
Mhh...das scheint ja vlt. gut zu sein (kann das nich so einschätzen :| ), aber das ist nich ganz das was mir weiterhelfen könnte. Dass ich das mit GetAsyncKeyState machen muss, das wusste ich schon (sorry, dass ich das noch nich hingeschrieben habe). @dajuhsa Also deine ersten beiden Quellcode's vertsteh ich ja, aber deinen letzten versteh ich nicht wirklich. Könnteste den mal bitte erklären?! Wär nett. |
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
Du solltest den Chip beim Drücken der Tasten "1" bis "7" in der entsprechenden Spalte fallenlassen.
Und zwar ganz unabhängig davon, dass es auch noch eine 2. Möglichkeit gibt, den Chip fallen zu lassen. |
Re: Abbruchbedingung und Bewegung bei 4 Gewinnt
Delphi-Quellcode:
function ImpactY(X:Integer): Integer; //X gibt die Zeile an, in der der "Einschlag" stattfindet
var i:integer; begin for i := 0 to 5 do //6 Felder Hoch ist das Spielfeld denke ich mal, alle felder in Zeile X durchgehen if Felder[X,i] <> None then //wenn das aktuelle Feld nicht leer also belegt ist, begin result := i - 1; //dann landet der chip im feld darüber (Y - 1) exit; //und da das ergebnis feststeht wird die function beendet end; //wenn das oberste besetzt ist, kommt als ergebnis -1 raus, das musst du im programm halt abfragen end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz