GLBasic forum

Codesnippets => Code Snippets => Topic started by: cyby on 2004-Oct-11

Title: RPG-Engine Befehle
Post by: cyby on 2004-Oct-11
hi,

habe mal ein paar Befehle für ein RPG programmiert, vielleicht kann der eine oder andere was abschauen oder schauen wie was geht
ist noch in einer sehr frühen entwicklung ... also gibt es noch einige Fehler oder manches ist so wie es später mal nicht werden sollte

-> LoadTile läd Tiles aus EINER Datei
-> DrawLayer zeichnet die Map
-> LoadMap läd eine Map
-> SaveMap speichert eine Map
Code (glbasic) Select
// --------------------------------- //
// Project: RPG-Engine 1
// Start: Sunday, October 10, 2004
// IDE Version: 2.41007
// --------------------------------- //
//LIMITFPS 30
GLOBAL mapx=10
GLOBAL mapy=10

GLOBAL max_tilex=2
GLOBAL max_tiley=2

GLOBAL tilex=32
GLOBAL tiley=32
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//------------------------------HAUPTSCHLEIFE------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------


LoadTile("tiles1.bmp",max_tilex,max_tiley)
LoadMap("map1.map",mapy,mapx)

WHILE KEY(1)=0 //das Programm wird Beendet wenn man ESC drückt
DrawLayer()


//--------------------------------------------------------------------------------
//------------------- FPS
dtime = GETTIMER()
 fps = ((1000/dtime)+fps)/2
 delay=delay+dtime
 IF delay>500
  delay=0
  showfps=fps
 ENDIF
 PRINT "FPS: "+showfps, 0,0
//--------------------------------------------------------------------------------
SHOWSCREEN
WEND

END






//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------
//------------------------------FUNCTIONEN---------------------------------------
//-------------------------------------------------------------------------------
//-------------------------------------------------------------------------------


//--------------------------------------------------------------------------------
//------------------------ LoadMap(map_name$,mapx,mapy)
//--------------------------------------------------------------------------------
FUNCTION LoadMap:map_name$,mapx,mapy

DIM map[mapx][mapy]
    FOR y=0 TO mapy-1
        GETFILE map_name$, y, line$
        FOR x=0 TO mapx-1
            map[x][y]=MID$(line$, INTEGER(x*3), 3)
        NEXT
        //PRINT line$,15,y*15
    NEXT

ENDFUNCTION

//--------------------------------------------------------------------------------
//------------------------ SaveMap(map_name$,mapx,mapy)
//--------------------------------------------------------------------------------
FUNCTION SaveMap:map_name$,mapx,mapy

DIM map[mapx][mapy]
FOR y=0 TO mapy-1
FOR x=0 TO mapx-1
map[x][y] = RND(4)
NEXT
NEXT

    FOR y=0 TO mapy-1
    line$ = ""
        FOR x=0 TO mapx-1
            line$=line$+FORMAT$(3,0,map[x][y])
    NEXT
    //PRINT line$,15,y*15
        PUTFILE map_name$, y, line$
NEXT
ENDFUNCTION
//--------------------------------------------------------------------------------
//------------------------ DrawLayer()
//--------------------------------------------------------------------------------
FUNCTION DrawLayer:


FOR x = 0 TO mapx-1
FOR y = 0 TO mapy-1

FOR z = 0 TO max_tilex*max_tiley
//------------- Layer1
SELECT map[x][y]
CASE z
SPRITE z,x*tilex,y*tiley
ENDSELECT
NEXT
NEXT
NEXT


ENDFUNCTION
//--------------------------------------------------------------------------------
//------------------------ LoadTile(tile_name$,max_tilex,max_tiley)
//--------------------------------------------------------------------------------
FUNCTION LoadTile:tile_name$,max_tilex,max_tiley

LOCAL sprite_nummer
sprite_nummer = 0
BLACKSCREEN
//LOADBMP tile_name$
//----------------------------
FILLRECT  0, 0, 32,32, RGB(255,  0,  0)
FILLRECT 32, 0, 64,32, RGB(  0,  0,255)
FILLRECT  0,32, 32,64, RGB(  0,255,  0)
FILLRECT 32,32, 64,64, RGB(  0,255,255)
//----------------------------
FOR x=0 TO max_tilex
FOR y=0 TO max_tiley
sprite_nummer=sprite_nummer+1
GRABSPRITE sprite_nummer, x*tilex, y*tiley, tilex, tiley
NEXT
NEXT
BLACKSCREEN

