Bestimmter Sound dauerhaft abgespielt
Übersicht

![]() |
jonnyboyBetreff: Bestimmter Sound dauerhaft abgespielt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey Leutz, ich bins mal wieder ![]() 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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group