Sound klingt blechern

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

giben

Betreff: Sound klingt blechern

BeitragMi, Okt 29, 2008 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo bin gerade so am rumprobieren.Möchte ein kleinen Shooter machen.Ich möchte gerne, wenn ich auf die Maus klicke der Sound abgespielt wird.Das geht auch,aber wieso klingt der so verzerrt?Wenn ich ihn vor den Mainloop abspiele, dann klingt es sauber?!
Hier der Code :Code: [AUSKLAPPEN]
Graphics 800,600,32,2

SetBuffer BackBuffer()
Global wiese =LoadImage ("wiese.jpg")
Global player = LoadImage ("kreuz.bmp")
Global vogel =LoadImage ("vogel.bmp")
Global schuss = LoadSound ("schuss.wav")


MaskImage player,255,0,255
MaskImage vogel,255,0,255
HidePointer
timer = CreateTimer(60)
;loop

While Not KeyHit (1)
Cls

DrawImage wiese,0,0
feind()
player()

WaitTimer timer
Flip
 Wend
End

;endloop
Function player()

DrawImage player,MouseX(),MouseY()
If MouseDown (1)=1 Then PlaySound schuss

End Function


Function feind()
DrawImage vogel,100,100
End Function 
 

E. Urbach

ehemals "Basicprogger"

BeitragMi, Okt 29, 2008 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht getestet, aber
Code: [AUSKLAPPEN]
If MouseHit(1) Then PlaySound schuss

sollte es beheben.

Schau dir die Hilfe zu MouseHit und MouseDown an.
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik
  • Zuletzt bearbeitet von E. Urbach am Mi, Okt 29, 2008 20:56, insgesamt einmal bearbeitet
 

giben

BeitragMi, Okt 29, 2008 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Turboschnelle Antwort.Jetz bin ich wieder etwas schlauer Wink
 

giben

BeitragSa, Nov 01, 2008 9:16
Antworten mit Zitat
Benutzer-Profile anzeigen
so, dann hab ich gleich noch ne Frage.Folgender Code gibt mir die Fehlermeldung "Variable must be a Type" bei der Function "spieler".Und warum zeichnet es mir mehr als nur 5 Vögel auf den Bildschirm?(function erstellefeind)
Danke schon mal
Code: [AUSKLAPPEN]
Graphics 800,600,32,2


Global wiese =LoadImage ("wiese.jpg")
Global player = LoadImage ("kreuz.bmp")
Global vogel =LoadImage ("vogel.bmp")
Global schuss = LoadSound ("schuss.wav")
Global vogel_x= 100,vogel_y=100,treffer=0
Global abschuss = LoadSound ("abschuss.wav")
Global warte = 0

MidHandle player
SeedRnd MilliSecs()
Type gegner
Field seite
Field x
Field y


End Type
Const rechts=2
Const links=1
 
;musik = LoadSound ("traumatic.mp3")
;PlaySound musik

MaskImage player,255,0,255
MaskImage vogel,255,0,255
HidePointer
timer = CreateTimer(60)
;loop
SetBuffer BackBuffer()

While Not KeyHit (1)
Cls

DrawImage wiese,0,0
erstellefeind()
feind()
spieler()

WaitTimer timer
Flip
 Wend
End

;endloop
Function spieler()

DrawImage player,MouseX(),MouseY()
 If MouseHit (1)=1 Then
     PlaySound (schuss)
     If ImagesCollide (vogel,gegn\x,gegn\y,0,player,MouseX(),MouseY(),0) Then
         treffer=1
     EndIf   
 EndIf
End Function
;feind erstellen
Function erstellefeind()
 For t = 1 To 5
   gegn.gegner = New gegner
   gegn\x = Rand(100,400)
   gegn\y = Rand(100,500)
 Next
End Function



;feinde bewegen
Function feind()

For gegn.gegner = Each gegner
    DrawImage vogel,gegn\x,gegn\y
Next   
If treffer = 1
 
   PlaySound abschuss
   treffer = 0
EndIf

End Function

The Shark

BeitragSa, Nov 01, 2008 9:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Es zeichnet so viele Vögel, weil du in jedem durchgang der Hauptschleife 5 neue erstellst

gegn.gegner muss global sein.
 

giben

BeitragSa, Nov 01, 2008 9:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ok, hab jetzt gegn.gegner global.wenn ich jetzt aber schiesse, kommt die Meldung "Object does not exist"?
Bezüglich den 5 Vögel ,sollte ich da einen Zähler einbauen?

The Shark

BeitragSa, Nov 01, 2008 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst du die bilder ins archiv packen und hier ein link reinstellen?
Dann kann ich den Code testen.

Wegen den Gegnern:
Wann sollen die Gegner auftauchen?
Sollen gegner kommen,wenn die ersten 5 tod sind,
oder soll zB jede Sekunde ein neuer Gegner kommen?
 

giben

BeitragSa, Nov 01, 2008 10:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier der Link : https://www.blitzforum.de/upload/file.php?id=3720

Habe mir das so vorgestellt, dass nicht max. mehr als 10 Gegner auf dem Bildschirm sind, und wenn ich einen abgeschossen habe, kommt z.b. nach 2 Sec. ein neuer.

The Shark

BeitragSa, Nov 01, 2008 10:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Kurzes Zwischenergebnis:
Bug ist weg, höchstens 10 Gegner