ENDFUNCTION


Title: RPG-Engine Befehle
Post by: Kitty Hello on 2004-Oct-19
Coooool.
Title: RPG-Engine Befehle
Post by: cyby on 2004-Oct-20
habe jetzte schon weiter programmier, wenn ich soweit bin gibt es die ersten Versionen vom Editor
Title: RPG-Engine Befehle
Post by: trucidare on 2007-Feb-13
Hallo cyby,

könntest du auch den erweietreten code einstellen? und vielleicht eine testmap? ich habe ein rpg projekt angefangen und bräuchte eine tile engine. vielleicht kannst du mir ja helfen.

danke
trucidare
Title: RPG-Engine Befehle
Post by: trucidare on 2007-Feb-21
ich hab den ganzen kram mal ein wenig verbessert hier ein paar funktionen:

Code (glbasic) Select
//--------------------------------------------------------------------------------------------------
//-------------------------------------------Load Map-------------------------------------------
//--------------------------------------------------------------------------------------------------
FUNCTION LoadMap: lm_name$
// Diese Variablen sind als LOCAL definiert:
// lm_name$
LOCAL zwischenschritt$
DIM map[max_tilesx][max_tilesy][Layer]

FOR l = 0 TO Layer-1
FOR y = 0 TO max_tilesy-1
GETFILE lm_name$, y , zwischenschritt$
FOR x = 0 TO max_tilesx-1
SPLITSTR (zwischenschritt$, split$[], ",")
map[x][y][Select_Layer] = split$[x]
NEXT
NEXT
NEXT


ENDFUNCTION // LOADMAP

//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------


//--------------------------------------------------------------------------------------------------
//-------------------------------------------Draw Layer-----------------------------------------
//--------------------------------------------------------------------------------------------------

FUNCTION DrawLayer:
// Diese Variablen sind als LOCAL definiert:
//
FOR l = 0 TO Layer-1
FOR x = 0 TO max_tilesx-1
   FOR y = 0 TO max_tilesy-1
        SPRITE map[x][y][l],x*tile_size_x,y*tile_size_y
        IF SPRCOLL(map[x][y][l], x*tile_size_x,y*tile_size_y, 11998, mx, my) AND b1
        PRINT map[x][y][l], 0,410
        map[x][y][Select_Layer] = Tilenummer
        ENDIF
        IF SPRCOLL(map[x][y][l], x*tile_size_x,y*tile_size_y, 11998, mx, my) AND b2
        map[x][y][Select_Layer] = 19992
        ENDIF
   NEXT
NEXT
NEXT


ENDFUNCTION // DRAWLAYER

//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------------------
//-------------------------------------------ShowTilebar----------------------------------------
//--------------------------------------------------------------------------------------------------

FUNCTION ShowTilebar: choose
// Diese Variablen sind als LOCAL definiert:
// choose
IF choose = 1
SPRITE 12000, 0, 420
SPRITE 12002, 0, 440
SPRITE 12001, 626, 440

IF SPRCOLL (11999, mx, my, 12001, 626, 440) AND b1
move = move+1
ENDIF
IF SPRCOLL (11999, mx, my, 12002, 0, 440) AND b1
move = move-1
IF move < 1 THEN move = 0
ENDIF
IF MOUSEAXIS(2) = 1
Select_Layer = Select_Layer -1
IF Select_Layer < 0 THEN Select_Layer = 0
ENDIF
IF MOUSEAXIS(2) = -1
Select_Layer = Select_Layer +1
IF Select_Layer > 2 THEN Select_Layer = 2
ENDIF

FOR x = 1+move TO 30+move
SPRITE x+(Select_Layer*1000), 10*(x-move)*2, 451
IF SPRCOLL(x+(Select_Layer*1000), 10*(x-move)*2, 451, 11998, mx, my) AND b1
Tilenummer = x+(Select_Layer*1000)
ENDIF
NEXT
ENDIF

