Am ruckeln

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

@ndinho

Betreff: Am ruckeln

BeitragMi, Dez 08, 2004 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Ich kapier die Welt nicht mehr, denn ich hab ein kleines Spiel programmiert "Eat the Dots" (kennen bestimmt einige Wink)
und das neue game is nur am ruckeln, obwohl ich einen 1,8 GHz rechner habe, bitte helft mir!!!


Code: [AUSKLAPPEN]
AppTitle "Eat the Dots v1.1"


Type haus
Field x,y
End Type
Type food
Field x,y
End Type
Type rock
Field x,y
End Type
Type scheisshaus
Field x,y
End Type
Type food2
Field x,y
End Type
Type rock2
Field x,y
End Type
Function UpdatePlayer()


If KeyHit(200) Or JoyY()<-0.5 dir=0
If KeyHit(205) Or JoyX()>0.5 dir=1
If KeyHit(208) Or JoyY()>0.5 dir=2
If KeyHit(203) Or JoyX()<-0.5 dir=3


Select dir
Case 0 y=y-speed
Case 1 x=x+speed
Case 2 y=y+speed
Case 3 x=x-speed
End Select

 
a=LoadImage("oben.bmp")
b=LoadImage("unten.bmp")
c=LoadImage("rechts.bmp")
d=LoadImage("links.bmp")
If dir=0 DrawImage a,x,y
If dir=1 DrawImage c,x,y
If dir=2 DrawImage b,x,y
If dir=3 DrawImage d,x,y

If Not RectsOverlap(x,y,30,60,0,0,790,610) status=0
End Function

Function InitGame()

x=320
y=240
speed=5
dir=1
status=1
For f2.food2=Each food2 Delete f2 Next
For r2.rock2=Each rock2 Delete r2 Next
For s.scheisshaus=Each scheisshaus Delete s Next
For h.haus=Each haus Delete h Next
For f.food=Each food Delete f Next 
For r.rock=Each rock Delete r Next
For i=0 To 5
r.rock=New rock
r\x=Rnd(100)
r\y=Rnd(700)
Next
For i=0 To 15
f.food=New food
f\x=Rnd(1000)
f\y=Rnd(700)
Next
For i=0 To 0
s.scheisshaus=New scheisshaus
s\x=Rnd(1000)
s\y=Rnd(700)
Next
For i=0 To 0
r2. rock2=New rock2
r2\x=Rnd(1000)
r2\y=Rnd(700)
Next
For i=0 To 15
f2.food2=New food2
f2\x=Rnd(1000)
f2\y=Rnd(700)
Next

For i=0 To 0
h.haus=New haus
h\x=Rnd(1000)
h\y=Rnd(700)
Next

End Function

Function UpdateRocksandFood()       
d=LoadImage("food.bmp")
For f.food=Each food
DrawImage d,f\x,f\y
If RectsOverlap(x,y,30,60,f\x,f\y,30,60)
speed=speed+0.2 Delete f essen=essen-1
EndIf 
Next
 
         
c=LoadImage("fels.bmp")
For r.rock=Each rock
DrawImage c,r\x,r\y
If RectsOverlap(x,y,30,60,r\x,r\y,30,60)
status=0
EndIf
Next


e=LoadImage("Klo.bmp")
For s.scheisshaus=Each scheisshaus
DrawBlock e,s\x,s\y
If RectsOverlap(x,y,30,60,s\x,s\y,20,60)
speed=speed-1 Delete s
EndIf

Next

fressen=LoadImage("fels2.bmp")
For r2.rock2=Each rock2
DrawImage fressen,r2\x,r2\y
If RectsOverlap(x,y,30,60,r2\x,r2\y,20,20)
status=0
EndIf
Next

g=LoadImage("food2.bmp")
For f2.food2=Each food2
DrawImage g,f2\x,f2\y
If RectsOverlap(x,y,30,60,f2\x,f2\y,20,20)
speed=speed+1 Delete f2 essen=essen-1
EndIf
Next

haus=LoadImage("haus.bmp")
For h.haus=Each haus
DrawImage haus,h\x,h\y
If RectsOverlap(x,y,30,60,h\x,h\y,100,100)
status=0
EndIf
Next

End Function

Graphics 1024,768
SetBuffer BackBuffer()

Global status=0,x#=0,y#=0,speed#=1,dir=1,essen=30
While Not KeyHit(1)

Flip
Cls
Color 255,255,0
Rect 0,0,800,600,0
hintergrund=LoadImage("Hintergrund.bmp")
TileImage hintergrund,0,0
Select status
Case 0
Locate 100,100
Print "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
Print "!!!!Sie spielen  EAT THE DOTS v1.1!!!!"
Print ""
Print "Programmierung:  André Timon"
Print ""
Print "Grafik: André Borjack"
Print ""
Print ""
Print "Loading..."
Print ""
Print "Drücken Sie Enter"

