Hallo liebe community,
ich habe vor kurzem angefangen mit GLBASIC ein Jump n Run zu programmieren. Den Spieler habe ich erfolgreich erstellt... nun versuche ich vergeblich eine Map zu erstellen.
Mein Code:
// --------------------------------- //
// Project: My Jump AND Run
// Start: Monday, October, 2012
// IDE Version: 10.202
// FREE-VERSION:
// Benötigt Premium für Feature:
// 3D Grafik
// Netzwerk Befehle
//INLINE C/C++ Code
//Features:
// Singelplayer
// Level
// Levelwechsel
// Gegner
// Pixelgrafik
// Leitern
// Trampolin
// Spikes
// Start-/Zielpunkt
// ...
SETCURRENTDIR("Media") // go to media files
GLOBAL Player AS TPlayer //Spieler erstellen
GLOBAL Map AS TMap //Map erstellen
//GLOBAL PlayerImage%
//PlayerImage = GENSPRITE()
//LOADANIM "Player.png", PlayerImage, 32, 64
GOSUB Init
WHILE TRUE
GOSUB Render
GOSUB Update
SHOWSCREEN
WEND
SUB Init:
Player.Init (100,100)
Map.Init("map0.txt")
ENDSUB
SUB Update:
Player.Update()
Map.Update ()
ENDSUB
SUB Render:
Map.Render ()
Player.Render()
ENDSUB
Mein Spieler Code: (Kollision bitte auslassen)
//Spieler
TYPE TPlayer
x; y
vx; vy //Vektor x,y
width%
height%
HP%
scrollx; scrolly
//...
FUNCTION Init: x, y, width% = 32, height% = 64
self.x = x
self.y = y
self.vx = 0
self.vy = 0
self.width = width
self.height = height
ENDFUNCTION
FUNCTION Update:
LOCAL width, height
GETSCREENSIZE width, height
//Schwerkraft
INC self.vy, 0.01
//Bewegung
IF KEY(203) THEN DEC self.vx, 1 //links
IF KEY(205) THEN INC self.vx, 1 //rechts
// IF KEY(57) AND (Map.CollisionPoint(self.x + 1, self.y + self.height +1) OR Map.CollisionPoint(self.x + self.width -1, self.y + self.height +1)) THEN self.vy = -4 //space
//trägheit
self.vx = self.vx* 0.8
LOCAL oldx, oldy
oldx = self.x
oldy = self.y
//grenze
IF self.vy > 8 THEN self.vy = 8
IF self.vy < -8 THEN self.vy = -8
//bewege & kollision
INC self.x, self.vx
// IF Map.Collision(self.X+1, self.y+1, self.width-2, self.height-2)
// self.x = oldx
// ENDIF
// INC self.y, self.vy
// IF Map.Collision(self.X+1, self.y+1, self.width-2, self.height-2)
// self.x = oldx
// self.y = oldy
// Map.ScrollX = -self.x + width/2 + self.width/2
// Map.ScrollY = -self.y + height/2 + self.height/2
// ENDIF
ENDFUNCTION
FUNCTION Render:
DRAWRECT self.x + 1, self.y , self.width, self.height, RGB(255,0,0)
// DRAWANIM PlayerImage, 0, self.x + 1, self.y
ENDFUNCTION
ENDTYPE
Meine Map:
// --------------------------------- //
// Project: My Jump and Run
// Start: Wednesday, January 23, 2013
// IDE Version: 10.202
// FREE-VERSION:
// Benötigt Premium für Feature:
// 3D Grafik
// Netzwerk Befehle
//INLINE C/C++ Code
CONSTANT tilesize = 64
//Spielkarte
TYPE TMap
.Datas%[]
Width% ; Height%
ScrollX; ScrollY
Tileset% //speichert Frames
FUNCTION Init: Name$
LOCAL Chn% = GENFILE()
LOCAL Line$
IF OPENFILE(Chn% , Name$, 1) = FALSE THEN END
READLINE Chn, Line$
self.Width = INTEGER(Line$)
READLINE Chn, Line$
self.Height = INTEGER(Line$)
DIM self.Datas[self.Width][self.Height]
LOCAL X%,Y%
WHILE ENDOFFILE(Chn) = FALSE
READLINE chn%, line$
LOCAL Tiles$[]
SPLITSTR (Line$, Tiles$[] ",")
X=0
FOREACH tile IN Tiles$[]
self.Datas[X][Y] = INTEGER(tile)
INC X
NEXT
INC Y
ENDFUNCTION
FUNCTION Update:
ENDFUNCTION
FUNCTION Render:
FOR x = 0 TO self.Width -1
FOR y = 0 TO self.Height -1
SELECT self.Datas[x][y]
CASE 0
CASE 1
DRAWRECT x*tilesize, y*tilesize, tilesize, tilesize, RGB(255, 0, 0)
ENDSELECT
NEXT
NEXT
ENDFUNCTION
ENDTYPE
Die Map soll via Texteditor 0,1,2 etc. eingelesen werden und dann entsprechend in Farbe oder nicht Farbe gesetzt werden. (0 nichts , 1 Mapstück)
Nach dem compilen gibt er mir folgende Fehleranzeige aus: "My Jump and Run.gbas"(66) error : user type is not defined : TYPE TMap is not declared
Ich bitte um Hilfe...
Lade doch mal bitte dein Projekt hier rauf, dann kann ich später helfen ( oder wer anders ).
Bin allerdings vor 22:15 nicht zuhause :/