editor total langsam ...
Übersicht

cybyBetreff: editor total langsam ... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
ich habe jetzte einen editor und eine rpg engine gemacht, doch wenn man jetzte karten so mit der größe von 150*150 macht dann dauert das ein paar sekunden bis das flip durchgelaufen ist .... weis wer wie man das schneller machen kann ? noch ein hinweis zum editor: -3layer - man wechselt mit den tasten 1-3 ! -mit "n" kann man eine neue karte erstellen - mit F1 und F2 kann man speichern und laden ... -wenn man beim speichern map eingibt ist das die karte wo geladen wird noch ein hinweis zur rpg e. : -man bewegt den player mit den pfeiltasten .... die bilder und exe der sachen gibt es hier game: Code: [AUSKLAPPEN] AppTitle "RPG Test"
;grafikmodus Graphics 800,600,16,2 SetBuffer BackBuffer() ;<<<<<<<<<< tiles laden Global tile1 = LoadImage("gfx\tiles\tile1.bmp") Global tile2 = LoadImage("gfx\tiles\tile2.bmp") Global tile3 = LoadImage("gfx\tiles\tile3.bmp") Global tile4 = LoadImage("gfx\tiles\tile4.bmp") ;<<<<<<<<<< andere bilder laden Global player_anim = LoadAnimImage("anim1.bmp",24,32,0,11) MaskImage player_anim,32,156,0 Global movemodus = 0 ;tile kordinaten Global tilex = 32 Global tiley = 32 ;map kordinaten Global map1x Global map1y ;scrolling Global scrolling_speed = 4 scrolling2x = 2 scrolling2y = 2 Global scrollingx = scrolling2x*tilex Global scrollingy = scrolling2y*tiley ;player kordinaten Global playerx = 8 Global playery = 8 Global player2x = playerx-scrolling2x;die hintergrund pos vom player Global player2y = playery-scrolling2y;die hintergrund pos vom player Global move_gehen = 2 ;2 = ja ;1 = nein Global move_player = 0 ;tasten Global up_key = 200 Global down_key = 208 Global right_key = 205 Global left_key = 203 ;die map1 laden ... datei = ReadFile("maps/map.map") map1x = ReadInt(datei) map1y = ReadInt(datei) Dim map1_l1(map1x,map1y);layer1 - unter dem spieler Dim map1_l2(map1x,map1y);layer2 - selbe höhe wie der spieler Dim map1_l3(map1x,map1y);layer3 - über dem spieler For y = 0 To map1y-1 For x = 0 To map1x-1 map1_l1(x,y) = ReadInt(datei) map1_l2(x,y) = ReadInt(datei) map1_l3(x,y) = ReadInt(datei) Next Next CloseFile(datei) ;######################################################################### ;################# mainloop ############################################## ;######################################################################### Repeat Cls layer1() layer2() DrawImage player_anim,playerx*tilex,playery*tiley,frame layer3() If KeyHit(1) Then ende() ;######################################################################### ;######################################################################### ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< player animation zeit = MilliSecs() If zaelerstart + 150 < MilliSecs() Then If movemodus = 1 Then ;hoch If frame > 2 Then frame = 0 If frame = 2 Then frame = 0 frame = frame + 1 zaelerstart = MilliSecs() EndIf If movemodus = 2 Then ;rechts If frame > 5 Then frame = 3 If frame < 3 Then frame = 3 If frame = 5 Then frame = 3 frame = frame + 1 zaelerstart = MilliSecs() EndIf If movemodus = 3 Then ;runter If frame > 8 Then frame = 5 If frame < 5 Then frame = 5 If frame = 8 Then frame = 5 frame = frame + 1 zaelerstart = MilliSecs() EndIf If movemodus = 4 Then ;links If frame > 10 Then frame = 8 If frame < 8 Then frame = 8 If frame = 10 Then frame = 8 frame = frame + 1 zaelerstart = MilliSecs() EndIf EndIf ;######################################################################### ;####################### moveplayer ###################################### ;<<<<<<<<<< player steuerrung ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< hoch If KeyDown(down_key) And map1_l2(player2x,player2y+1) = 0 If move_gehen = 2 Then move_gehen = 1 move_player = 1 EndIf EndIf ;bewegen mit move If move_player = 1 Then ;move_player1 If move_gehen = 1 scrollingy = scrollingy - scrolling_speed xo = xo + scrolling_speed movemodus = 3 ;charakter animation If xo = tiley Then move_player = 0 movemodus = 0 player2y = player2y + 1 move_gehen = 2 xo = 0 EndIf End If End If ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< runter If KeyDown(up_key) And map1_l2(player2x,player2y-1) = 0 If move_gehen = 2 Then move_gehen = 1 move_player = 2 EndIf EndIf ;bewegen mit move If move_player = 2 Then ;move_player2 If move_gehen = 1 scrollingy = scrollingy + scrolling_speed xo = xo + scrolling_speed movemodus = 1 ;charakter animation If xo = tiley Then move_player = 0 movemodus = 0 player2y = player2y - 1 move_gehen = 2 xo = 0 EndIf End If End If ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< rechts If KeyDown(right_key) And map1_l2(player2x+1,player2y) = 0 If move_gehen = 2 Then move_gehen = 1 move_player = 3 EndIf EndIf ;bewegen mit move If move_player = 3 Then ;move_player3 If move_gehen = 1 scrollingx = scrollingx - scrolling_speed xo = xo + scrolling_speed movemodus = 2 ;charakter animation If xo = tilex Then move_player = 0 movemodus = 0 player2x = player2x + 1 move_gehen = 2 xo = 0 EndIf End If End If ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< links If KeyDown(left_key) And map1_l2(player2x-1,player2y) = 0 If move_gehen = 2 Then move_gehen = 1 move_player = 4 EndIf EndIf ;bewegen mit move If move_player = 4 Then ;move_player4 If move_gehen = 1 scrollingx = scrollingx + scrolling_speed xo = xo + scrolling_speed movemodus = 4 ;charakter animation If xo = tilex Then move_player = 0 movemodus = 0 player2x = player2x - 1 move_gehen = 2 xo = 0 EndIf End If End If ;variale Color 255,0,0 Text 10,10,"xo"+xo Text 10,30,"moveplayer"+move_player Text 10,50,"move_gehen"+move_gehen Text 10,70,"player2y"+player2y Text 10,90,"player2x"+player2x ;################### ende move player #################################### ;######################################################################### Flip(1) Forever ;########################## layer1 zeichnen ############################## Function layer1() For y = 0 To map1y-1 For x = o To map1x-1 Select map1_l1(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select Next Next End Function ;########################## layer2 zeichnen ############################## Function layer2() For y = 0 To map1y-1 For x = o To map1x-1 Select map1_l2(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select Next Next End Function ;########################## layer3 zeichnen ############################## Function layer3() For y = 0 To map1y-1 For x = o To map1x-1 Select map1_l3(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select Next Next End Function ;###################### ende ############################################# Function ende() FreeImage tile1 FreeImage tile2 FreeImage tile3 FreeImage tile4 End End Function editor: Code: [AUSKLAPPEN] Graphics 800,600
SetBuffer BackBuffer() ;<<<<<<<<<< tiles laden Global tile1 = LoadImage("gfx\tiles\tile1.bmp") Global tile2 = LoadImage("gfx\tiles\tile2.bmp") Global tile3 = LoadImage("gfx\tiles\tile3.bmp") Global tile4 = LoadImage("gfx\tiles\tile4.bmp") Global tilex = 32 Global tiley = 32 Global mapx Global mapy Color 255,0,0 .karte_groesse FlushKeys Locate 10,10 : mapx = Input("KarteX : ") Text 10,30,mapx FlushKeys Locate 10,50 :mapy = Input("KarteY : ") Text 10,70,mapy Global scrollingx Global scrollingy Global scrolling_speed = 32 Global layer = 1;gibt den layer Dim mapl1(mapx,mapy) Dim mapl2(mapx,mapy) Dim mapl3(mapx,mapy) Global tile = 2;welches tile mal setzten will... For y = 0 To mapy-1 For x = 0 To mapx-1 mapl1(x,y) = 1 mapl2(x,y) = 0 mapl3(x,y) = 0 Next Next Repeat Cls mx = MouseX() my = MouseY() ;save If KeyHit(59) Then Locate 50,300 FlushKeys save(Input("Speichername: ")) FlushKeys End If ;load If KeyHit(60) Then Locate 50,300 FlushKeys load(Input("Ladename: ")) FlushKeys End If ; neu If KeyHit(49) datei1 = WriteFile("maps\sicherheits_kopie.map") WriteInt(datei1,mapx) WriteInt(datei1,mapy) For y = 0 To mapy-1 For x = 0 To mapx-1 WriteInt(datei1,mapl1(x,y)) WriteInt(datei1,mapl2(x,y)) WriteInt(datei1,mapl3(x,y)) Next Next CloseFile(datei1) Goto karte_groesse EndIf layer1() layer2() layer3() ;maustase If mx > 0 And mx < 800 And my > 0 And my < 400 If MouseDown(1) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< linke If layer = 1 Then mapl1((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = tile If layer = 2 Then mapl2((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = tile If layer = 3 Then mapl3((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = tile EndIf If MouseDown(2) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< rechts If layer = 1 Then mapl1((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = 0 If layer = 2 Then mapl2((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = 0 If layer = 3 Then mapl3((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = 0 EndIf EndIf Color 255,0,0 Rect 0,410,800,170 info() ;layer wechseln If KeyHit(2) Then layer = 1 If KeyHit(3) Then layer = 2 If KeyHit(4) Then layer = 3 ;scrolling If KeyDown(205) Then scrollingx = scrollingx - scrolling_speed ;rechts If KeyDown(200) Then scrollingy = scrollingy + scrolling_speed ;hoch If KeyDown(203) Then scrollingx = scrollingx + scrolling_speed ;links If KeyDown(208) Then scrollingy = scrollingy - scrolling_speed ;runter ;############################################################## If mx > 100 And mx < 100 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 1 EndIf If mx > 132 And mx < 132 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 2 EndIf If mx > 164 And mx < 164 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 3 EndIf If mx > 196 And mx < 196 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 4 EndIf ;############################################################ Flip(0) Until KeyHit(1) End ;<<<<<<<<<<<<<<<<<<<<<<<<< info Function info() Color 0,0,255 Text 10,420,"Tile:"+tile ;welches tile ist gerade ? If tile = 1 Then DrawImage tile1,10,440 ;tile zeichnen If tile = 2 Then DrawImage tile2,10,440 If tile = 3 Then DrawImage tile3,10,440 If tile = 4 Then DrawImage tile4,10,440 Text 10,480,"Layer:"+layer;gibt an welcher layer aktiv ist ;auswählen ;<<<<<<<<<<<<<< DrawImage tile1,100,420 DrawImage tile2,132,420 DrawImage tile3,164,420 DrawImage tile4,196,420 If ImageRectCollide(tile1,100,420,0,mx,my,5,5) Then End End Function ;<<<<<<<<<<<<<<<<<<<<<<< layer1 Function layer1() For y = 0 To mapy-1 For x = 0 To mapx-1 Select mapl1(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select Next Next End Function ;<<<<<<<<<<<<<<<<<<<< layer2 Function layer2() For y = 0 To mapy-1 For x = 0 To mapx-1 Select mapl2(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select Next Next End Function ;<<<<<<<<<<<<<<<<<< layer3 Function layer3() For y = 0 To mapy-1 For x = 0 To mapx-1 Select mapl3(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select Next Next End Function ;<<<<<<<<<<<<<<<<< save Function save(name_save$) If name_save = "" Then Else datei1 = WriteFile("maps\"+Str(name_save)+".map") WriteInt(datei1,mapx) WriteInt(datei1,mapy) For y = 0 To mapy-1 For x = 0 To mapx-1 WriteInt(datei1,mapl1(x,y)) WriteInt(datei1,mapl2(x,y)) WriteInt(datei1,mapl3(x,y)) Next Next CloseFile(datei1) EndIf End Function ;<<<<<<<<<<<<<<< laden Function load(name_load$) If name_load = "" Else datei = ReadFile("maps/"+name_load+".map") mapx = ReadInt(datei) mapy = ReadInt(datei) Dim mapl1(mapx,mapy) Dim mapl2(mapx,mapy) Dim mapl3(mapx,mapy) For y = 0 To mapy-1 For x = 0 To mapx-1 mapl1(x,y) = ReadInt(datei) mapl2(x,y) = ReadInt(datei) mapl3(x,y) = ReadInt(datei) Next Next CloseFile(datei) EndIf End Function der editor ist zwar nicht der beste, habe in aber auch nur am Sonntag geproggt ^^ THX mfg cyby ![]() |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
weißt du was clipping ist?
es wird nur der sichtbare Teil gezeichnet - du musst start x/y und end x/y der map berechnen und diesen Teil einzeichnen Habe heir eine Karte mit 1000x1000 und läuft wie geschmiert... For y = 0 To map1y-1 For x = o To map1x-1 ;<<<wieso machst du statt 0 buchstabe rein? .... Next Next machst du zu: For y = starty To endy For x = startx To endx .... Next Next wobei du startx,y und endx,y noch berechnen musst |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
cyby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das mit dem buchstabe war ein rechtschreibfehler ![]() also könnte man eigentlich beim editor scrollingx und scrollingy nehmen, also für das zeichnen for scrollingx to scrollingx+20*32;die 20*32 für 20tiles mehr .. for socrllingy to scorllingy+20*32;siehe oben ^^ ;.... ;... next next ? |
||
cyby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm,
also muss man das startx,starty,endx,endy mit den scrollingdaten errechnen ? |
||
![]() |
theBlade |
![]() Antworten mit Zitat ![]() |
---|---|---|
als nächstes mach aus den drei dim-felder eins... den fehler hatte ich auch mal. kannst du zB so abspeichern
dim map(x,y,layer) (nur n vorschlag) |
||
"Ich bin wie ich bin. Die einen kennen mich, die anderen können mich." (Dr. Konrad Adenauer)
UTFSB -> (use the fuckin "suchen"-button) User posted image <- link -.- |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und dann noch ne Dimension raus und dafür Types verwenden, damit die Felder problemlos und leicht verständlich erweitert werden können ![]() |
||
cyby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke für die Vorschläge !
hat wer noch Vorschläge ? dann bitte posten ! vom problem her mit dem clipping , kann mir da bitte wer mal weitere tips geben ^^ ![]() soweit wie ich das verstanden habe werden nur die tiles gezeichnet, die man auch sehen kann und der rest nicht, so das es schnelles scrolling gibt !?!? mfg cyby ![]() ich wiederhole es nochmal, wenn ihr weite vorschläge vom code her habt, bitte posten ! sonst werde ich ![]() ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Genau das ![]() Du berechnest, welche Tiles überhaupt auf dem Schirm sind und nur die werden dann auch gezeichnet. Der Rest wird einfach aussen vor gelassen. Die genaue Formel für das berechnen von Start / End x,y musst du dabei selber entwickeln. Es ist nicht schwer und eine gute Übung für bedeutend grössere Probleme die bald auf dich zukommen werden ![]() |
||
cyby |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
habe jetzte mal einen kleinen testcode geschrieben, weis aber nicht genau wie die formel grob aussieht, kann mir wer vielleicht einen kleinen tip geben ... wäre nett ![]() Code: [AUSKLAPPEN] Graphics 640,480,16,2
SetBuffer BackBuffer() Locate 200,200:Print "Daten werden geladen ..." ;tile1 = LoadImage("gfx\tiles\tile1.bmp") mapx = 10 mapy = 10 tilex = 32 tiley = 32 startx = 0 starty = 0 endex = startx+10 endey = starty+10 scrollingx = 0 scrollingy = 0 Dim map(mapx,mapy) Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 Data 1,1,1,1,1,1,1,1,1,1 For y = 0 To mapy-1 For x = 0 To mapx-1 Read map(x,y) Next Next Repeat Cls For y = starty To endey For x = startx To endex Select map(x,y) Case 1 ;DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Color 255,0,0 Rect x*tilex+scrollingx,y*tiley+scrollingy,tilex,tiley End Select Next Next If KeyDown(200) Then scrollingy = scrollingy - 5 If KeyDown(203) Then scrollingx = scrollingx - 5 If KeyDown(205) Then scrollingx = scrollingx + 5 If KeyDown(208) Then scrollingy = scrollingy + 5 Flip Until KeyHit(1) End THX mfg cyby ![]() |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein alter weißer herr hat gesagt, so geht das mit dem clipping:
Zitat: Graphics 800,600 ,0,2
SetBuffer BackBuffer() ;<<<<<<<<<< tiles laden Global tile1 = LoadImage("gfx\tiles\tile1.bmp") Global tile2 = LoadImage("gfx\tiles\tile2.bmp") Global tile3 = LoadImage("gfx\tiles\tile3.bmp") Global tile4 = LoadImage("gfx\tiles\tile4.bmp") Global tilex = 32 Global tiley = 32 Global mapx Global mapy Color 255,0,0 .karte_groesse FlushKeys Locate 10,10 : mapx = Input("KarteX : ") Text 10,30,mapx FlushKeys Locate 10,50 :mapy = Input("KarteY : ") Text 10,70,mapy Global scrollingx Global scrollingy Global scrolling_speed = 32 Global layer = 1;gibt den layer Dim mapl1(mapx,mapy) Dim mapl2(mapx,mapy) Dim mapl3(mapx,mapy) Global tile = 2;welches tile mal setzten will... For y = 0 To mapy-1 For x = 0 To mapx-1 mapl1(x,y) = 1 mapl2(x,y) = 0 mapl3(x,y) = 0 Next Next Repeat Cls mx = MouseX() my = MouseY() ;save If KeyHit(59) Then Locate 50,300 FlushKeys save(Input("Speichername: ")) FlushKeys End If ;load If KeyHit(60) Then Locate 50,300 FlushKeys load(Input("Ladename: ")) FlushKeys End If ; neu If KeyHit(49) datei1 = WriteFile("maps\sicherheits_kopie.map") WriteInt(datei1,mapx) WriteInt(datei1,mapy) For y = 0 To mapy-1 For x = 0 To mapx-1 WriteInt(datei1,mapl1(x,y)) WriteInt(datei1,mapl2(x,y)) WriteInt(datei1,mapl3(x,y)) Next Next CloseFile(datei1) Goto karte_groesse EndIf layer1() layer2() layer3() ;maustase If mx > 0 And mx < 800 And my > 0 And my < 400 If MouseDown(1) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< linke If layer = 1 Then mapl1((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = tile If layer = 2 Then mapl2((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = tile If layer = 3 Then mapl3((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = tile EndIf If MouseDown(2) ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< rechts If layer = 1 Then mapl1((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = 0 If layer = 2 Then mapl2((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = 0 If layer = 3 Then mapl3((mx-scrollingx)/tilex,(my-scrollingy)/tiley) = 0 EndIf EndIf Color 255,0,0 Rect 0,410,800,170 info() ;layer wechseln If KeyHit(2) Then layer = 1 If KeyHit(3) Then layer = 2 If KeyHit(4) Then layer = 3 ;scrolling If KeyDown(205) Then scrollingx = scrollingx - scrolling_speed ;rechts If KeyDown(200) Then scrollingy = scrollingy + scrolling_speed ;hoch If KeyDown(203) Then scrollingx = scrollingx + scrolling_speed ;links If KeyDown(208) Then scrollingy = scrollingy - scrolling_speed ;runter ;############################################################## If mx > 100 And mx < 100 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 1 EndIf If mx > 132 And mx < 132 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 2 EndIf If mx > 164 And mx < 164 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 3 EndIf If mx > 196 And mx < 196 + 32 And my > 420 And my < 420 + 32 If MouseHit(1) Then tile = 4 EndIf ;############################################################ Flip(1) Until KeyHit(1) End ;<<<<<<<<<<<<<<<<<<<<<<<<< info Function info() Color 0,0,255 Text 10,420,"Tile:"+tile ;welches tile ist gerade ? If tile = 1 Then DrawImage tile1,10,440 ;tile zeichnen If tile = 2 Then DrawImage tile2,10,440 If tile = 3 Then DrawImage tile3,10,440 If tile = 4 Then DrawImage tile4,10,440 Text 10,480,"Layer:"+layer;gibt an welcher layer aktiv ist ;auswählen ;<<<<<<<<<<<<<< DrawImage tile1,100,420 DrawImage tile2,132,420 DrawImage tile3,164,420 DrawImage tile4,196,420 If ImageRectCollide(tile1,100,420,0,mx,my,5,5) Then End End Function ;<<<<<<<<<<<<<<<<<<<<<<< layer1 Function layer1() gh = GraphicsHeight() gw = GraphicsWidth() Xmax=gw/tilex YMax=gh/tiley For y = -(scrollingy/tiley) To Ymax-(scrollingy/tiley) For x = -(scrollingx/tilex) To Xmax-(scrollingx/tilex) If x >= 0 And x < Xmax Then If y >= 0 And y < Ymax Then Select mapl1(x,y) Case 1 DrawBlock tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawBlock tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawBlock tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawBlock tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select End If End If Next Next End Function ;<<<<<<<<<<<<<<<<<<<< layer2 Function layer2() gh = GraphicsHeight() gw = GraphicsWidth() Xmax=gw/tilex YMax=gh/tiley For y = -(scrollingy/tiley) To Ymax-(scrollingy/tiley) For x = -(scrollingx/tilex) To Xmax-(scrollingx/tilex) If x >= 0 And x < Xmax Then If y >= 0 And y < Ymax Then Select mapl2(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select End If End If Next Next End Function ;<<<<<<<<<<<<<<<<<< layer3 Function layer3() gh = GraphicsHeight() gw = GraphicsWidth() Xmax=gw/tilex YMax=gh/tiley For y = -(scrollingy/tiley) To Ymax-(scrollingy/tiley) For x = -(scrollingx/tilex) To Xmax-(scrollingx/tilex) If x >= 0 And x < Xmax Then If y >= 0 And y < Ymax Then Select mapl3(x,y) Case 1 DrawImage tile1,x*tilex+scrollingx,y*tiley+scrollingy Case 2 DrawImage tile2,x*tilex+scrollingx,y*tiley+scrollingy Case 3 DrawImage tile3,x*tilex+scrollingx,y*tiley+scrollingy Case 4 DrawImage tile4,x*tilex+scrollingx,y*tiley+scrollingy End Select End If End If Next Next End Function ;<<<<<<<<<<<<<<<<< save Function save(name_save$) If name_save = "" Then Else datei1 = WriteFile("maps\"+Str(name_save)+".map") WriteInt(datei1,mapx) WriteInt(datei1,mapy) For y = 0 To mapy-1 For x = 0 To mapx-1 WriteInt(datei1,mapl1(x,y)) WriteInt(datei1,mapl2(x,y)) WriteInt(datei1,mapl3(x,y)) Next Next CloseFile(datei1) EndIf End Function ;<<<<<<<<<<<<<<< laden Function load(name_load$) If name_load = "" Else datei = ReadFile("maps/"+name_load+".map") mapx = ReadInt(datei) mapy = ReadInt(datei) Dim mapl1(mapx,mapy) Dim mapl2(mapx,mapy) Dim mapl3(mapx,mapy) For y = 0 To mapy-1 For x = 0 To mapx-1 mapl1(x,y) = ReadInt(datei) mapl2(x,y) = ReadInt(datei) mapl3(x,y) = ReadInt(datei) Next Next CloseFile(datei) EndIf End Function |
||
between angels and insects |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group