Bestimmter Sound dauerhaft abgespielt

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

jonnyboy

Betreff: Bestimmter Sound dauerhaft abgespielt

BeitragDi, März 18, 2008 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leutz, ich bins mal wieder Wink

Ich habe ein zienmlich komisches problem:

Ich habe einen Spaceshooter erstellt, der schon ziemlich fortgeschritten ist.
Mir fehltnurnoch der Sound, der kommt, wenn die gegner schießen.
Vorher hatte ich den selben Sound verwendet wie den, den das Spielerraumschiff für diese funktion benutzt.
Das hat auch alles geklappt. jetzt habe ich dafür aber einen anderen Sound.
Wenn ich den aber einsetze, dann wird dieser Sound dauerhaft abgespielt, und er überschneidet sich auchnoch ständig. Das Ergebniss: Ein Soundgewirr von abschüssen, auch wenn der gegner nciht schießt.

ich habe den Sound NICHT alsLoop definiert, und vorher hat er wie gesagt auch geklappt!
Das Format ist auch das selbe.. der andere ist nur etwas länger.

kann mir jemand helfen?

hier die Funktion:

Code: [AUSKLAPPEN]

Function gegnerschuss() ; Die Schuesse der Gegner werden generiert

If gegschusszahl > 12 Then

   If geg(1)\y < 250 Then
   Local randschusspos = Rand(0,2)
   gegschusszahl = 0
   
   gegkanone.gegschusstyp = New gegschusstyp
   gegkanone\xk = zufallxpos + 32 + (randschusspos * 50)
   gegkanone\yk = geg(1)\y
   PlaySound schusound ; LASSOSOUND WIRD DAUERHAFT ABGESPIELT???!!!
End If
End If
For gegkanone.gegschusstyp = Each gegschusstyp
   gegkanone\yk = gegkanone\yk + 8
   DrawImage gegkugel, gegkanone\xk, gegkanone\yk
Next

For gegkanone.gegschusstyp = Each gegschusstyp

If gegkanone\yk < 0 Then
Delete gegkanone.gegschusstyp
End If
Next

End Function
 

sdjh

BeitragMi, März 19, 2008 19:50
Antworten mit Zitat
Benutzer-Profile anzeigen
wahrscheinlich wird irgendwo im programm die variable gegschusszahl und geg(1)\y so gesetzt, dass die Bedingung wieder eintritt.
Schau mal nach, ob irgendwo eine bedingung nicht ganz korrekt ist. am einfachsten debugst du dir die ganze zeit diese beiden variblen um zu sehen, welche werte sie annehmen.

jonnyboy

BeitragDo, März 20, 2008 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, aber das Problem ist ja, das es bei dem einen Sound, wenn ich ihn einsetze, problemlos klappt! Ich könnte den auch meinetwegen behalten, aber cooler wäre, wenn es unterschiedliche Sounds sind...

Aber wenn das mit einem Sound korrekt klappt, dann kann es ja nicht am scriptliegen, also das irgendwo die Bedingung dauerhaft erfüllt wird...

Trozdem danke fürdie Antwort,ich check nochmal alles durch...

mfg, Jonny

Hagbard

BeitragDo, März 20, 2008 10:20
Antworten mit Zitat
Benutzer-Profile anzeigen
So, ich versuch's mal:
Dazu würde ich aber gerne wissen, was diese beiden Bedingungen und die verwendeten Varaiblen für eine Bedeutung haben. Dein Sound wird abgespielt, wenn diese beiden Bedingungen wahr sind sind, wann sind sie das bzw. welche Bedeutung hat das anschaulich?

Zitat:
If gegschusszahl > 12 Then

If geg(1)\y < 250 Then



Kannst du vielleicht mal einen lauffähigen Code hochladen oder hier posten?

jonnyboy

BeitragDo, März 20, 2008 13:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Chellaz Hagbard =)

Danke, das du mir helfen willst.

Die Bedingung fragt erstens einen Counter ab (gegnerschusszahl). Der wird in der Hauptschleife immer +1 gesetzt. geg(1)\y < 250 fragt ab, ob der gegner sich noch über den ersten 250 Pixeln vom Bildschirm befindet (Die gegner fliegen von oben nach unten und sollen ab 250 nichtmehr schießen). Das hat wie schon gesagt mit dem einen Sound geklappt und klappt immernoch.

So, ich hab jez da ein bisschen viel kaudawelsch... Musste grad auch noch ne Function auskonnentieren damit das überhaupt so klappt^^

Also, hier ist der Code:

Code: [AUSKLAPPEN]
;####################################################


;######  SPACE HUNT   ##   Version 1.00 ALPHA  ######


;erstellt von Jonas Marx, BMC-Games, °Copyright 2008°


