Ich dachte, das wäre in HTML5 klar definiert? Naja, OGG sollte in jedem Falle dabei sein und würde mir reichenKevin hat geschrieben:Sound kommt mit dem nächsten Release!
das Problem ist nur das jeder Browser andere Formate unterstützt...

Ich dachte, das wäre in HTML5 klar definiert? Naja, OGG sollte in jedem Falle dabei sein und würde mir reichenKevin hat geschrieben:Sound kommt mit dem nächsten Release!
das Problem ist nur das jeder Browser andere Formate unterstützt...
Code: Alles auswählen
<audio>
<source src="music.mp3" type="audio/mpeg" />
<source src="music.ogg" type="audio/ogg" />
</audio>
ts-soft hat geschrieben:Ich dachte, das wäre in HTML5 klar definiert? Naja, OGG sollte in jedem Falle dabei sein und würde mir reichenKevin hat geschrieben:Sound kommt mit dem nächsten Release!
das Problem ist nur das jeder Browser andere Formate unterstützt...
hab mich belesen und um PB kompatibel zu bleiben werde ich es dem Programmiere überlasen zu überprüfen welches Format funktioniert und welches nichtc4s hat geschrieben:Sprechen wir von HTML5?
Der Trick hierbei ist, mehrere Formate anzubieten, sodass jeder Browser bekommt, was er benötigt:Längerfristig wird sich aber wohl (hoffentlich) das OGG-Format durchsetzen.Code: Alles auswählen
<audio> <source src="music.mp3" type="audio/mpeg" /> <source src="music.ogg" type="audio/ogg" /> </audio>
Code: Alles auswählen
if LoadSound(#sound,"X.ogg")=#false
if LoadSound(#sound,"X.mp3")=#false
...
endif
endif
mfg Kevinchangelog hat geschrieben:[r53] 19:12 18.09.2012
R viele bugs
+ output ist jetzt kleiner
[r52] 16:23 15.09.2012
+ Binär-Zahlen z.B. %111110100
+ MouseWheel()
+ LoadFont() nur normal,Bold&Italic
+ DrawingFont()
+ FreeFont()
+ IsFont()
[r51] 23:44 14.09.2012
R \r \R repariert
+ SoundLib ohne channel unterstützung!
+ InitSound()/UseFLACSoundDecoder()/UseOGGSoundDecoder()
+ FreeSound(ID)
+ IsSound(ID)
+ LoadSound(ID,path$ [,flag])
+ PlaySound(ID,[Flag]) gibt immer 'true' zurück
+ SoundPan(ID,Pan)
+ SoundVolume(ID,Volume)
+ StopSound(ID)
trotzdem werde ich noch 'Nachgefragt' ob ich die html überschreiben möchte."%File" %executable.html /c /q /r
JSL unknow 0 check
Rings hat geschrieben:ziert sich nich beim zitieren
compiliert und überschreibt ohne Nachfrage%File %Executable.html /R /c
Download (122 KB) mit dieser Version sollte \R \q funktionieren (\r fragt nach, \R fragt nicht nach)Rings hat geschrieben:ich muss nochmals nachhaken wegen der Commandline-Unterstützung.
ich habe im Editor folgendes als Startparameter eingefügt:trotzdem werde ich noch 'Nachgefragt' ob ich die html überschreiben möchte."%File" %executable.html /c /q /r
was mache ich denn hier noch falsch ?
Als Testreferenz für die Sprites&Sound habe ich mir mal 'Waponez'
vorgenommen.
Nachdem ich die Joystick befehle, den Delay und den CHR() rausgeschmissen habe,
wird auf alle fälle schon mal ohne Fehler kompiliert.
dann kommt beim html erstellen allerdings Fehler:
JSL unknow 0 check
liegt am Gosub/Return da der Compiler die Direktiven nicht kennt sind es Variablen für in und bei "Gosub label" ist dann ein nicht erwartetes Zeichen da statt einem Leerzeichen ein +=-* oder so sein sollte...JSL unknow 0 check
ja ich hab leider nur das "nicht fragen" getestet und nicht ob alles insgesamt funktioniert...bobobo hat geschrieben:compiliert und überschreibt ohne Nachfrage%File %Executable.html /R /c
Das automatische Ausführen bekomme ich auch nicht hin
komischer parser hast du , keine Whitespace erkennung ?Kevin hat geschrieben:liegt am Gosub/Return da der Compiler die Direktiven nicht kennt sind es Variablen für in und bei "Gosub label" ist dann ein nicht erwartetes Zeichen da statt einem Leerzeichen ein +=-* oder so sein sollte...JSL unknow 0 check
mfg kevin
Code: Alles auswählen
;
; **************
; *
; Waponez II **********************************************
; *
; Origninal Waponez is from NC Gamez ! Check it on Aminet... *
; *
; *****************************************************************
;
; NOTE: This file doesn't compile with the demo version !
;
;
; Initialization of all the used ressources
;
If InitSprite() = 0 Or InitKeyboard() = 0
MessageRequester("Error", "Can't open DirectX 7 or later", 0)
End
EndIf
If InitSound() = 0
MessageRequester("Error", "Can't open DirectX 7 Or Sound Card is not present", 0)
End
EndIf
; If InitJoystick()
; EnableJoystick = 1
; EndIf
;
; Our bullet structure, which will be used by the linkedlist Bullet()
;
Structure Bullet
x.w
y.w
Width.w
Height.w
Image.w
SpeedX.w
SpeedY.w
EndStructure
Global NewList Bullet.Bullet()
Structure Explosion
x.w
y.w
State.w
Delay.w
EndStructure
Global NewList Explosion.Explosion()
Structure Alien
x.w
y.w
Width.w
Height.w
Speed.w
StartImage.w
EndImage.w
ImageDelay.w
NextImageDelay.w
ActualImage.w
Armor.w
EndStructure
Global NewList Aliens.Alien()
Procedure AddBullet(Sprite, x, y, SpeedX, SpeedY)
AddElement(Bullet())
Bullet()\x = x
Bullet()\y = y
Bullet()\Width = SpriteWidth(Sprite)
Bullet()\Height = SpriteHeight(Sprite)
Bullet()\Image = Sprite
Bullet()\SpeedX = SpeedX
Bullet()\SpeedY = SpeedY
EndProcedure
MessageRequester("Welcome !", "It's the first game done with PureBasic x86 !"+"Use the Arrows + Space To blast them all !!"+"Enjoy :-) !", 0)
;
; Now, open a 640*480 - 16 bits colours screen
;
Path$ = "Data\"
; SetRefreshRate(60)
If OpenScreen(640, 480, 16, "Waponez II")
PlayerSpeedX = 6
PlayerSpeedY = 6
BulletSpeed = 10
;
; Load the sound effects
;
LoadSound(0, Path$+"Lazer.wav")
LoadSound(2, Path$+"Explosion.wav")
;
; Load the 3 player sprites
;
LoadSprite(3, Path$+"Player_1.bmp", 0)
LoadSprite(0, Path$+"Player_2.bmp", 0)
LoadSprite(2, Path$+"Player_3.bmp", 0)
;
; Load the bullets
;
LoadSprite( 4, Path$+"Bullet_1.bmp", 0)
LoadSprite( 6, Path$+"Bullet_Right.bmp", 0)
LoadSprite( 7, Path$+"Bullet_Left.bmp", 0)
LoadSprite( 8, Path$+"Bullet_Diag1.bmp", 0)
LoadSprite( 9, Path$+"Bullet_Diag2.bmp", 0)
LoadSprite(55, Path$+"Bullet_Bottom.bmp", 0)
;
; Sprite 10 to 15 reserved for the rotating animated alien..
;
For k=0 To 5
LoadSprite(k+10, Path$+"Ennemy_3_"+Str(k+1)+".bmp", 0)
Next
;
; Sprite 20 to 30 reserved for the explosions...
;
For k=0 To 7
LoadSprite(k+20, Path$+"Explosion_"+Str(k+1)+".bmp", 0)
Next
;
; Load the background sprite
;
LoadSprite(20, Path$+"Back_3.bmp", 0)
;
PlayerWidth = SpriteWidth(3)
PlayerHeight = SpriteHeight(3)
PlayerX = 300
PlayerY = 400
Repeat
FlipBuffers() ; This should be always in the loop, the events are handle by this functions
If IsScreenActive() ; Check if is active or not (ALT+TAB symptom :)
db = 1-db
; Draw the background (an unified one...)
For BackX=0 To 640 Step 32
For BackY=-32 To 480 Step 32
DisplaySprite(20, BackX, BackY+ScrollY)
Next
Next
;Gosub CheckCollisions
;CheckCollisions:
ResetList(Aliens())
While NextElement(Aliens())
ResetList(Bullet())
While NextElement(Bullet())
If SpritePixelCollision(Bullet()\Image, Bullet()\x, Bullet()\y, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\Armor-1
DeleteElement(Bullet())
EndIf
Wend
If DeadDelay = 0 ; No more invincible...
If SpritePixelCollision(PlayerImage, PlayerX, PlayerY, Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Dead = 1
DeadDelay = 300
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
DeleteElement(Aliens())
EndIf
EndIf
Wend
;Return
; Gosub MovePlayers
; MovePlayers:
Fire = 0
PlayerImage = 3 ; Non-moving player image
; If EnableJoystick
; If ExamineJoystick(0)
;
; PlayerX+JoystickAxisX(0)*PlayerSpeedX
; PlayerY+JoystickAxisY(0)*PlayerSpeedY
;
; If JoystickAxisX(0) = 1
; PlayerImage = 0
; EndIf
;
; If JoystickAxisX(0) = -1
; PlayerImage = 2
; EndIf
;
; ; All buttons works to fire the aLiEnZ !
; ;
; If JoystickButton(0, 1) Or JoystickButton(0, 2) Or JoystickButton(0, 3) Or JoystickButton(0, 4)
; Fire = 1
; EndIf
;
; EndIf
; EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
PlayerX-PlayerSpeedX
PlayerImage = 2 ; Left moving player image
EndIf
If KeyboardPushed(#PB_Key_Right)
PlayerX+PlayerSpeedX
PlayerImage = 0 ; Right moving player image
EndIf
If KeyboardPushed(#PB_Key_Up)
PlayerY-PlayerSpeedY
EndIf
If KeyboardPushed(#PB_Key_Down)
PlayerY+PlayerSpeedY
EndIf
If PlayerX < 0 : PlayerX = 0 : EndIf
If PlayerY < 0 : PlayerY = 0 : EndIf
If PlayerX > 640-PlayerWidth : PlayerX = 640-PlayerWidth : EndIf
If PlayerY > 480-PlayerHeight : PlayerY = 480-PlayerHeight : EndIf
If Dead = 1
AddElement(Explosion())
Explosion()\x = PlayerX
Explosion()\y = PlayerY
Dead = 0
Else
If DeadDelay>0
DeadDelay-1
If db=1
If DeadDelay < 200
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
Else
DisplayTransparentSprite(PlayerImage, PlayerX, PlayerY)
EndIf
EndIf
If KeyboardPushed(#PB_Key_Space) Or Fire
If BulletDelay = 0
If DeadDelay < 100
BulletDelay = 10
; AddBullet() syntax: (#Sprite, x, y, SpeedX, SpeedY)
;
AddBullet(4, PlayerX+5 , PlayerY-10, 0 , -BulletSpeed) ; Front bullet (Double bullet sprite)
AddBullet(6, PlayerX+45, PlayerY+6 , BulletSpeed, 0) ; Right side bullet
AddBullet(7, PlayerX-11, PlayerY+6 , -BulletSpeed, 0) ; Left side bullet
AddBullet(8, PlayerX+45, PlayerY-6 , BulletSpeed, -BulletSpeed) ; Front-Right bullet
AddBullet(9, PlayerX-11, PlayerY-6 , -BulletSpeed, -BulletSpeed) ; Front-Left bullet
AddBullet(55,PlayerX+20, PlayerY+45, 0 , BulletSpeed) ; Rear bullet
PlaySound(0, 0) ; Play the 'pffffiiiouuu' lazer like sound
EndIf
EndIf
EndIf
;Return
; Gosub DisplayBullets
; DisplayBullets:
ResetList(Bullet())
While NextElement(Bullet()) ; Process all the bullet actualy displayed on the screen
If Bullet()\y < 0 ; If a bullet is now out of the screen, simply delete it..
DeleteElement(Bullet())
Else
If Bullet()\x < 0 ; If a bullet is now out of the screen, simply delete it..
DeleteElement(Bullet())
Else
If Bullet()\x > 640-Bullet()\Width
DeleteElement(Bullet())
Else
If Bullet()\y > 480
DeleteElement(Bullet())
Else
DisplayTransparentSprite(Bullet()\Image, Bullet()\x, Bullet()\y) ; Display the bullet..
Bullet()\y + Bullet()\SpeedY
Bullet()\x + Bullet()\SpeedX
EndIf
EndIf
EndIf
EndIf
Wend
;Return
; Gosub NewAlienWave
;NewAlienWave:
If AlienDelay = 0
AddElement(Aliens())
If Boss = 1
Aliens()\x = 100
Aliens()\y = -16
Aliens()\Width = SpriteWidth(50)
Aliens()\Height = SpriteHeight(50)
Aliens()\Speed = 2
Aliens()\StartImage = 50
Aliens()\EndImage = 50
Aliens()\ImageDelay = 1
Aliens()\NextImageDelay = 1
Aliens()\ActualImage = 50
Aliens()\Armor = 20
AlienDelay = 80
Else
Aliens()\x = Random(600)
Aliens()\y = -32
Aliens()\Width = SpriteWidth(10)
Aliens()\Height = SpriteHeight(10)
Aliens()\Speed = 3
Aliens()\StartImage = 10
Aliens()\EndImage = 15
Aliens()\ImageDelay = 4
Aliens()\NextImageDelay = Aliens()\ImageDelay
Aliens()\ActualImage = 10
Aliens()\Armor = 5
AlienDelay = Random(20)
EndIf
Else
AlienDelay-1
EndIf
;Return
;Gosub DisplayAliens
;DisplayAliens:
ResetList(Aliens())
While NextElement(Aliens())
DisplayTransparentSprite(Aliens()\ActualImage, Aliens()\x, Aliens()\y)
Aliens()\y + Aliens()\Speed
If Aliens()\NextImageDelay = 0
Aliens()\ActualImage+1
If Aliens()\ActualImage > Aliens()\EndImage
Aliens()\ActualImage = Aliens()\StartImage
EndIf
Aliens()\NextImageDelay = Aliens()\ImageDelay
Else
Aliens()\NextImageDelay-1
EndIf
If Aliens()\Armor <= 0
AddElement(Explosion())
Explosion()\x = Aliens()\x
Explosion()\y = Aliens()\y
Score+20
DeleteElement(Aliens())
Else
If Aliens()\y > 480
DeleteElement(Aliens())
EndIf
EndIf
Wend
;Return
; Gosub DisplayExplosions
; DisplayExplosion:
; -----------------
;
; Once an explosion has been declared (an aliens has been destroyed or the player...), it will be
; displayed inside this routine. The object remains until the end of the explosion (all the pictures
; have been displayed). Then the object is removed with DeleteElement().
;
;DisplayExplosions:
ResetList(Explosion())
While NextElement(Explosion()) ; Take the explosions objects, one by one.
; For each object, display the current explosion image (called state here)
DisplayTransparentSprite(Explosion()\State+20, Explosion()\x, Explosion()\y)
If Explosion()\Delay = 0
If Explosion()\State = 0 ; Play the sound only at the explosion start.
PlaySound(2, 0)
EndIf
If Explosion()\State < 7
Explosion()\State+1
Explosion()\Delay = 3
Else
DeleteElement(Explosion())
EndIf
Else
Explosion()\Delay-1
EndIf
Wend
;Return
If BulletDelay > 0
BulletDelay-1
EndIf
If ScrollDelay = 0
ScrollY+1
ScrollDelay = 0
Else
ScrollDelay-1
EndIf
If ScrollY>31
ScrollY = 0
EndIf
Else
; The screen is no more active but our game multitask friendly, so we stop the sounds and
; add a delay to not eat the whole CPU. Smart hey ? :)
StopSound(-1)
; Delay(20)
EndIf
Until KeyboardPushed(#PB_Key_Escape)
Else
MessageRequester("Waponez II", "Can't open a 640*480 8 bit screen !", 0)
EndIf
End
Rings hat geschrieben:ziert sich nich beim zitieren
changelog hat geschrieben:[r54] 15:38 21.09.2012
R \R schon wieder
R "\" in strings werden zu "\\"
R => / =< fehler
R fehler bei Leerzeichen vor </>/=