AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

4 Gewinnt: Siegerermittlung

Ein Thema von geisi · begonnen am 7. Feb 2004 · letzter Beitrag vom 8. Feb 2004
Antwort Antwort
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#1

4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 13:02
Also, ich muss für die Schule ein 4 gewinnt-spiel programmieren:

Gib es einen besonderen Trick, um 4 gleiche Feldelemente in waagrechter, senkrechter und diagonalen richtung zu finden, oder muss ich dass alles mit if-abfragen durchforsten?
mfg geisi
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#2

Re: 4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 13:07
Wie groß ist dein gesamtes Spielfeld (5 * 5 Spielfelder) ?

Ich hatte alle Spielsteine, die gesetzt wurden, in ein Array gespeichert und
diesen dann (bei der Ermittlung der waagrechten und senkrechten Spielsteine)
mit einer for - Schleife überprüft; bei den Diagonalen geht das auch, da hab
ichs aber mit einzelnen if-Abfragen gemacht.

Ich such mal die for-Schleifen raus ...

devnull
-- Never change a running system --
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#3

Re: 4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 13:23
moin

habe ich jetzt zwar nicht weiter ausprobeirt, aber versuche doch das nach devnull
mit einem Array. Dann gibst du jedem farbstein bestimmte werte, so daß du dann nur noch die reihen
waagerecht, senkrecht und diagonal auf bestimmte summen überprüfen mußt und so weißt ob jemand gewonnen hat!



ist glaube ich einfacher als wenn der gleich rot und der gleich rot und der gleich rot und der gleich rot dann
gewonnen.

du solltest dann natürlich berücksichtigen das die auch nebeneinander liegen!

p.s. ist nur so eine Idee!
Mike Schröder
Fleiß kann man vortäuschen, faul muss man schon selber sein!
  Mit Zitat antworten Zitat
geisi

Registriert seit: 19. Sep 2003
449 Beiträge
 
Delphi 6 Professional
 
#4

Re: 4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 15:45
Ja, das hab ich schon so gemacht

Ich habe für einen Spielstein des Spieler 1 den wert 1 in das 2dimensionale Array geschreiben(Spieler2 wert2 und kein Spielstein hat den Wert 0);

Ich wollte nur wissen ob es einen trick gibt, um im array(7*7) herauszufinden, ob 4 gleiche spielsteine hintereinander lingen.
mfg geisi
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: 4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 16:19
Hallo Geisi,
ja es gibt einen sehr einfachen Trick.
Gehe von dem zuletzt gesetzten Stein in alle möglichen Richtungen
und zähle die gleichfarbigen. Bist Du bei vier ist das Spiel gewonnen.
Das wäre die Routine
Delphi-Quellcode:
function TForm1.Win2(Stone : TStone) : Boolean;
var
  iCnt : Integer;
  aStone : TStone;
  StoneCount : Integer;
begin
  For iCnt:=0 to 7 do // iteriere über die relativen Koordinaten
    begin
    aStone:=Stone; // Startpunkt merken
    StoneCount:=0;
    While aStone<>Nil do
      begin
      If aStone.Color=Stone.Color then // hat der Stein die gesuchte Farbe ?
        Inc(StoneCount)
         else
           Break; // neue Richtung einschlagen
      If StoneCount=4 then
        begin
        Result:=True;
        Exit;
        end; // If StoneCount=4 then
      aStone:=FStones[aStone.X+FRelCoords[iCnt].X,aStone.Y+FRelCoords[iCnt].Y];
      end; // While Stone<>Nil do
    end; // For iCnt:=0 to 7 do
end;
In das Anlage habe ich den Source kommentiert und ein kleines Beispiel zu gebastelt.
Nur für's Verständnis
Angehängte Dateien
Dateityp: zip vg.zip (220,8 KB, 26x aufgerufen)
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#6

Re: 4 Gewinnt: Siegerermittlung

  Alt 7. Feb 2004, 17:13
Zitat von geisi:
Ja, das hab ich schon so gemacht

Ich habe für einen Spielstein des Spieler 1 den wert 1 in das 2dimensionale Array geschreiben(Spieler2 wert2 und kein Spielstein hat den Wert 0);

Ich wollte nur wissen ob es einen trick gibt, um im array(7*7) herauszufinden, ob 4 gleiche spielsteine hintereinander lingen.
das meinte ich ja! wenn du den steinen schon bestimmte werte gibst dann kannst du doch auch durch geschickte berechnung der summen einer reihe herausfinden ob 4 gleiche steine nebeneinander liegen!
Mike Schröder
Fleiß kann man vortäuschen, faul muss man schon selber sein!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: 4 Gewinnt: Siegerermittlung

  Alt 8. Feb 2004, 12:05
Zitat von MikeS:
das meinte ich ja! wenn du den steinen schon bestimmte werte gibst dann kannst du doch auch durch geschickte berechnung der summen einer reihe herausfinden ob 4 gleiche steine nebeneinander liegen!
Ich glaube nicht dass Du das meinst was ich vorgeschlagen habe.
Du hast vorgeschlagen mit For-Schleifen das Spielfeld senkrecht und waagerecht zu durchlaufen.

Das macht mein Vorschlag definitiv nicht.

Da jeder Stein seine Koordinaten kennt, kann sich der Algorithmus innerhalb des Array's von einem Stein zum nächsten Stein bewegen. Das wird durch die Addition der relativen Koordinaten aus TRelCoords erreicht. Dabei wird mitgezählt wieviel gleichartige Steine besucht wurden. Bei 4 besuchten gleichartigen Steinen ist das Spiel gewonnen. Ausgangspunkt für die Suche ist immer der zuletzt gesetzte Stein.
  Mit Zitat antworten Zitat
MikeS

Registriert seit: 3. Mai 2003
Ort: München
157 Beiträge
 
Delphi 7 Professional
 
#8

Re: 4 Gewinnt: Siegerermittlung

  Alt 8. Feb 2004, 12:12
@Jens Schumann
mein letzer beitrag war nicht auf dich bezogen!

da ich geisi zitiert habe, dachte ich das es eindeutig ist das ich mich mit meiner nächsten
Äußerung auch auf ihn beziehe!

Ich wollte dir deinen gedanken keinesfalls streitig machen.
Es tut mir leid wenn das so rüber gekommen ist.
Mike Schröder
Fleiß kann man vortäuschen, faul muss man schon selber sein!
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#9

Re: 4 Gewinnt: Siegerermittlung

  Alt 8. Feb 2004, 12:14
Zitat von MikeS:
da ich geisi zitiert habe, dachte ich das es eindeutig ist das ich mich mit meiner nächsten Äußerung auch auf ihn beziehe!
Habe ich übersehen.
  Mit Zitat antworten Zitat
8. Feb 2004, 13:59
Dieses Thema wurde von "sakura" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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