Autor Beitrag
Nagelbrett
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 13.05.03 00:25 
hi, ich hab folgendes problem..

ich hab für mein spiel einen typ tSpielfeld deklariert der folgendermaßen aussieht:
ausblenden 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:
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: 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!
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: 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:
ausblenden Quelltext
1:
2:
3:
4:
5:
Type
  TGame = record
    Typ,Tey:Integer;
...
end;

und der code aus der Textdatei sieht so aus:
ausblenden volle Höhe 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 }

_________________
MFG
Michael Springwald, "kann kein englisch...."
Nagelbrett Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Mi 14.05.03 14:45 
also wenn du ein 2D array hast könntes du die werte so zuweisen:
ausblenden Quelltext
1:
map[x,y].Tex:=1; // andres geht es nicht :(					

_________________
MFG
Michael Springwald, "kann kein englisch...."