Probleme mit Blitz Basic
Übersicht

![]() |
bruce185Betreff: Probleme mit Blitz Basic |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi
also bei mir spinnt irgendwie Blitz Basic, z.B. wenn ich ein bild laden möchte dann sieht man das nicht im bildschirm erst nach ein paar mal wenn ich es neu kompiliere dann sieht man das bild wo ich laden möchte. Wisst ihr vieleicht an was das liegen kann, ich danke euch schonmal. MFG Christian |
||
![]() |
soli |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ohne Code wird das nichts. | ||
solitaire |
![]() |
bruce185 |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich habe wirklich ein sehr grosses problem.
und zwar spinnt mein ganzes projekt, ich möchte ein space shooter game programmieren, aber das Raumschiff bewegt sich überhaupt nicht, wenn ich jetzt mit der maus auf das fenster klicke und draufhalte und dan mit der pfeil taste rechts drücke dann bewegt sich das ganze fenster nach rechts, das ist unglaublich, ich habe doch die kordinaten des raumschiffes benutzt, wisst ihr vieleicht was da falsch ist, hier ist ein teil meiner quellcode: Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() Global rechts = (205), links = (203) Global speed# = 5.7 level = LoadImage("level.bmp") panzer = LoadImage("panzer.bmp") MaskImage panzer,255,0,255 Repeat ;Die Hauptschleife Cls ;Den Bildschirm löschen DrawImage level,a,b DrawImage panzer,x,x ;Den Raumschiff nach rechts bewegen If KeyDown(rechts) If x < 20 Then x = x + speed# EndIf ;Den Raumschiff nach links bewegen If KeyDown(links) If x > 780 Then x = x - speed# EndIf Until KeyHit(1) End ich danke euch schonmal. Christian |
||
getlose |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, denn mal los. hoffe du machst dir die mühe
und liest die folgenden paar zeilen genau durch. (das sich das ganze fenster nach rechts bewegt kann nicht an diesem code liegen!!!) was mir als erstes auffällt ist, das du das bild "level" an der position a,b zeichnest. beide variablen sind in deinem code aber '0', könntest also auch DrawImage level,0,0 schreiben. für map-scrolling könnte man 2 variablen gebrauchen, aber davon sehe ich noch nix im code. als zweites zeichnest du den panzer an der stelle x,x. das ist so nicht ganz richtig. angenommen x ist gleich 20. dann zeichnest du den panzer mit 20 pixel abstand zum oberen und rechten fenster-rand. wenn sich der panzer nur horizontal bewegen soll müsste es in etwa so dastehen : DrawImage panzer,x,200 - der panzer wird nun mit 200 pixeln abstand vom oberen fenster-rahmen gezeichnet. wie weit nun nach links oder rechts ist von 'x' abhängig. so. nun zum bewegen des panzers. gehen wir mal das folgende stückchen code genau durch. BlitzBasic: [AUSKLAPPEN] If KeyDown(rechts) als erstes fragst du also ab ob die rechte pfeil-taste gedrückt wird. wenn das der fall ist fragst du ab ob x kleiner als 20 ist. da x ja noch kleiner als 20 ist wird x um speed# erhöht. das geht jetzt so lange gut bis x größer als 20 ist. das heißt, wenn dein panzer in etwa 20 pixel abstand zum linken bildschirmrand hat is schluss mit weiterfahren, da die bedingung ja nicht mehr erfüllt wird und x somit nicht mehr erhöht wird, ganz egal wie lange du die rechte pfeil-taste drückst. fazit : der panzer kann nicht weiter als 20 pixel nach rechts fahren. nun zur links-taste : BlitzBasic: [AUSKLAPPEN] If KeyDown(links) du fragst dieses mal die links-taste ab. ist dies der fall wird gefragt ob x größer als 780 ist. da aber x schon vorher im code auf keinen fall größer als ca. 20 werden kann wird diese bedingung nie erfüllt und der panzer kann folglich nicht nach links fahren. und noch was. du willst speed# (also ne kommazahl [float] ) zu x (einer nicht-komma-zahl [int] ) hinzuzählen. funzt in diesem fall schon, aber überleg mal warum das so nicht ganz richtig ist ![]() so, und um das ganze abzuschließen, hier ein beispiel wie du es machen könntest : (ohne panzer und level) BlitzBasic: [AUSKLAPPEN] Graphics 800,600,16,2 |
||
![]() |
bruce185 |
![]() Antworten mit Zitat ![]() |
---|---|---|
danke das du dir die mühe gegeben hast soviel zu schreiben, aber ich habe es hinbekommen, und zwar habe ich das so gemacht:
Code: [AUSKLAPPEN] Graphics 800,600,16,2
SetBuffer BackBuffer() rechts = (205) links = (203) speed# = 5.7 level = LoadImage("level.bmp") panzer = LoadImage("panzer.bmp") MaskImage panzer,255,0,255 Repeat ;Die Hauptschleife Cls ;Den Bildschirm löschen DrawImage level,a,b DrawImage panzer,x+22,y+366 ;Den panzer nach rechts bewegen If KeyDown(rechts) If x < 672 Then x = x + speed# EndIf ;Den panzer nach links bewegen If KeyDown(links) If x > 0 Then x = x - speed# EndIf Flip Until KeyHit(1) End ich habe das ein bisschen umgeändert, aber es hat funktioniert, aber trotzdem danke für deine hilfe ![]() Christian |
||
getlose |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
getlose hat Folgendes geschrieben: und noch was. du willst speed# (also ne kommazahl [float] ) zu x (einer nicht-komma-zahl [int] ) hinzuzählen. funzt in diesem fall schon, aber überleg mal warum das so nicht ganz richtig ist ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group