;####################################################



;ANFANG

Graphics 800,600,2,2

SetBuffer BackBuffer()

;Die ersten Variablen für das Hauptmenue werden geladen

Global back1 = LoadImage("back.png")
Global back2 = LoadImage("back.png")
Global titel = LoadImage("uberschrift.bmp")
Global hilfetext = LoadImage("hilfetext.bmp")

Global duwaso = LoadSound("duwasound.wav")

Global buttonneu = LoadAnimImage("neuspiel.bmp", 245, 49, 0, 2)
Global buttoninfo = LoadAnimImage("infospiel.bmp", 245, 49, 0,2)
Global buttonende = LoadAnimImage("endspiel.bmp", 245, 49, 0, 2)


MaskImage buttonneu, 255,0, 255
MaskImage buttoninfo, 255,0, 255
MaskImage buttonende, 255, 0, 255
MaskImage titel, 8, 33, 82
MaskImage hilfetext, 255,0, 255

Global back1x = 0, back1y = 0 ;Hintergrundbilder bsetzen
Global back2x = 0, back2y = -600
Global selekta = 1
Global hilftextblend = 0

Global arial = LoadFont("Arial",14,False,False,False)

;Alle glob. Variablen geladen, Musik wird noch abgespielt...

LoopSound duwaso
PlaySound duwaso

Gosub menu ;Ab zum Menue
.spiel


;Alle für das Spiel wichtigen Variablen werden geladen

Global ich = LoadImage("ich.bmp")
Global ichrechts = LoadImage("ichrechts.bmp")
Global ichlinks = LoadImage ("ichlinks.bmp")
Global gegnerbild = LoadImage("gegner.bmp")
Global ichkugel = LoadImage("ichkugel.bmp")
Global gegkugel = LoadImage("gegnerkugel.bmp")
Global geldbild = LoadImage("geld.bmp")
Global einschlag = LoadImage ("kugeleinschlag.bmp")

;Sounds:
Global schusound = LoadSound("shot.wav")
Global expso = LoadSound("expsound.wav")
Global lasso = LoadSound("lasagun.wav")
Global bonus = LoadSound ("boni.wav")

Global lebenbut = LoadImage("leben.bmp")
Global anzeigebut = LoadImage("anzeige.bmp")
Global explosion = LoadAnimImage("exp.bmp", 64, 64, 0, 16)

;Masken:
MaskImage ich , 8, 33, 82
MaskImage ichrechts, 8, 33, 82
MaskImage ichlinks, 8, 33,82
MaskImage gegnerbild, 128, 128, 128
MaskImage anzeigebut, 255, 0, 255
MaskImage explosion, 12, 12, 12
MaskImage geldbild, 255, 0, 255
MaskImage einschlag, 255,0, 255

;Variablen werden gesetzt:
Global ichx = 368
Global ichy = 535
Global ichschusszahl = 0
Global tod = 0
Global explo = 0
Global gegnerweg = 0
Global icontime = 0

selekta = 1
hilftextblend = 0

SeedRnd MilliSecs() ; Andere Variablen festlegen
Global zufallxpos = Rand(0,508)
Global iconzufall = Rand(0,770)
Global gegschusszahl = 0



;WICHTIGSTE VARIABLEN FUER SPIELVERLAUF

Global leben = 5
Global punkte = 0
Global counta = 0
Global spielstart = 0
Global megamoney = 500


;Types:
Type gegner ;Gegnertype
Field x
Field y
Field energie
End Type

Dim geg.gegner(3)

For i = 1 To 3
   geg(i) = New gegner
Next

Type ichschuss ;Meine kugeln
Field xs
Field ys
End Type

Type gegschusstyp ; gegnerische Kugeln
Field xk
Field yk
End Type

Type icon
Field xd
Field yd
End Type

;ENDE VOM LADEN

If spielstart >= 1 Then ; Bei 2tem Spiel werden alle Types gelöscht und neu erschaffen

For il = 1 To 3
   Delete geg(il)
Next
For gegkanone.gegschusstyp = Each gegschusstyp
Delete gegkanone.gegschusstyp
Next
For kanone.ichschuss = Each ichschuss
Delete kanone.ichschuss
Next

End If




Repeat  ; HAUPTSCHLEIFE

Cls

background()
ichline()
gegnerset()
kugelberech()
kugelkolli()
gegnerschuss()
gegschusskolli()
geld()
geldkolli()
anzeigfunktion()

gegschusszahl = gegschusszahl + 1

If leben < 0 Then
   tod = 1
End If

Delay 10

Flip

If KeyHit(1) Then
leben = -1
tod = 1
End If

Until tod = 1 ; ENDE





