Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Vier Gewinnt (https://www.delphipraxis.net/145937-vier-gewinnt.html)

Sassi 11. Jan 2010 06:39


Vier Gewinnt
 
Hey Hey!
Also ich brauche unbedingt Hilfe.
Wir sollen 4 Gewinnt mit Delph programmieren.
Bis jetzt bin ich so weit:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
feld:array[0..6,0..5]of integer;

i,j:integer;
begin
 FOR i:=1 TO 6 DO
  FOR j:=1 TO 5 DO BEGIN
    feld[i,j]:=10;
       stringgrid1.Cells[i,j]:=INTTOSTR(10);
       END;

Das alles wird mit einem Stringgrid gemacht.
Aber leider komm ich noch nicht so weiter.
Wäre ganz nett wenn ihr mir helfen könnt =)

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

Sassi 11. Jan 2010 06:42

Re: Vier Gewinnt
 
Spieler 1 soll mit 1
Spieler 2 mit 2
und
wenn nichts gesetzt ist 10
Das heißt das die 10 nicht gezeigt wird sondern nur als Wert genommen wird um zu zeigen das in dem Feld nichts ist.
Wenn der Spieler 1 ein 5 gewinnt haben will muss er einen Integerwert von 4 haben beim Spieler 2 ist es 8.

Klaus01 11. Jan 2010 07:58

Re: Vier Gewinnt
 
Guten Morgen,


bei 4 Gewinnt ist es doch so, dass ein Spieler seinen Stein
in einen frei wählbaren Slot (Spalte Deines StringGrids) wirft.
Dann fällt der Stein bis er auf einen anderen Stein trifft oder bis zum
Boden durchgefallen ist.

Die Spieler sind immer abwechselnd an der Reihe.

Das Spiel ist aus, wenn ein Spieler gewonnen hat
oder wenn alle Felder besetzt sind.

Gewonnen hat der Spieler welcher 4 Steine seiner Farbe
waagerechet (Reihe Deines StringGrids), senkrecht (Spalte Deines StringGrids)
oder Diagonal (Reihe, Spalte) angeordnet hat.

So, das sollte so im Prinzip die Spielzüge des Spiels sein.
Umsetzen solltest Du sie.

[edit]
Ich würde für freie Felder das Leerzeichen ' ' als Kennzeichnung wählen.
Für die Spielsteine ein 'x' und 'o'.
[/edit]


Grüße
Klaus

Sassi 11. Jan 2010 20:20

Re: Vier Gewinnt
 
Soweit bin ich auch schon. Nur an der Umsetzung habe ich meine Probleme.
Ich komme beim Proggen nicht weiter. Kann das nicht umsetzten

DP-Maintenance 11. Jan 2010 20:28

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Open-Source" nach "Multimedia" verschoben.
Hier handelt es sich (noch) nicht um ein Open-Source-Programm.

mani64 11. Jan 2010 20:56

Re: Vier Gewinnt
 
Wie wärs mit der Erstellung eines groben Ablaufplans, den du Stück für Stück umsetzst?

Immer Wechsel zwischen Spieler1 und Spieler2 (KI kann ja später noch kommen), für jede Spalte einen Button, dann im Stringgrid das Feld entsprechend markieren, anschließend überprüfen, ob der Spieler 4 zusammen hat, wenn nicht, dann kommt der nächste Spieler dran, bis einer 4 hat bzw. alle Felder gefüllt sind. Noch Buttons für Start und Abbruch, eventuell ein Zähler für die Spiele, ein Label, welcher Spieler an der Reihe ist ...

Klaus01 11. Jan 2010 20:57

Re: Vier Gewinnt
 
Zitat:

Zitat von Sassi
Soweit bin ich auch schon. Nur an der Umsetzung habe ich meine Probleme.
Ich komme beim Proggen nicht weiter. Kann das nicht umsetzten

Nun, das ist ja auch der Casus Knacktus.
Kannst Du es nicht umsetzen oder willst Du es nicht umsetzen?

Was hast Du denn schon fertig (ausser die Initialisierung des Stringgrids)?
Wo hapert es denn? ( jetzt nicht schreiben, an allem).

Von Euch/Dir wird wohl nichts verlangt werden was nicht zumindest
ansatzweise in der Schule angerissen wurde.

Also StringGrid 6 Zeilen 5 Spalten.
Zeile 0 -> Headerzeile (Delphi-Referenz durchsuchenfixedRows =1)
Delphi-Referenz durchsuchenFixedCols = 0

Im StringGrid gibt es das Event Delphi-Referenz durchsuchenonMouseUp
Hier ist die Routine Delphi-Referenz durchsuchenMouseToCell recht hilfreich.
Hast Du die Spalte ermittelt lässt Du einen Stein hineinfallen.
Welcher Stein hängt davon ab, welcher Spieler gerade aktiv ist.
Delphi-Quellcode:
 if spieler1 then
           token := 'x'
          else
            token := 'o':
Nach jedem Wurf solltest Du prüfen ob die Gewinnbedingung erfüllt ist.
Um es am Anfang einfach zu halten, kannst Du ein Gewinn erst einmal
auf 4 in einer Reihe oder in einer Zeile begrenzen.

Grüße
Klaus

Sassi 14. Jan 2010 11:13

Re: Vier Gewinnt
 
Zitat:

Zitat von Klaus01
Zitat:

Zitat von Sassi
Soweit bin ich auch schon. Nur an der Umsetzung habe ich meine Probleme.
Ich komme beim Proggen nicht weiter. Kann das nicht umsetzten

Nun, das ist ja auch der Casus Knacktus.
Kannst Du es nicht umsetzen oder willst Du es nicht umsetzen?

Was hast Du denn schon fertig (ausser die Initialisierung des Stringgrids)?
Wo hapert es denn? ( jetzt nicht schreiben, an allem).

Von Euch/Dir wird wohl nichts verlangt werden was nicht zumindest
ansatzweise in der Schule angerissen wurde.

Also StringGrid 6 Zeilen 5 Spalten.
Zeile 0 -> Headerzeile (Delphi-Referenz durchsuchenfixedRows =1)
Delphi-Referenz durchsuchenFixedCols = 0

Im StringGrid gibt es das Event Delphi-Referenz durchsuchenonMouseUp
Hier ist die Routine Delphi-Referenz durchsuchenMouseToCell recht hilfreich.
Hast Du die Spalte ermittelt lässt Du einen Stein hineinfallen.
Welcher Stein hängt davon ab, welcher Spieler gerade aktiv ist.
Delphi-Quellcode:
 if spieler1 then
           token := 'x'
          else
            token := 'o':
Nach jedem Wurf solltest Du prüfen ob die Gewinnbedingung erfüllt ist.
Um es am Anfang einfach zu halten, kannst Du ein Gewinn erst einmal
auf 4 in einer Reihe oder in einer Zeile begrenzen.

Grüße
Klaus


Danke Klaus.
Das hilft mir schon sehr weiter =)
Ich hoffe jetzt bekomm ich es hin!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz