pls schlägt verbesserungen vor

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

der anfänger

Betreff: pls schlägt verbesserungen vor

BeitragSa, Mai 31, 2008 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habe ein spiel programmieren wollen, das leider in die hose ging also kann mir jemand ne verbesserte version schicken b.z.w. hier reinschreiben? also ich weiss nur nich wie ich das so hinkriege, dass jede 1 sekunde ein neuer ballon erscheint pls eine pm an mich



hier der code:



Graphics 1680,1050,32,1
SetBuffer BackBuffer()
ClsColor 255,255,255
Color 0,0,0


ziel = LoadImage("zielkreuz.bmp")
muni = LoadImage("munition.bmp")
ballon = LoadImage("guter ballon.bmp")
waffe = LoadImage("sniper.bmp")

MaskImage ziel,255,255,255
MaskImage muni,255,255,255
MaskImage ballon,255,255,255
MaskImage waffe,255,255,255

lebenballon = 1
timer = MilliSecs()
zeit = 0

mun = 3


While Not KeyHit(28)

x = MouseX()
y = MouseY()

If mun > 0 Then
If MouseHit(1) Then mun = mun - 1
EndIf

If RectsOverlap(x,y,1,1,100,100,200,200) Then
If lebenballon = 1 Then
If MouseHit(1) Then
If mun > 0 Then
If MouseHit(1) mun = mun - 1
zeit = 1
lebenballon = 0
EndIf
EndIf
EndIf
EndIf

If zeit = 1 Then
If MilliSecs() - timer > 1000 Then
timer = MilliSecs()
lebenballon = 1
zeit = 1
EndIf
EndIf

If MouseHit(2) Then mun = 3
If MouseHit (1) Then mun = x-1
For schuss = 0 To mun - 1
DrawImage muni,schuss * 200,700
Next
If MouseHit(2) DrawImage ballon, 300,400

DrawImage waffe,x,y
If lebenballon = 1 Then DrawImage ballon,100,100

Line x - 20 , y - 20 , x - 2,y-2
Line x + 20 , y - 20 , x + 2,y-2
Line x + 20 , y + 20 , x + 2,y+2
Line x - 20 , y + 20 , x - 2,y+2
If MouseHit(1) lebenballon=1-1
Flip
Cls
Wend
End

The Shark

BeitragSa, Mai 31, 2008 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du deinen code strukturiert hast helf ich dir gern, aber so . . .
mach mal ein paar einrückungen, damit man erkennt, wann welche if-abfrsage aufhört.

Broken Arrow

BeitragSa, Mai 31, 2008 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum hast du keinen frame Timer
Das wär dann für mich viel einfacher , denn du müsstest nur eine neue Variable machen , die pro schleifen durchlauf plus eins geht x = x + 1
Und wenn x > 50 ist dann machst du einen neuen Ballon.
und danach ist x = 0

hast du gar keine Types ?
  • Zuletzt bearbeitet von Broken Arrow am Sa, Mai 31, 2008 20:20, insgesamt einmal bearbeitet

The Shark

BeitragSa, Mai 31, 2008 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann ist das spiel aber auf langsamen pcs einfacher, als auf schnellen

Broken Arrow

BeitragSa, Mai 31, 2008 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
The Shark:

Dann ist das spiel aber auf langsamen pcs einfacher, als auf schnellen

Broken Arrow:
So ist es aber auch unterschiedlich schnell auf älteren Rechnern
Oder lieg ich da Falsch ? Shocked

The Shark

BeitragSa, Mai 31, 2008 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
jo stimmt schon,. aber wenn die bewegungen noch frameunabhängig werden, dann ists überall gleich schnell.
also das mit der sekunde statt nach 50 frames ist schonmal ein guter anfang

BladeRunner

Moderator

BeitragSa, Mai 31, 2008 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
bitte nutze in Zukunft die Codetags wenn Du Quellcode hinschreibst.
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

garret

BeitragSo, Jun 01, 2008 12:13
Antworten mit Zitat
Benutzer-Profile anzeigen
In deinem Fall bieten sich Types an: Erstelle einfach in einer bestimmten Zeitspanne einen neuen Eintrag - wie in deinem Fall nach einer Sekunde (Eine Sekunde wird aber schnell zu langweilig).

Den Timer, der neue Ballons erstellt, brauchst du nicht mal mit einer Bedingung zu verknüpfen, da die Ballons ja automatisch erstellt werden sollen und nicht erst, wenn du den alten abgeschossen hast, oder?

Dann reicht:

Code: [AUSKLAPPEN]

If MilliSecs() - BallonTimer > 1000

  b.Ballon = New Ballon
    b\x = Rand(0,640)
    b\y = 500

  BallonTimer = MilliSecs(); Timer zurücksetzen
EndIf


Dann gehst du später alle Type-Einträge durch und prüfst, ob ein Ballon abgeschossen wurde. Types sind ideal, wenn du die genaue Anzahl der Elemente, wie z.B. unregelmäßg erstellte Ballons, nicht kennst.

MfG garret
>>nec aspera terrent<< (Auch Widerwärtigkeiten schrecken nicht)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group