editor total langsam ...
Übersicht
BlitzBasic
Allgemein
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
BlitzBasic
Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group