If KeyHit(28) InitGame()
Case 1
UpdatePlayer()
UpdateRocksandFood()
Case 2
If essen=0 Then Cls
Locate 100,100
Print "Press Enter To Start  oder Drücken Sie Enter"
If KeyHit(28) InitGame()
End Select


Wend
While KeyDown(1)
Flip
Cls
Wend


RuntimeError "Vielen dank, dass Sie   EAT THE DOTS v1.1   gespielt haben!"
User posted image

Mein PC: AMD 3000+ / 1024 DDR-Ramm 400 / Geforce 6800
Meine Lieblingsspiele: World of Warcraft, Warcraft III, Pro Evolutions Soccer 4, Blitz Basic Smile
 

Dreamora

BeitragMi, Dez 08, 2004 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
wo ist da die genaue programmstruktur??

Also die Hauptloop zb wo man was macht?

Davon abgesehen: Die Grafiken vor/am Start laden, ich sehe da massig LoadImage in UpdateRocks was das ruckeln erzeugen wird, da das program so lange stehen bleibt bis geladen ist.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
  • Zuletzt bearbeitet von Dreamora am Mi, Dez 08, 2004 21:19, insgesamt einmal bearbeitet

wunderkind

BeitragMi, Dez 08, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Auf den ersten Blick gehört
BlitzBasic: [AUSKLAPPEN]
hintergrund=LoadImage(\"Hintergrund.bmp\")

nicht in die Schleife. Dadurch wird das selbe Bild wieder und wieder geladen.

Randall Flagg

BeitragFr, Dez 10, 2004 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
wohin denn dann?
vor Graphics oder was?
 

Dreamora

BeitragFr, Dez 10, 2004 17:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein

Nach Graphics und vor die Hauptschleife

In der Hauptschleife wird nichts mehr geladen, sondern nur noch angezeigt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Merced

BeitragDi, Dez 14, 2004 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Du hast außerdem noch in Deinen Funktionen LoadImages stehen:

Zitat:

a=LoadImage("oben.bmp")
b=LoadImage("unten.bmp")
c=LoadImage("rechts.bmp")
d=LoadImage("links.bmp")


Das ist aus der UpdatePlayer. Wie meine Vorredner gesagt haben, dass muss da raus sonst hast Du immer diese Ladevorgänge bei JEDEM EINZELNEN FRAME. Außerdem kleisterst Du Dir den Speicher zu, weil Du die Bilder nicht wieder löscht.

Wichtig ist hierbei noch, dass Du die Variablen für die Bilder die Du in Funktionen verwenden willst GLOBAL definierst.

Also etwa so:

Code: [AUSKLAPPEN]

Graphics 1024,768
SetBuffer BackBuffer()

Global a, b, c, d       ; und so weiter
a=LoadImage("oben.bmp")
b=LoadImage("unten.bmp")
c=LoadImage("rechts.bmp")
d=LoadImage("links.bmp")

Global status=0,x#=0,y#=0,speed#=1,dir=1,essen=30
While Not KeyHit(1)
...


Danach kannst Du die entsprechenden Bilder auch in den Funktionen verwenden. Tust Du das nicht dann sind a, b, c und d lokal, d.h. die Funktion wird sie jedesmal neu erstellen und wieder löschen wenn die Funktion vorbei ist.
Achte hierbei darauf, dass Du keine Vraiable doppelt nimmst, Du hast beispielsweise d später nochmal in der zweiten update-Funktion verwendet.

Außerdem rate ich dir durch Einrücken von Zeilen den Code etwas besser lessbar zu machen und eindeutigere Variablennamen als a,b,c zu vergeben Wink
http://www.starship-battles.de.vu
http://www.venture-interactive.de.vu

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Dez 14, 2004 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Fehler sind ja schon erledigt,

Und für das einrücken der Zeilen,
darf auch dieses Tool benutzt werden!

BB CodeFormer
http://people.freenet.de/rallimen/Basic
[BB2D | BB3D | BB+]

DA

BeitragDi, Dez 14, 2004 18:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

@ Rallimen
Fein Fein, diese methode muss ich mir auch mal abgucken wie man werbung für sein Produkt macht Laughing .

Thx
DarkAngel
Deutscher Blitz Basic Chat

BladeRunner

Moderator

BeitragDi, Dez 14, 2004 19:02
Antworten mit Zitat
Benutzer-Profile anzeigen
und was soll der spam? das tool ist kostenlos. es kann ihm sch...egal sein obs einer nutzt (auch wenn es im Sinne der Com. wäre wenn es alle notorischen Nichteinrücker nutzen würden).
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

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group