[EDIT] Nach 2 Sekunden kommen neue gegner, Code geändert
[EDIT2] Kollision jetzt richtig, nur in der Mitte des Fadenkreuzes, Code geändert

Code: [AUSKLAPPEN]

Graphics 800,600,32,2


Global wiese =LoadImage ("wiese.jpg")
Global player = LoadImage ("kreuz.bmp")
Global vogel =LoadImage ("vogel.bmp")
Global schuss = LoadSound ("schuss.wav")
Global vogel_x= 100,vogel_y=100,treffer=0
Global abschuss = LoadSound ("abschuss.wav")
Global warte = 0
Global gegn.gegner,gegneranz,gegnerzeit

MidHandle player
SeedRnd MilliSecs()

Type gegner
   Field seite
   Field x
   Field y
End Type

Const rechts=2
Const links=1
 
;musik = LoadSound ("traumatic.mp3")
;PlaySound musik

MaskImage player,255,0,255
MaskImage vogel,255,0,255
HidePointer
timer = CreateTimer(60)
;loop
SetBuffer BackBuffer()

While Not KeyHit (1)
   Cls

   DrawImage wiese,0,0
   erstellefeind()
   feind()
   spieler()

   WaitTimer timer
   Flip
Wend
End

;endloop
Function spieler()
   DrawImage player,MouseX(),MouseY()
    If MouseHit (1)=1 Then
        PlaySound (schuss)
      For gegn.gegner=Each gegner
           If ImageRectCollide (vogel,gegn\x,gegn\y,0,MouseX(),MouseY(),1,1) Then
              gegneranz=gegneranz-1
            Delete gegn.gegner
            gegnerzeit=MilliSecs()+2000
         EndIf
      Next   
   EndIf
End Function


;feind erstellen
Function erstellefeind()
   If gegnerzeit<MilliSecs()
      If gegneranz<10
         gegn.gegner = New gegner
         gegn\x = Rand(100,400)
         gegn\y = Rand(100,500)
         gegneranz=gegneranz+1
      EndIf
   EndIf
End Function



;feinde bewegen
Function feind()
   For gegn.gegner = Each gegner
      DrawImage vogel,gegn\x,gegn\y
   Next   
End Function
 

giben

BeitragSa, Nov 01, 2008 11:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, dann werd ich gleich mal schauen ob ich da durchblicke Very Happy

The Shark

BeitragSa, Nov 01, 2008 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
bitteschön Smile
Wenns sonst noch fragen gibt, frag nur.
 

giben

BeitragSo, Nov 02, 2008 10:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Habs verstanden !! Smile
Und gleich die Nächste Frage:
Hab mit von I-net einen Font runtergeladen und mit
Code: [AUSKLAPPEN]
Global font= LoadFont("BeachType.ttf",40,1,0,0)
SetFont font
text,10,10,"hallo"

ausgegeben.Aber wieso zeigt es mir den Font nur an, wenn ich die Datei "BeachType.ttf"geöffnet habe?
Wenn ich sie schliese, komm nur der standart-Font.

Nicdel

BeitragSo, Nov 02, 2008 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist der Font im C:\WINDOWS\Fonts Ordner?
 

giben

BeitragSo, Nov 02, 2008 12:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, er ist in meinem Game Ordner,aber ich dachte, wenn ich den Pfad angebe dann geht das?Weil jeder hat doch nicht den Font installiert,oder?

Der Eisvogel

BeitragSo, Nov 02, 2008 12:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Was meinst du mit "schließen"?

FreeFont?
Wenn du das meinst ist es kein Wunder.
Du musst die Schrift mit LoadFont am "Anfang" laden, dann musst du si setzten mit SetFont, aber du darfst sie danach nicht mit FreeFont aus dem Speicher werfen. Das solltest du erst am "Ende" tun.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nicdel

BeitragSo, Nov 02, 2008 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
In der Hilfe steht
Zitat:

Ab v1.55 können Fonts auch aus Dateien geladen werden, die nicht im Font-Ordner installiert sind. Allerdings muss man den Pfad und den tatsächlichen Fontnamen eingeben. Eine Schrift wie "Courier New" hat den Dateinamen "Cour.ttf". Man muss aber "Courier New" eingeben. Dahinter folgt noch die Dateiendung (entweder .ttf oder .fon). Beispiel: font=LOADFONT("C:\Spiel\Courier New.ttf",64). Ich empfehle aber den Fontnamen entsprechend umzubenennen - dadurch gibt es dann keine Probleme bei späteren Updates.
 

giben

BeitragSo, Nov 02, 2008 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab mich da bissel umständlich ausgedrückt Very Happy
ich meine wenn ich die Datei öffne (BeachType.ttf) um die Schriftart anzuschauen gehts.Sobald ich sie schliese gehts nicht.

@Nicdel

Das habe ich schon gesehen....löst aber nich mein Probel.

Nicdel

BeitragSo, Nov 02, 2008 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Schreib mal Code: [AUSKLAPPEN]
Global font= LoadFont("Beach Type.ttf",40,1,0,0)
 

giben

BeitragSo, Nov 02, 2008 21:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicdel hat Folgendes geschrieben:
Schreib mal Code: [AUSKLAPPEN]
Global font= LoadFont("Beach Type.ttf",40,1,0,0)


Hab ich schon. Sad

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group