PRINT "Layer: "+Select_Layer, 0, 0

ENDFUNCTION // SHOWTILEBAR

//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------

//--------------------------------------------------------------------------------------------------
//-------------------------------------------Save Map-------------------------------------------
//--------------------------------------------------------------------------------------------------

FUNCTION SaveMap: datei$
// Diese Variablen sind als LOCAL definiert:
// datei$


FOR y = 0 TO max_tilesy-1
line$ = ""
FOR x = 0 TO max_tilesx-1
line$=line$+FORMAT$(1,0,map[x][y])+","
NEXT
PUTFILE datei$, y, line$
NEXT

ENDFUNCTION // SAVEMAP

//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
Title: RPG-Engine Befehle
Post by: Kitty Hello on 2007-Feb-21
Da grins' ich bis zu den Ohren! Das liest sich wie ein Sommernachtsgedicht. Musik für meine hexadezimalen Ohren.
Title: RPG-Engine Befehle
Post by: trucidare on 2007-Feb-21
hää versteh ich nicht ^^

edit: soo besser?
Title: RPG-Engine Befehle
Post by: Kitty Hello on 2007-Feb-21
Nein. Im Ernst. Dein Code liest sich super und zeigt, dass Du Ahnung hast, was Du machst.
Title: RPG-Engine Befehle
Post by: trucidare on 2007-Feb-21
vielen dank :)

ist jetzt meine 4 te sprache die ich lern und ich muss sagen die kohle da rein zustecken hat sich gelohnt ... respekt gernot. Leider funzen keine programme auf meinem ppc mit windows for pocket pcs 2002 aber ansosnten sehr gute sprache
Title: RPG-Engine Befehle
Post by: Kitty Hello on 2007-Feb-22
PPC 2002 sollte schon laufen !? Nicht mal ein Hello World? Schau, dass Du die gx.dll im Windows-Verzeichnis hast.
Title: RPG-Engine Befehle
Post by: trucidare on 2007-Feb-22
ne bekomm nur ien absoluten schwarzen bildschirm und der lutscht mein akku meistens komplett leer aber ich werd mal sehn ob ich die dll da drin hab. danke für den tipp
Title: RPG-Engine Befehle
Post by: Polarwolf on 2008-Jan-12
Vllt. könnte ja mal jemand n Tutorial für ein simples RPG schreiben O.o
Dann hättet ihr auch gleich n schönes Beispiel für User! :D
Title: RPG-Engine Befehle
Post by: BumbleBee on 2008-Jan-12
Ne ne sowas fang ma gar net an.;) Braucht man das überhaupt ? Also ich nicht. Wenn man weiß wie man ne Map bastelt und sich darauf bewegt  (da gibts schon viele Beispiele hier)  dann ist ja das wichtigste schon fast gemacht. :D Ich denke nicht das den Rest jemand macht weil das ja schon fast ein Spiel wär. Wie man Gegner besiegt, Quests macht und dabei Ehrfahrung sammelt ist ja denn eh nicht mehr schwer.Und die Geschicht muß sich ja sowieso jeder selber ausdenken.

Aber du kannst ja gern eins machen. Also worauf wartest du noch.:D

Cheers
Title: RPG-Engine Befehle
Post by: Polarwolf on 2008-Jan-12
Najut. Ich denke ich werde mir das mal angucken. Wird bestimmt n riesiger spaß ^^
Title: RPG-Engine Befehle
Post by: Schranz0r on 2008-Jan-12
Tu dir und uns den gefallen und back kleine Brötchen zum Anfang!
Da wenn du gleich in die vollen gehst, ist die enttäuschen meist groß, wenns nicht hinhaut !
Title: RPG-Engine Befehle
Post by: Polarwolf on 2008-Jan-13
Ich bins gewohnt. Natürlich fängt man klein an. Ich habe aber jetzt n Ziel und das ist ja das Wichtigste! ;D
(Ich weiß wie schwer der Einstieg in neue Programmiersprachen ist... )
Title: RPG-Engine Befehle
Post by: Schranz0r on 2008-Jan-13
dann ist ja gut ;)