Hi, das ist mein erster versuch ein Tutoial zu entwickeln, und ist noch nicht ganz ausgereift.
Es stammt aus dem Spiele projekt "WALUK" ein Dame ähnliches Brettspiel.
ich wollte meine Technik für ein Grid aus (Array's) presentieren.
Das ganze ist für ein 12 * 6 Felder Grid gedacht. Jedes Feld kann ein Wert speichern(0 bis unendlich) das wird benutzt um zu zeigen ob das feld lehr ist(0), oder besetzt ist(1) oder (2).
Jeder Spielstein hat ebenfals ein solches Array, wo gespeichert wird auf welchem Feld sich der Spielstein befindet.
Das schreibe ich ins create event, am anfang des Levels.
ein mal das Feld für die Werte (0-2):
0 = leer
1= eigener Spielstein
2 = gegner Spielstein
12 felder breit und 6 hoch.
[x,y]
schaut so aus:
grid[1,1] = 0
grid[1,2] = 0
.........
.....
grid[12,6] = 0
Dann das zweite grid für die Positionen:
Der gedanke hier ist, das ich aus den zwei Koordinaten x und y das Feld bestimme und dann diesem die genaue Position zuweise.
Also 12 Felder breit heißt: x ist 1 -12.
Und 6 Felder hoch heißt: y ist 1-6.
dabei sind es nun zwei variablen, einmal für x und einmal für y.
Das ganze ist sehr klein vom code her und gut überschaubar.
Die Felder sind immer 123pixel breit und hoch bei mir. Und die obere start ecke ist: x=124, y=141.
Also geht das bei x immer um 123pixel nach rechts.
schaut so aus:
gridx[1] = 124
gridx[2] = 247
...
gridx[12] = 124 + (11*123) // ich weis die zahl grad nicht aus dem Kopf.
und um die y Koordinaten zu bestimmen:
gridy[1] = 141
gridy[2] = 264
....
gridy[12] = 141 + (11*123) // ich weis die zahl grad nicht aus dem Kopf.
Nun wenn ich ein Objekt(Spielstein) auf das Spielfeld (in die linke obere ecke) positionieren möchte, kann man so vohrgehen:
instance_create(x,y,obj_name)
instance_create(gridx[1],gridy[1],obj_name)
Um die Positionen zu verändern, kann man für die zwei neue werte verwenden, und diese veränderen.
meine zwei start variablen für ein Spielstein:
das kommt ins create event des ersten Spielsteines, der auf Position x=1 und y=1 ist.
Die Programmiertechnik benötigt einen startpunkt für jeden Spielstein, von dem der ganze verlauf ausgeht.
sx = 1
sy = 1
Nun klicke ich auf den Spielstein, dabei sollen Pfeile erscheinen auf den lehren feldern wo ich hin gehen kann.
Da ich weis wo diese sind kann ich mit einer einfachen berechnung diese definieren.
dafür verwende ich die weiteren zwei variablen, die den neuen Wert speichern. und fals ich dann ein feld weiter gehe, geben diese den wert an das Objekt zurück(sx,sy)
ux = 0 // für diagonal rechts hoch laufen
uy = 0
dx = 0 // für diagonal recht unten laufen
dy = 0
--------------
So nun kann man die neue Position berechnen...
ux = sx + 1 // umm ein feld nach rechts zu springen
uy = sy - 1 // um ein feld nach oben zuspringen
dx = sx +1 // umm ein feld nach rechts zu springen
dy = sy + 1 // um ein feld nach unten zuspringen
dann prüfe ich ob das feld frei ist, also:
if grid[ux,uy] = 0
wenn ja, kann ich dort den Pfeil setzten.
instance_create(gridx[ux],gridy[uy],obj_name)
das gleiche gilt für dx,dy.
...
Es stammt aus dem Spiele projekt "WALUK" ein Dame ähnliches Brettspiel.
ich wollte meine Technik für ein Grid aus (Array's) presentieren.
Das ganze ist für ein 12 * 6 Felder Grid gedacht. Jedes Feld kann ein Wert speichern(0 bis unendlich) das wird benutzt um zu zeigen ob das feld lehr ist(0), oder besetzt ist(1) oder (2).
Jeder Spielstein hat ebenfals ein solches Array, wo gespeichert wird auf welchem Feld sich der Spielstein befindet.
Das schreibe ich ins create event, am anfang des Levels.
ein mal das Feld für die Werte (0-2):
0 = leer
1= eigener Spielstein
2 = gegner Spielstein
12 felder breit und 6 hoch.
[x,y]
schaut so aus:
grid[1,1] = 0
grid[1,2] = 0
.........
.....
grid[12,6] = 0
Dann das zweite grid für die Positionen:
Der gedanke hier ist, das ich aus den zwei Koordinaten x und y das Feld bestimme und dann diesem die genaue Position zuweise.
Also 12 Felder breit heißt: x ist 1 -12.
Und 6 Felder hoch heißt: y ist 1-6.
dabei sind es nun zwei variablen, einmal für x und einmal für y.
Das ganze ist sehr klein vom code her und gut überschaubar.
Die Felder sind immer 123pixel breit und hoch bei mir. Und die obere start ecke ist: x=124, y=141.
Also geht das bei x immer um 123pixel nach rechts.
schaut so aus:
gridx[1] = 124
gridx[2] = 247
...
gridx[12] = 124 + (11*123) // ich weis die zahl grad nicht aus dem Kopf.
und um die y Koordinaten zu bestimmen:
gridy[1] = 141
gridy[2] = 264
....
gridy[12] = 141 + (11*123) // ich weis die zahl grad nicht aus dem Kopf.
Nun wenn ich ein Objekt(Spielstein) auf das Spielfeld (in die linke obere ecke) positionieren möchte, kann man so vohrgehen:
instance_create(x,y,obj_name)
instance_create(gridx[1],gridy[1],obj_name)
Um die Positionen zu verändern, kann man für die zwei neue werte verwenden, und diese veränderen.
meine zwei start variablen für ein Spielstein:
das kommt ins create event des ersten Spielsteines, der auf Position x=1 und y=1 ist.
Die Programmiertechnik benötigt einen startpunkt für jeden Spielstein, von dem der ganze verlauf ausgeht.
sx = 1
sy = 1
Nun klicke ich auf den Spielstein, dabei sollen Pfeile erscheinen auf den lehren feldern wo ich hin gehen kann.
Da ich weis wo diese sind kann ich mit einer einfachen berechnung diese definieren.
dafür verwende ich die weiteren zwei variablen, die den neuen Wert speichern. und fals ich dann ein feld weiter gehe, geben diese den wert an das Objekt zurück(sx,sy)
ux = 0 // für diagonal rechts hoch laufen
uy = 0
dx = 0 // für diagonal recht unten laufen
dy = 0
--------------
So nun kann man die neue Position berechnen...
ux = sx + 1 // umm ein feld nach rechts zu springen
uy = sy - 1 // um ein feld nach oben zuspringen
dx = sx +1 // umm ein feld nach rechts zu springen
dy = sy + 1 // um ein feld nach unten zuspringen
dann prüfe ich ob das feld frei ist, also:
if grid[ux,uy] = 0
wenn ja, kann ich dort den Pfeil setzten.
instance_create(gridx[ux],gridy[uy],obj_name)
das gleiche gilt für dx,dy.
...
RGS rudigames.de