Probleme mit Blitz Basic

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

bruce185

Betreff: Probleme mit Blitz Basic

BeitragDi, Mai 17, 2005 0:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Mai 17, 2005 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne Code wird das nichts.
solitaire

bruce185

BeitragDi, Mai 17, 2005 1:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Mai 17, 2005 2:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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)
If x < 20 Then x = x + speed#
EndIf


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)
If x > 780 Then x = x - speed#
EndIf


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 Smile

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

links=203
rechts=205
speed#=5.3

SetBuffer BackBuffer()
While Not KeyHit(1)
Cls

If KeyDown(links) Then
If x#>0 Then
x#=x#-speed#
EndIf
EndIf

If KeyDown(rechts) Then
If x#<780 Then
x#=x#+speed#
EndIf
EndIf

Rect x#,200,20,20

Flip
Wend

bruce185

BeitragDi, Mai 17, 2005 3:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Razz

Christian
 

getlose

BeitragDi, Mai 17, 2005 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group