Repeat ;Todschleife

Cls

counta = counta + 1

background()
geglastset()
anzeigfunktion()
explo ()
geglastshot()

spielstart =spielstart + 1

Delay 60

Flip

Until KeyHit(1) Or counta = 75





.menu

Repeat ;Hauptmenü

Cls

background()
menuzeig()

DrawImage(titel, 100, 50)
Delay 1


If KeyHit(28) Then

If selekta = 1 Then
Gosub spiel
End If
If selekta = 2 Then
hilftextblend = 1
End If
If selekta = 3 Then
Exit
End If

End If


If KeyHit(208) And selekta < 3 Then ; runter
   selekta = selekta + 1
End If

If KeyHit(200) And selekta > 1 Then ;rauf
   selekta = selekta - 1
End If

Flip

Until KeyHit(1)

End





Function background() ;Hintergrund bewegen

Cls

If back1y >= 600 Then
   back1y = back1y - 1200
End If

If back2y >= 600 Then
   back2y = back2y - 1200
End If

back1y = back1y + 3
back2y = back2y + 3

DrawImage(back1, back1x, back1y)
DrawImage(back2, back2x, back2y)

End Function



Function ichline() ;Dein Schiff wird bewegt


If KeyDown(205) And ichx < 736 Then
   ichx = ichx + 5
   DrawImage (ichrechts, ichx, ichy)

ElseIf KeyDown(203) And ichx > 0 Then
   ichx = ichx - 5
   DrawImage(ichlinks, ichx, ichy)
   
Else
DrawImage(ich, ichx, ichy)

EndIf

End Function



Function gegnerset() ;Die Gegner werden gesetzt

For in = 1 To 3
   geg(in)\x = zufallxpos + ((in-1) * 50)
   geg(in)\y = geg(in)\y + 4
   geg(in)\energie = 2
Next

For is = 1 To 3
   DrawImage gegnerbild, geg(is)\x, geg(is)\y
Next

For il = 1 To 3
   
If geg(il)\y >= 600 Then
   Delete geg(il)
   zufallxpos = Rand(0,508)

geg(il) = New gegner   
   geg(il)\x = zufallxpos = Rand(0, 508)
   geg(il)\y = 0
   geg(il)\energie = 2
End If

Next

End Function



Function kugelberech() ;Deine kugeln werden berechnet

If KeyDown (57) Then
   ichschusszahl = ichschusszahl + 1
End If

If ichschusszahl = 5 Then
   ichschusszahl = 0
   kanone.ichschuss = New ichschuss
   kanone\xs = ichx + 30
   kanone\ys = ichy + 18
   PlaySound schusound
End If

For kanone.ichschuss = Each ichschuss
   kanone\ys = kanone\ys - 8
DrawImage ichkugel, kanone\xs, kanone\ys
Next


For kanone.ichschuss = Each ichschuss

If kanone\ys < 0 Then
Delete kanone.ichschuss
End If
Next


End Function



Function kugelkolli() ; Kollision der kugel mit Gegner wird abgefragt

;For kanone.ichschuss = Each ichschuss

;For geg(iz) = Each gegner
;If ImagesCollide(ichkugel, kanone\xs, kanone\ys, 0, gegnerbild, geg(iz)\x, geg(iz)\y, 0) Then
;Delete kanone.ichschuss
;geg(iz)\energie = geg(iz)\energie - 1
;End If
;If geg(iz)\energie <= 0 Then
;End If
;Next
;Next

End Function



Function gegnerschuss() ; Die Schuesse der Gegner werden generiert

If gegschusszahl > 12 Then

   If geg(1)\y < 250 Then
   Local randschusspos = Rand(0,2)
   gegschusszahl = 0
   
   gegkanone.gegschusstyp = New gegschusstyp
   gegkanone\xk = zufallxpos + 32 + (randschusspos * 50)
   gegkanone\yk = geg(1)\y
   PlaySound schusound ; LASSOSOUND WIRD DAUERHAFT ABGESPIELT???
End If
End If
For gegkanone.gegschusstyp = Each gegschusstyp
   gegkanone\yk = gegkanone\yk + 8
   DrawImage gegkugel, gegkanone\xk, gegkanone\yk
Next

For gegkanone.gegschusstyp = Each gegschusstyp

If gegkanone\yk < 0 Then
Delete gegkanone.gegschusstyp
End If
Next

End Function



Function gegschusskolli() ; Kollision zwischen gegnerkugeln und ich

