AGB  ·  Datenschutz  ·  Impressum  







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

"Reihen" auf Spielfeld finden

Ein Thema von Yheeky · begonnen am 30. Jul 2005 · letzter Beitrag vom 4. Aug 2005
Antwort Antwort
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#1

"Reihen" auf Spielfeld finden

  Alt 30. Jul 2005, 19:11
Hi,

ein weiteres Problem (Anderes Problem siehe hier).
Das Spielfeld ist nach wie vor 10x10 groß. Meine Aufgabe ist nun "Reihen" im Spielfeld zu erkennen.

Beispiel:

0 0 0 0 0 0 0 0 0 0
0 1 1 1 1 0 0 0 0 0
0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 2 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 3 0 0 0 0 0 0
0 0 3 3 3 0 0 0 0 0
0 0 0 3 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Dies ist nur eine Veranschaulichung, um die Reihen deutlich zu machen. Bei mir gibt es natürlich auch einzelne Zahlen, was eben keiner Reihe enspricht.
Wie würdet ihr das anstellen (gerade bei den 3en)? Würdet ihr mit for-Schleifen oder while...do arbeiten? Mein erster Versuch funktioniert zwar bisher, aber ist sehr umfangreich und ich bin nicht wirklich zufrieden. Ich verwende sehr viele Variablen, was natürlich Speicher belegt.
  Mit Zitat antworten Zitat
arnold mueller

Registriert seit: 27. Jul 2005
129 Beiträge
 
#2

Re: "Reihen" auf Spielfeld finden

  Alt 30. Jul 2005, 19:26
Im ersten Durchlauf von links nach rechts und oben nach unten,
und im zweiten Durchlauf von Oben nach unten und links nach rechts.

For oder While Schleife ist doch egal, oder? Halt in zwei Schleifen ...

Bye,
Arno
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#3

Re: "Reihen" auf Spielfeld finden

  Alt 30. Jul 2005, 19:38
HiHo,

Du suchst zuerst nach vertikalen Reihen. Dazu gehst du spaltenweise
For ACol := 0 to StingGrid.ColCount -1 do vor. Anschließend prüfst du, ob Reihen existieren. À la:
Delphi-Quellcode:
var
  SchlangenV : Array of Integer;
  SchlangenIndex :Integer;
  Vergleich : String;

begin
SchlangenIndex := 0;
Vergleich := StringGrid.Cells[ACol,0];
For ARow := 1 to StingGrid.RowCount -1 do
  Begin
  If StingGrid.Cells[ACol, ARow] = Vergleich then
    Inc(SchlangenV[SchlangenIndex]);
  // Bei neuer Schlange SchlangenIndex erhöhen
  End;
Den "SchlangenIndex" müsstest du dann erhöhen, wenn das aktuelle Zeichen verschieden zur letzten Schlange ist. Irgendwie bekommst du dann in dem Array die Längen heraus. Wenn du natürlich noch Anfangspositionen der Schlangen suchst, solltest du mit strukturierten Datentypen
Delphi-Quellcode:
TSchlange = record
  Laenge :Integer;
  StartPosX :Integer;
  StartPosY :Integer:
end;
oder entsprechenden Klassen arbeiten. Letzteres ist natürlich viel mehr schikkimikki!

Was noch zu sagen wäre ist, dass der Code absolut nicht geprüft, unvollständig und dazu noch falsch formatiert ist, er soll aber eine grobe Überlegungsrichtung angeben.

Um deine Frage mit einem Wort zu beantworten: FOR-Schleifen

Hoffe, ich war mehr konstruktiv denn destruktiv.

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#4

Re: "Reihen" auf Spielfeld finden

  Alt 30. Jul 2005, 21:25
Delphi-Quellcode:
TSchlange = record
  Laenge :Integer;
  StartPosX :Integer;
  StartPosY :Integer:
end;
Mhmm, das funtkioniert aber nur richtig, wenn ich weiss, wielange die Schlange ist. Sonst muss ich die Daten ja im Nachhinein eintragen, dann geht das auch über eine einfache Funktion. Im Ansatz hast du mir nun aber weitergeholfen. Ich weiss nun, wo ich ansetzen muss. Danke.
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#5

Re: "Reihen" auf Spielfeld finden

  Alt 31. Jul 2005, 23:31
Bei horizontalen und vertikalen Reihen habe ich keine Schwierigkeiten mehr. Nun kommt es zu weiteren Mustern. Wie kann ich nun diese Muster erkennen. Hier 2 Beispiele:

1.Beispiel:

0 0 1 0 0 1 0 0
0 0 1 0 0 1 0 0
0 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0

2.Beispiel:
0 0 1 0 0 1 0 0
0 0 1 0 0 2 0 0
0 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0

Das 2.Beispiel soll er nicht als Muster erkennen, weil die Kette ja zerbrochen wurde. Wie kann ich das verwirklichen?
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: "Reihen" auf Spielfeld finden

  Alt 1. Aug 2005, 01:33
Zitat von Yheeky:
Das 2.Beispiel soll er nicht als Muster erkennen, weil die Kette ja zerbrochen wurde. Wie kann ich das verwirklichen?
Die 2 nicht als 1 behandeln.
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
Yheeky

Registriert seit: 7. Jun 2002
1.339 Beiträge
 
#7

Re: "Reihen" auf Spielfeld finden

  Alt 1. Aug 2005, 12:26
Du wirst es nicht glauben, aber genau diese Idee hatte ich auch schon
Die Frage ist nun, wie ich das verwirkliche.
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#8

Re: "Reihen" auf Spielfeld finden

  Alt 4. Aug 2005, 11:47
Damit wir dir mit unqualifizierten Ratschlägen zur Seite stehen können, sollten wir etwas über deine Cource erfahren.
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
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 03:42 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