Map"blinkt"
Übersicht

snörklBetreff: Map"blinkt" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also, wenn ich meinen spieler und meine map zeichne, klappt das zwar alles, aber die map "blinkt". Das heißt es ist immer kurz weiß, dann wieder die map, kurz weiß, dann wieder die map. Der debugger ist aus, kann also hoffentlich nicht am tempo liegen. Hier ist mein Code (man kann zwar wahrscheinlich ohne bilder nicht viel mit ihm anfangen, aber vielleicht hilft es euch weiter):
Code: [AUSKLAPPEN] Global PlayerX=10 Global PlayerY=10
Global Playerfrm=1 Global Player$="right" Graphics 640,480,16,1 Titlefont=LoadFont("Matura MT Script Capitals",72) Arial=LoadFont("Arial",20) SetFont titlefont Color 0,120,0 Text 170,200,"mini_Shooter" Delay 2000 Cls SetFont arial Repeat Text 305,224,"(S)tart" Text 305,250,"(E)nde" If KeyHit(18) Then End Until KeyHit(31) Dim map(20,15) red_r_run_Soldat=LoadAnimImage("graphics\red_r_run_Soldat.png",28,50,0,7) MaskImage red_r_run_Soldat,255,0,255 red_l_run_Soldat=LoadAnimImage("graphics\red_l_run_Soldat.png",28,50,0,7) MaskImage red_l_run_Soldat,255,0,255 tileset = LoadAnimImage("graphics\tilemap.bmp",32,32,0,10) load() ;lädt die map ClsColor 255,255,255 Cls Repeat ;Map1set For x = 0 To 20 For y = 0 To 15 DrawImage tileset,x*32,y*32,map(x,y) Next Next ;Movement If KeyDown(205) Player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 playerfrm=playerfrm+1 PlayerX=PlayerX+5 EndIf If KeyDown(203) player$="left" DrawImage red_l_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 Playerfrm=Playerfrm+1 PlayerX=PlayerX-5 EndIf If Not KeyDown(205) Or KeyDown(203) playerfrm=0 If player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,playerfrm Delay 100 EndIf If player$="left" DrawImage red_l_run_Soldat,playerX,PlayerY,playerfrm Delay 100 EndIf EndIf If Playerfrm=>7 Then Playerfrm=1 ;///////////////////////////////////////////////////////////////////////////////////////////////////// If KeyHit(1) Then End Forever End Function load() ;einlesen der datei karte$ = ReadFile("maps\map1.map") ;einlesen der array und der variable tile For x = 0 To 20 For y = 0 To 15 tile = ReadLine(karte$) map(x,y) = ReadInt(karte$) Next Next ;schließen der datei CloseFile(karte$) End Function hoffe auf eine relativ rasche antwort, da ich schon lange darüber brüte^^ mfg Snörkl |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
ql:setbuffer ql:backbuffer() direkt nach graphics.
Dann ein ql:flip ans ende deiner Mainloop. edit: und das ql:cls auch in die Loop, entweder an den Anfang oder ans Ende, nach Flip |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so, nun hab ichs also so gemacht :
Code: [AUSKLAPPEN] Global PlayerX=10 Global PlayerY=10
Global Playerfrm=1 Global Player$="right" Graphics 640,480,16,1 Titlefont=LoadFont("Matura MT Script Capitals",72) Arial=LoadFont("Arial",20) SetFont titlefont Color 0,120,0 Text 170,200,"mini_Shooter" Delay 2000 Cls SetFont arial Repeat Text 305,224,"(S)tart" Text 305,250,"(E)nde" If KeyHit(18) Then End Until KeyHit(31) Dim map(20,15) red_r_run_Soldat=LoadAnimImage("graphics\red_r_run_Soldat.png",28,50,0,7) MaskImage red_r_run_Soldat,255,0,255 red_l_run_Soldat=LoadAnimImage("graphics\red_l_run_Soldat.png",28,50,0,7) MaskImage red_l_run_Soldat,255,0,255 tileset = LoadAnimImage("graphics\tilemap.bmp",32,32,0,10) load() ;lädt die map ClsColor 255,255,255 Cls Repeat SetBuffer BackBuffer() ;Map1set For x = 0 To 20 For y = 0 To 15 DrawImage tileset,x*32,y*32,map(x,y) Next Next ;Movement If KeyDown(205) Player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 playerfrm=playerfrm+1 PlayerX=PlayerX+5 EndIf If KeyDown(203) player$="left" DrawImage red_l_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 Playerfrm=Playerfrm+1 PlayerX=PlayerX-5 EndIf If Not KeyDown(205) Or KeyDown(203) playerfrm=0 If player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,playerfrm Delay 100 EndIf If player$="left" DrawImage red_l_run_Soldat,playerX,PlayerY,playerfrm Delay 100 EndIf EndIf If Playerfrm=>7 Then Playerfrm=1 ;///////////////////////////////////////////////////////////////////////////////////////////////////// If KeyHit(1) Then End Flip Cls Forever End Function load() ;einlesen der datei karte$ = ReadFile("maps\map1.map") ;einlesen der array und der variable tile For x = 0 To 20 For y = 0 To 15 tile = ReadLine(karte$) map(x,y) = ReadInt(karte$) Next Next ;schließen der datei CloseFile(karte$) End Function die map wird nun kurz angezeigt, danach verschwindet sie und kommt nicht wieder xD^^- also wird sie nicht mehr angezeigt... hoffe Du kannst mir wieder weiterhelfen mfg Snörkl Edit: Wenn ich das setbuffer backbuffer() direkt nach graphics schreibe wird mein spieletitel und das hauptmenü nicht mehr angezeigt |
||
![]() |
BlitzcoderNewsposter |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global PlayerX=10 Global PlayerY=10
Global Playerfrm=1 Global Player$="right" Graphics 640,480,16,1 setbuffer backbuffer() Titlefont=LoadFont("Matura MT Script Capitals",72) Arial=LoadFont("Arial",20) SetFont titlefont Color 0,120,0 Text 170,200,"mini_Shooter" Delay 2000 Cls SetFont arial Repeat Text 305,224,"(S)tart" Text 305,250,"(E)nde" If KeyHit(18) Then End Until KeyHit(31) Dim map(20,15) red_r_run_Soldat=LoadAnimImage("graphics\red_r_run_Soldat.png",28,50,0,7) MaskImage red_r_run_Soldat,255,0,255 red_l_run_Soldat=LoadAnimImage("graphics\red_l_run_Soldat.png",28,50,0,7) MaskImage red_l_run_Soldat,255,0,255 tileset = LoadAnimImage("graphics\tilemap.bmp",32,32,0,10) load() ;lädt die map ClsColor 255,255,255 Cls Repeat ;Map1set For x = 0 To 20 For y = 0 To 15 DrawImage tileset,x*32,y*32,map(x,y) Next Next ;Movement If KeyDown(205) Player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 playerfrm=playerfrm+1 PlayerX=PlayerX+5 EndIf If KeyDown(203) player$="left" DrawImage red_l_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 Playerfrm=Playerfrm+1 PlayerX=PlayerX-5 EndIf If Not KeyDown(205) Or KeyDown(203) playerfrm=0 If player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,playerfrm Delay 100 EndIf If player$="left" DrawImage red_l_run_Soldat,playerX,PlayerY,playerfrm Delay 100 EndIf EndIf If Playerfrm=>7 Then Playerfrm=1 ;///////////////////////////////////////////////////////////////////////////////////////////////////// If KeyHit(1) Then End Flip Cls Forever End Function load() ;einlesen der datei karte$ = ReadFile("maps\map1.map") ;einlesen der array und der variable tile For x = 0 To 20 For y = 0 To 15 tile = ReadLine(karte$) map(x,y) = ReadInt(karte$) Next Next ;schließen der datei CloseFile(karte$) End Function |
||
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________ |°°°°°°°°°°°°°°||'""|""\__,_ |______________ ||__ |__|__ |) |(@) |(@)"""**|(@)(@)****|(@) |
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
öhm^^- wie gesagt, da wird mein hauptmenü nicht angezeigt, die karte auch nicht | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Global PlayerX=10 Global PlayerY=10
Global Playerfrm=1 Global Player$="right" Graphics 640,480,16,1 SetBuffer BackBuffer() Titlefont=LoadFont("Matura MT Script Capitals",72) Arial=LoadFont("Arial",20) SetFont titlefont Color 0,120,0 Text 170,200,"mini_Shooter" Flip Delay 2000 SetFont arial Repeat Cls Text 305,224,"(S)tart" Text 305,250,"(E)nde" If KeyHit(18) Then End Flip Until KeyHit(31) Dim map(20,15) red_r_run_Soldat=LoadAnimImage("graphics\red_r_run_Soldat.png",28,50,0,7) MaskImage red_r_run_Soldat,255,0,255 red_l_run_Soldat=LoadAnimImage("graphics\red_l_run_Soldat.png",28,50,0,7) MaskImage red_l_run_Soldat,255,0,255 tileset = LoadAnimImage("graphics\tilemap.bmp",32,32,0,10) load() ;lädt die map ClsColor 255,255,255 Repeat Cls ;Map1set For x = 0 To 20 For y = 0 To 15 DrawImage tileset,x*32,y*32,map(x,y) Next Next ;Movement If KeyDown(205) Player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 playerfrm=playerfrm+1 PlayerX=PlayerX+5 EndIf If KeyDown(203) player$="left" DrawImage red_l_run_Soldat,PlayerX,PlayerY,Playerfrm Delay 100 Playerfrm=Playerfrm+1 PlayerX=PlayerX-5 EndIf If Not KeyDown(205) Or KeyDown(203) playerfrm=0 If player$="right" DrawImage red_r_run_Soldat,PlayerX,PlayerY,playerfrm Delay 100 EndIf If player$="left" DrawImage red_l_run_Soldat,playerX,PlayerY,playerfrm Delay 100 EndIf EndIf If Playerfrm=>7 Then Playerfrm=1 ;///////////////////////////////////////////////////////////////////////////////////////////////////// If KeyHit(1) Then End Flip Forever End Function load() ;einlesen der datei karte$ = ReadFile("maps\map1.map") ;einlesen der array und der variable tile For x = 0 To 20 For y = 0 To 15 tile = ReadLine(karte$) map(x,y) = ReadInt(karte$) Next Next ;schließen der datei CloseFile(karte$) End Function Du musst selbstredend flip und cls in all deinen Loops benutzen. Was ich von der animation mittels Delay halte sag ich jetzt besser nicht. Du kennst ja millisecs(). |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
jaa^^- werds noch ändern, habs halt gecodet als ich noch nichts drüber wusste ![]() ... edit so wies jetzt ist zeigt er leider die map überhaupt nicht mehr an^^ |
||
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hat denn nun noch irgendjemand hier eine idee? Liegt das einfach an der größe? Ist irgendwo im code eine speedbremse (das delay zwischen den frames hab ich schon rausgenommen und das ganze mit millisecs() gemacht)?
wenn ich mir andere games anschaue, dann haben die riesige maps, bei denen blinkts ja auch nicht^^ |
||
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
JAAA; GEWONNEN!!! TILEMAP VS ICH 0:1 XD
bin so glüücklich endlich hab ichs geschafft ![]() und zwar musst ich meinen tiles nur eine transparenz (255,255,255 rgb) geben, dann gehts^^. Hab zwar keine ahnung warum, aber es klappt! edit: richtiges thema^^ |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
kennst du auch schon den edit Button? | ||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
snörkl |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
klar^^- ich wollte es nur jetzt als abschluss schreiben, um zu sagen, ihr könnt den thread jetzt dichtmachen. Sonst hätte ich selbstverständlich den editbutton benutzt ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für diese tiefschürfende Erkenntnis hätte es keinen Doppelpost gebraucht. Hätte Dir jemand potentiell antworten wollen hätte er auch so gesehen dass dein Problem schon gelöst ist. | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group