Entwickler-Ecke
Multimedia / Grafik - Levels als Array
Nagelbrett - Di 13.05.03 00:25
Titel: Levels als Array
hi, ich hab folgendes problem..
ich hab für mein spiel einen typ tSpielfeld deklariert der folgendermaßen aussieht:
Quelltext
1:
| type tSpielfeld = Array[1..10,1..20] of ShortInt; |
also ein 10x20 felder großes spielfeld
die einzelnen levels hab ich dann als konstanten angegeben:
Quelltext
1: 2: 3:
| const Level1: tSpielfeld=(....); //die ganzen daten anzugeben spar ich mir an dieser stelle mal Level2: tSpielfeld=(....); usw. |
nun hat jedoch jedes level einen eigenen konstanten-namen, was sich als äußerst unpraktisch erwiesen hat
deswegen würd ich gern die einzelnen level selbst als array deklarieren... dummerweise kann ich nun schlecht schreiben const Level[1]=(...) usw...
wie stell ich das also am besten an? geht das nur indem ich nochmal ein Array of tSpielfeld anlege und dem dann die werte in OnCreate zuweise oder kann man das auch geschickter lösen?
Raphael O. - Di 13.05.03 09:39
du könntest auch die Levels in einer txt-Datei speichern und dann daraus ladden...
das hat dann den Vorteil, dass du nicht immer neu compilieren musst, wenn due das Level veränderst, oder ein andres Level benutzen willst...
Simon Joker - Di 13.05.03 10:13
Hi
was hast du gegen ein Array für deine Levels? Pack die Daten in eine Datei und lade sie beim starten in ein Array.
Wenn du aber die LEvels unbedingt im Quellcode festlegen willst verwende VARIABLEN!
Quelltext
1: 2: 3: 4: 5:
| type TArr = array [0..3] of integer;
var Arr:TArr=(1,2,3,4); |
Aber es ist wahrscheinlich nicht jedermans Sache neue Levels mit einen Patch "zuladen" :shock:
EDIT: Man sollt zwischen dem posten nicht arbeiten. Es geht soviel Zeit drauf. :twisted:
mimi - Di 13.05.03 16:13
also ich löse das Problem so:
ich habe in meinen Spielen ein eine funktion die sich ums fühlen der array kümmert:
Quelltext
1: 2: 3: 4: 5:
| Type TGame = record Typ,Tey:Integer; ... end; |
und der code aus der Textdatei sieht so aus:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| Sokubahn 1.0: Level Datei LevelOptionen { Music:00,01,02,03,04,06,07,08,09,10,11,12,13 TexturIndex:0,0,0,3,1 LevelOptionen }
Draw_Karte { ######################################## #S S1 # # 1 # # 1 # # .... 1 # # SS 1 # # SS 1 # # ---- 1 # # 1 # # 1 # # 1 # #S S1 # #22222222222222222222 #3333333333333333# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ######################################## Draw_Karte } |
Nagelbrett - Di 13.05.03 18:01
hmm, nagut ich hab das ganze mal etwas überarbeitet und werd die level wohl in einer externen datei speichern
aber mal was anderes... wie kann ich eigentlich einem array mit einer befehlszeile gleich mehrere werte zuweisen? ich mein.. unter var kann ich ja hinschreiben =(1,4,6,3,4)
aber im normalen code scheint das nicht zu funktionieren... gibts da keine möglichkeit?
weil für jeden wert einzeln hinschreiben (blabla[1]:=1;, blabla[2]:=4; usw.) ist bisschen arg doof wenn das ein paar mehr werte sind
Simon Joker - Mi 14.05.03 08:30
Hi
die Zuweisung von Array als Menge funktioniert nur bei der Definition als globale Variable! Tödlich für die Objektorientierung.
Beispiel:
Quelltext
1: 2: 3: 4:
| //eindimmensional Arr1 : array [0..2] of integer = (15,23,89): //mehrdimmensional Arr2 : array [0..2,0..1] of integer = ((7,65),(,41,2),(75,101)); |
EDIT:
:oops:
Sorry habe gerade gesehen, das du das schon weist.
Nein im Code gehtd as meines wissens nicht.
mimi - Mi 14.05.03 14:45
also wenn du ein 2D array hast könntes du die werte so zuweisen:
Quelltext
1:
| map[x,y].Tex:=1; // andres geht es nicht :( |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!