For gegkanone.gegschusstyp = Each gegschusstyp
gegkolltest = ImagesCollide(gegkugel, gegkanone\xk, gegkanone\yk, 0, ich, ichx, ichy, 0)
gegkolltest = gegkolltest + ImagesCollide(gegkugel, gegkanone\xk, gegkanone\yk, 0, ichlinks, ichx, ichy, 0)
gegkolltest = gegkolltest + ImagesCollide(gegkugel, gegkanone\xk, gegkanone\yk, 0, ichrechts, ichx, ichy, 0)
If gegkolltest >= 1 Then
leben = leben - 1
gegkolltest = 0

Delete gegkanone
End If

Next

End Function



Function geld()

If icontime < 10 And icontime >= megamoney Then

geld.icon = New icon
geld\xd = iconzufall
geld\yd = -64

iconzufall = Rand(0,770)

icontime = 0

End If

If  icontime >= megamoney + iconzufall Then

geld.icon = New icon
geld\xd = iconzufall
geld\yd = -64

iconzufall = Rand(0,770)

icontime = 0

End If

For geld.icon = Each icon
geld\yd = geld\yd + 4
DrawImage(geldbild, geld\xd, geld\yd)
Next

icontime = icontime + 1

For geld.icon = Each icon
If geld\yd > 600 Then
Delete geld
End If
Next

End Function



Function geldkolli()


For geld.icon = Each icon
If ImagesCollide(ich, ichx, ichy, 0, geldbild, geld\xd, geld\yd, 0) = 1 Then
Delete geld
punkte = punkte + 10
PlaySound bonus
End If
Next

For geld.icon = Each icon
If ImagesCollide(ichlinks, ichx, ichy, 0, geldbild, geld\xd, geld\yd, 0) = 1 Then
Delete geld
punkte = punkte + 10
PlaySound bonus
End If
Next

For geld.icon = Each icon
If ImagesCollide(ichrechts, ichx, ichy, 0, geldbild, geld\xd, geld\yd, 0) = 1 Then
Delete geld
punkte = punkte + 10
PlaySound bonus
End If
Next

End Function


Function anzeigfunktion() ;Funktion zum Anzeigen der Leben/Punkte

DrawImage (anzeigebut, 670, 550)
Text  785, 573, punkte, True, False

For tt = 0 To 4
If leben >= tt Then
   DrawImage (lebenbut, 682 + (tt * 10), 575)
End If

Next

End Function



Function explo()

If explo <> 15 Then

explo = explo + 1
DrawImage(explosion, ichx, ichy, explo)

If explo = 1 Then
PlaySound expso
End If
End If

End Function



Function geglastshot() ; Die letzten Schüsse gleiten raus

For gegkanone.gegschusstyp = Each gegschusstyp
   gegkanone\yk = gegkanone\yk + 8
   DrawImage gegkugel, gegkanone\xk, gegkanone\yk
Next

For gegkanone.gegschusstyp = Each gegschusstyp

If gegkanone\yk < 0 Then
Delete gegkanone.gegschusstyp
End If
Next

End Function



Function geglastset() ;Die Gegner werden ein letztes mal gesetzt

If gegnerweg = 0 Then
For in = 1 To 3
   geg(in)\x = zufallxpos + ((in-1) * 50)
   geg(in)\y = geg(in)\y + 4
   geg(in)\energie = 2
Next

For is = 1 To 3
   DrawImage gegnerbild, geg(is)\x, geg(is)\y
Next

For il = 1 To 3
   
If geg(il)\y >= 600 Then
   Delete geg(il)
   gegnerweg = 1
   End If
Next
End If

End Function



Function menuzeig()

If selekta = 1 Then
DrawImage(buttonneu,545,443,1)
DrawImage(buttoninfo,545, 493, 0)
DrawImage(buttonende,545,543,0)
End If

If selekta = 2 Then
DrawImage(buttonneu,545,443,0)
DrawImage(buttoninfo,545, 493, 1)
DrawImage(buttonende,545,543,0)
End If
If selekta = 3 Then
DrawImage(buttonneu,545,443,0)
DrawImage(buttoninfo,545, 493, 0)
DrawImage(buttonende,545,543,1)
End If
If selekta <> 1 And selekta <> 2 And selekta <> 3 Then
selekta = 1
End If

If hilftextblend = 1 Then
DrawImage(hilfetext, 68, 300)

SetFont arial
Text 550,405, "Dies ist die TEST-Alpha-Version 1.00"
Text 550,420, "Das Copyright unterliegt Jonas Marx"
End If

End Function

jonnyboy

BeitragFr, März 21, 2008 1:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay Leute, sorry, es hat sich erledgit. Warum auch immer, aber es lag an der Wave-datei.Ich hab nochmal mit nem anderen programm abgespeichert und dann ging es endlich...^^ Ist aber ziemlich blöd, das es bei bestimmten Formaten solche Probleme dabei gibt? -.-...

Naja, egal Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group