Geschwindigkeitsproblem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Roggi

Betreff: Geschwindigkeitsproblem

BeitragDi, Dez 06, 2005 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute,

Habe mit meinem Game ein Problem. Komischer Weise läuft das ganze Spiel extrem langsam. Kann mir jemand helfen?
BlitzBasic: [AUSKLAPPEN]
Graphics 1024,768,16,2 

start=LoadImage(\"GFX\Start1.bmp\");Startbilschirm
DrawImage start,1,1
Delay 2500
Cls

start2=LoadImage(\"GFX\Start.bmp\")
DrawImage start2,1,1
Delay 2500
Cls


SetFont(LoadFont(\"Comic Sans MS\",30,1))

Const game_pause = 1
Const game_menue = 2
Const game_haupt = 3
Const game_info = 4

Global game_zustand = game_menue


;Wichtig. Hauptschleife. Hier wird das ganze Spiel verwaltet.

Repeat


Select game_zustand
Case game_menue
GameMenue()
Case game_haupt
GameHaupt()
Case game_pause

End Select


Until game_zustand = game_over
End





Function GameMenue()

Local temp_zustand = game_zustand

FlushMouse()
FlushKeys()

H=LoadImage(\"GFX\ADVENTSKALENDER_BSH.bmp\")
Repeat

Cls
DrawImage H,1,1


Color 255,255,255
Text GraphicsWidth()/3,200,\"START\"
Color 255,255,255
Text GraphicsWidth()/3,400,\"Infos\"


If MouseHit(1)
If RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/3,200,StringWidth(\"START\"),StringHeight(\"START\"))
game_zustand = game_haupt
ElseIf RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/3,400,StringWidth(\"Infos\"),StringHeight(\"Infos\"))
game_zustand = game_info
EndIf
EndIf


If KeyHit(1)
End
EndIf

Flip
Until game_zustand<>temp_zustand

End Function

Function gameInfo()
Repeat
Cls
Text 1,1,\"Dieses Spiel wurde von Tom(0Ahnung) programmiert! Die Grafik stammt von Lion!\"
Text 1,20,\"Zum Beenden bitte immer ESC drücken!\"
Until KeyHit(1)
End
End Function


Function HighSort(Punkte,name$)
For a=5 To 0 Step -1 ; Bei mehr als 6 Plätzen hier ändern

If Punkte>highpoints(a)
highname$(a+1)=highname$(a)
highpoints(a+1)=highpoints(a)
highname$(a)=name$
highpoints(a)=Punkte
EndIf
Next
End Function

Function highpoints(a)
highpoints(a)= 1000
End Function

Function highname$(a)
highname$(a)= Input(\"Dein Name\")
Text 1,20,\"Dein Name ist also\"+highname$(a)
End Function


Function GameHaupt()
SetBuffer BackBuffer()

Graphics 800,600,32,1
Repeat
Cls

Hintergrund=LoadImage(\"GFX\Hintergrund.bmp\")
Geschenk1 = LoadImage(\"GFX\kGeschenk.bmp\")
Geschenk2 = LoadImage(\"GFX\gGeschenk.bmp\")
Spieler=LoadImage(\"GFX\Spieler.bmp\")
Punkte1=LoadImage(\"GFX\Punkte.bmp\")
MaskImage Punkte1,0,0,0






MaskImage Geschenk1,255,255,255
MaskImage Geschenk2,255,255,255
links=203
rechts=205
xs#=300
ys#=500



While Not KeyDown(1)
Repeat
Cls



If KeyDown(rechts) And xs#<825Then xs#=xs#+ 0.9
If KeyDown(links) And xs#>-0 Then xs# =xs#-0.9


DrawImage Hintergrund,1,1




ygeschenk#=ygeschenk# +1.1

If ygeschenk#>600 Then
ygeschenk# = -100
xgeschenk#=Rand(1,700)
geschenk=Rand(1,50)
EndIf




If geschenk<25
DrawImage Geschenk1,xgeschenk,ygeschenk#
EndIf

If geschenk>25
DrawImage Geschenk2,xgeschenk,ygeschenk#
EndIf
DrawImage Spieler,xs#,ys#
MaskImage Spieler,255,255,255;hier wird alles gemalt

Color 255,255,255
Text 700, 40, Str$(Punkte)
DrawImage Punkte1,600,27


If ImagesCollide(Spieler,xs,ys,0,Geschenk1,xgeschenk,ygeschenk#,0) Then
Punkte = Punkte + 1
EndIf





Flip

Wend



End

End Function




PS. Kann mir vielleicht jemand verraten wie ich hier einen Highscore und countdown einbaue?

Danke schonma
 

Belekamus

BeitragDi, Dez 06, 2005 15:13
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,

ich würde auf das BlitzBasic: [AUSKLAPPEN]
Delay 2500
tippen, versuch da mal andere werte....

mfg bele

EDIT: hm hab mich vertan , steht ja net inner schleife, sorry
  • Zuletzt bearbeitet von Belekamus am Di, Dez 06, 2005 19:53, insgesamt einmal bearbeitet
 

Roggi

BeitragDi, Dez 06, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne du

Das isses net, weil das Delay für die Vorschau(Bilder) steht

BlitzChecker

BeitragDi, Dez 06, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das Delay 2500 hat damit nichts zu tun. es befindet sich ja in keiner Schleife. Das ist nur für den Startsreen da.
Mögliche Ursache:
Funktions sind sehr langsam. Benutze lieber Sprungmarken und BlitzBasic: [AUSKLAPPEN]
Gosub
www.xairro.com

Jan_

Ehemaliger Admin

BeitragDi, Dez 06, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
@BlitznixChecker, lol der Witz der Woche!
hm, sehr unsauberer Quelltext, mit vielen fehlern.
was solten die ganzen Repeat?
BlitzBasic: [AUSKLAPPEN]
Graphics 1024,768,16,2 

start=LoadImage(\"GFX\Start1.bmp\");Startbilschirm
DrawImage start,1,1
Delay 2500
Cls

start2=LoadImage(\"GFX\Start.bmp\")
DrawImage start2,1,1
Delay 2500
Cls


SetFont(LoadFont(\"Comic Sans MS\",30,1))

Const game_pause = 1
Const game_menue = 2
Const game_haupt = 3
Const game_info = 4

Global game_zustand = game_menue


;Wichtig. Hauptschleife. Hier wird das ganze Spiel verwaltet.

Repeat


Select game_zustand
Case game_menue
GameMenue()
Case game_haupt
GameHaupt()
Case game_pause

End Select


Until game_zustand = game_over
End





Function GameMenue()

Local temp_zustand = game_zustand

FlushMouse()
FlushKeys()

H=LoadImage(\"GFX\ADVENTSKALENDER_BSH.bmp\")
Repeat

Cls
DrawImage H,1,1


Color 255,255,255
Text GraphicsWidth()/3,200,\"START\"
Color 255,255,255
Text GraphicsWidth()/3,400,\"Infos\"


If MouseHit(1)
If RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/3,200,StringWidth(\"START\"),StringHeight(\"START\"))
game_zustand = game_haupt
ElseIf RectsOverlap(MouseX(),MouseY(),1,1,GraphicsWidth()/3,400,StringWidth(\"Infos\"),StringHeight(\"Infos\"))
game_zustand = game_info
EndIf
EndIf


If KeyHit(1)
End
EndIf

Flip
Until game_zustand<>temp_zustand

End Function

Function gameInfo()
Repeat
Cls
Text 1,1,\"Dieses Spiel wurde von Tom(0Ahnung) programmiert! Die Grafik stammt von Lion!\"
Text 1,20,\"Zum Beenden bitte immer ESC drücken!\"
Until KeyHit(1)
End
End Function


Function HighSort(Punkte,name$)
For a=5 To 0 Step -1 ; Bei mehr als 6 Plätzen hier ändern

If Punkte>highpoints(a)
highname$(a+1)=highname$(a)
highpoints(a+1)=highpoints(a)
highname$(a)=name$
highpoints(a)=Punkte
EndIf
Next
End Function

Function highpoints(a)
highpoints(a)= 1000
End Function

Function highname$(a)
highname$(a)= Input(\"Dein Name\")
Text 1,20,\"Dein Name ist also\"+highname$(a)
End Function


Function GameHaupt()
SetBuffer BackBuffer()

Graphics 800,600,32,1

Cls

Hintergrund=LoadImage(\"GFX\Hintergrund.bmp\")
Geschenk1 =LoadImage(\"GFX\kGeschenk.bmp\")
Geschenk2 = LoadImage(\"GFX\gGeschenk.bmp\")
Spieler=LoadImage(\"GFX\Spieler.bmp\")
Punkte1=LoadImage(\"GFX\Punkte.bmp\")
MaskImage Punkte1,0,0,0






MaskImage Geschenk1,255,255,255
MaskImage Geschenk2,255,255,255
links=203
rechts=205
xs#=300
ys#=500
MaskImage Spieler,255,255,255;hier wird alles gemalt
Color 255,255,255

While Not KeyDown(1)
DrawImage Hintergrund,0,0

If KeyDown(rechts) And xs#<825Then xs#=xs#+ 0.9
If KeyDown(links) And xs#>-0 Then xs# =xs#-0.9







ygeschenk#=ygeschenk# +1.1

If ygeschenk#>600 Then
ygeschenk# = -100
xgeschenk#=Rand(1,700)
geschenk=Rand(1,50)
EndIf




If geschenk<25
DrawImage Geschenk1,xgeschenk,ygeschenk#
EndIf

If geschenk>25
DrawImage Geschenk2,xgeschenk,ygeschenk#
EndIf
DrawImage Spieler,xs#,ys#



Text 700, 40, Punkte
DrawImage Punkte1,600,27


If ImagesCollide(Spieler,xs,ys,0,Geschenk1,xgeschenk,ygeschenk#,0) Then
Punkte = Punkte + 1
EndIf

t2=t1
t1=MilliSecs()
Text 0,0,\"FPS: \"+(1000.0/t1-t2)



Flip 0

Wend



End

End Function
between angels and insects
  • Zuletzt bearbeitet von Jan_ am Di, Dez 06, 2005 15:34, insgesamt einmal bearbeitet

BlitzChecker

BeitragDi, Dez 06, 2005 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@Jan_: Warum? Das habe ich aus dem Buch "Jetzt lerne ich Spiele programmieren mit Blitz Basic". Ausserdem hatte ich das gleiche Problem bei manchen von meinen Spielen. Nachdem ich Gosub eingesetzt hatte, lief das Spiel deutlich schneller.
www.xairro.com

Jan_

Ehemaliger Admin

BeitragDi, Dez 06, 2005 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Deutlich?
dann machst du auch viel Falsch
between angels and insects
 

Roggi

BeitragDi, Dez 06, 2005 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

Jetzt funzt es aber jetzt tut es so komisch ruckeln wenn die Geschenke runterkommen.

Das mit dem Highscore und Countdown wäre auch nett

BlitzChecker

BeitragDi, Dez 06, 2005 15:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe beides in "Heli Hunter" von Robert Gerlach entdeckt. Wo es den Source zum downloaden gibt, weiß ich ber leider nicht mehr.
www.xairro.com

Jan_

Ehemaliger Admin

BeitragDi, Dez 06, 2005 16:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@ 0ahnung,
Flip 0
-->
Flip 1
between angels and insects
 

Paranoide

BeitragMi, Dez 07, 2005 10:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben. Ich sag' auch nur: DoubleBuffering. Damit bekommst du dieses blöde flackern der Bilder weg.

MfG

Michel
 

lohgock

BeitragMi, Dez 07, 2005 23:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ausserdem ladest du in jedem Schleifen Druchgang die bilder neu!

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group