AGB  ·  Datenschutz  ·  Impressum  







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

"Pipes" Karten erstellen lassen (automatisch)

Ein Thema von Delphi-Narr · begonnen am 25. Feb 2010
Antwort Antwort
Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

"Pipes" Karten erstellen lassen (automatisch)

  Alt 25. Feb 2010, 19:16
Hallo,
ich habe folgendes Problem:
Ich habe das Spiel "Pipes" programmiert (Man muss Rohre miteinander verbinden, bis alle angeschlossen sind).
Das Spielfeld ist ein Canvas, es sind 9*9 Rohrfelder.

Es gibt 5 verschiedene Arten von Rohren:

Kreuzung, TKreuzung (Kreuzung mit nur 3 Armen), Gerade, Ecke und Endstück (Ein Anschluss, endet in der Mitte des Kästchens).
Das Ganze wird auf einem TImage dargestellt und ausgewertet.

Das Spiel selbst klappt wunderbar, doch ich habe auch einen Mapeditor erstellt. Dort muss man jedes einzelne Feld selber eintragen (Art auswählen) und drehen (Zur Überprüfung, dass die Map lösbar ist). Im Spiel werden die Rohre dann willkürlich verdreht. Der Start befindet sich genau in der Mitte des Feldes, von diesem Rohr gehen alle anderen ab.
Die Datei, in der die Karte gespeichert wird, ist so aufgebaut, dass für jeden Rohrabschnitt eine Zeile verwendet wird, in der nur einer der Buchstaben K,T,E,G oder Z steht.

Während die Map erstellt wird gilt folgende Notation:

Aufbau des Canvas:

Code:
_____________________________________
|   |   |   |   |   |   |   |   |   |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|___|___|___|___|___|___|___|___|___|
|   |   |   |   |   |   |   |   |   |
| 9 | 10| 11| 12| 13| 13| 15| 16| 17|
etc.

Allgemein gilt für Nummer des Feldes= (Zeile*8)+Spalte+Zeile;
wobei die Spalten und Zeilen bei 0 beginnen. Diese Nummern werden im Array "Typ" (array [0..80] of string) benutzt.
Dieser speichert die Abkürzungen für die Rohrarten entsprechend dieser Nummern.

Jetzt möchte ich, dass der Computer automatisch eine Map erstellt, die keine offenen Endungen hat (Also nur Typ "Z" als letztes Stück eines Rohres aktzeptiert) und die Typen in den Array schreibt. So sollen in verschiedenen Durchläufen auch verschiedene Maps entstehen.
Nur habe ich leider keine Ahnung, wie ich das anstellen kann...

Liebe Grüße!

Edit:

Oh, ich habe da etwas vergessen: Die Ausrichtung der einzelnen Rohre, also wie sie gerade gedreht sind, wird im Array "A" (of integer) gespeichert.

Ausrichtung 1 für die T-Kreuzung:

Code:
___________
|    II   |
|    II   |
|IIIIII   |
|    II   |
|____II____|
Allgemein gilt: das "rechte" Ende zeigt immer nach oben:
Ecke:

Code:
___________
|    II   |
|    II   |
|IIIIII   |
|          |
|__________|
Es wird im Uhrzeigersinn gedreht
  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 07:27 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