Space encore un
Space encore un
bon voila j'ai refais space avec un principe different
si il y a des bugs ou des idées d'ennemis je suis preneur car il y a pour l'instant que deux niveaux
perso je l'ai jamais fini ^^
on peut stopper le jeu en appuyant sur "D" et si ca tourne trop vite sur certain PC augmenter le delay en appuyant plusieur fois sur la touche "A"
pour le diminuer "Z"
telecharger ici
si il y a des bugs ou des idées d'ennemis je suis preneur car il y a pour l'instant que deux niveaux
perso je l'ai jamais fini ^^
on peut stopper le jeu en appuyant sur "D" et si ca tourne trop vite sur certain PC augmenter le delay en appuyant plusieur fois sur la touche "A"
pour le diminuer "Z"
telecharger ici
Dernière modification par graph100 le ven. 07/juil./2006 21:05, modifié 1 fois.
Ben si tu gères les attentes avec un delay() c'est pas très bon , parce que tu rends la main au processeur , mais tu ne sais pas quand il te la redonne.
Il faut calculer le FPS et corriger les vitesses en conséquence.
Il faut calculer le FPS et corriger les vitesses en conséquence.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
FPS pour Frame per Seconde. DOnc Nombre d'image part seconde.graph100 a écrit :Ya un probleme la parce que le FPS je sais pas ce que c![]()
je vais chercher ^^
quand au calcul de vitesse je vois pas : il faudrait que je monopolise le processeur en permanence ?
IL y a un code sur Codearchive qui permet d'afficher le FPS
http://www.purearea.net/pb/CodeArchiv/French.html
et fait une recherche sur la page a FPS... les codes sontp our la PB3.94 mais on peut les modifier simplement pour passer en PB4
voilà

Justement ca tourne beaucoup trop vite sur des pc avec 1.2 Ghz et +
avec le delaymax calculer de maniere a ralentir le jeu juste comme il faut ?
ca risque pas de monopoliser le processeur ?
@Thyphoon : OK
merci je vais voir ca !
ca veut dire qu'il faut que je fasse une bouclecomtois a écrit :Ben si tu gères les attentes avec un delay() c'est pas très bon , parce que tu rends la main au processeur , mais tu ne sais pas quand il te la redonne.
Il faut calculer le FPS et corriger les vitesses en conséquence.
Code : Tout sélectionner
for delay = 0 to delaymax
next
ca risque pas de monopoliser le processeur ?
@Thyphoon : OK

http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Bon j'ai essayer de l'adapter
ca m'a pris la tete et du temp mais bon ca a l'air de marcher
mais j'ai l'impression que ca avance toujours par saccade
voici le code :
les images ici
certaine commande sont commentée j'ai pas eu le temp de le defaire
ca m'a pris la tete et du temp mais bon ca a l'air de marcher

mais j'ai l'impression que ca avance toujours par saccade
voici le code :
les images ici
Code : Tout sélectionner
UsePNGImageDecoder()
#window_width = 800
#window_height = 700
#nombre_laser = 20
#nombre_laser_ennemi = 100
#nombre_asteroid = 12
#nombre_ennemi = 10
#nombre_missile_max = 6
#life_max = 100
Structure asteroid
x.l
y.l
vitesse.l
derivX.l
frame.l
taille.l
rotation.f
rotation_max.l
EndStructure
Structure ennemi
x.l
y.l
vie.l
compteur.l
acceleration.point
rdv.point
EndStructure
Structure missile
x.l
y.l
cible.l
acceleration.point
EndStructure
Global explosion_small.AnimSprite, explosion_big.AnimSprite, explosion.AnimSprite
Global meteore.AnimSprite, asteroid_small.AnimSprite, asteroid_big.AnimSprite
Global vaisseau.AnimSprite, ennemi_1.AnimSprite, ennemi_2.AnimSprite, ennemi_3.AnimSprite, ennemi_4.AnimSprite, ennemi_5.AnimSprite, ennemi_6.AnimSprite, ennemi_7.AnimSprite, ennemi_8.AnimSprite, ennemi.AnimSprite, boss_1.AnimSprite, boss_2.AnimSprite, boss_anim.AnimSprite
Global acceleration.point, vais.point, score_total.POINT, boss.ennemi, niveau.l
Global score, vit_max, vit_max_ennemi, life, boom, vit_max_div.f, Nombre_Ennemi, laser_ennemi.l, ennemi_actuel
Global ajout, nombre_missile, missile_bonus, missile, missile_lance.missile, mode_boss.l
Global Elapsed_time.l
Nombre_Ennemi = 3
Dim laser.Point(#nombre_laser)
Dim asteroid.asteroid(#nombre_asteroid)
Dim explosion.asteroid(#nombre_asteroid)
Dim ennemi.ennemi(Nombre_Ennemi)
Dim laser_ennemi.Point(#nombre_laser_ennemi)
Dim bonus_missile.Point(2)
; ProcedureDLL.f GameTimer(mode); mode=0 init , mode=1 close , mode=2 get time between two call of function (in ms) , mode=3 get fps , n'appeler qu'une seule fois le mode 2 et 3 dans une boucle
; Shared _GT_DevCaps.TIMECAPS, StartTime.l, time.l, frames.l, fps.l
;
; If mode = 0
; timeGetDevCaps_(_GT_DevCaps, SizeOf(TIMECAPS))
; timeBeginPeriod_(_GT_DevCaps\wPeriodMin)
; StartTime = timeGetTime_()
; time = StartTime
;
; ElseIf mode = 1
; timeEndPeriod_(_GT_DevCaps\wPeriodMin)
;
; ElseIf mode = 2
; multiplicator.f = StartTime
; StartTime = timeGetTime_()
; ProcedureReturn StartTime - multiplicator
;
; ElseIf mode = 3
; If timeGetTime_() - time >= 1000
; time = timeGetTime_()
; FPS = Frames - 1
; Frames = 1
; Else
; Frames+1
; EndIf
; ProcedureReturn fps
;
; EndIf
; EndProcedure
;
; ProcedureDLL.f GameSpeed(Speed.f, ElapsedTime.f); speed is in pixel/second , elapsedtime is the time between game loop (in ms)
; ProcedureReturn (Speed * ElapsedTime) / 1000
; EndProcedure
;
; ProcedureDLL Sign(number.l); retourne le signe du nombre (-1, 0, 1)
; If number
; ProcedureReturn Abs(number) / number
; Else
; ProcedureReturn 0
; EndIf
; EndProcedure
Procedure Delay1(milliseconde); arrete l'execution du programme sans rendre la main au processeur
timer = ElapsedMilliseconds()
Repeat
If ElapsedMilliseconds() - timer >= milliseconde - 1
Break
EndIf
ForEver
EndProcedure
Procedure CopyVariable_meteore(*variable.AnimSprite)
meteore\SpriteNumber = *variable\SpriteNumber
meteore\Transparent = *variable\Transparent
meteore\Xsize = *variable\Xsize
meteore\Ysize = *variable\Ysize
meteore\AnimCount = *variable\AnimCount
meteore\DirectionCount = *variable\DirectionCount
meteore\currentAnim = *variable\currentAnim
meteore\currentDirection = *variable\currentDirection
meteore\XclipStart = *variable\XclipStart
meteore\YclipStart = *variable\YclipStart
meteore\AutoFrameTime = *variable\AutoFrameTime
meteore\AutoFrameDirection = *variable\AutoFrameDirection
meteore\AutoFrameLastTime = *variable\AutoFrameLastTime
EndProcedure
Procedure CopyVariable_explosion(*variable.AnimSprite)
explosion\SpriteNumber = *variable\SpriteNumber
explosion\Transparent = *variable\Transparent
explosion\Xsize = *variable\Xsize
explosion\Ysize = *variable\Ysize
explosion\AnimCount = *variable\AnimCount
explosion\DirectionCount = *variable\DirectionCount
explosion\currentAnim = *variable\currentAnim
explosion\currentDirection = *variable\currentDirection
explosion\XclipStart = *variable\XclipStart
explosion\YclipStart = *variable\YclipStart
explosion\AutoFrameTime = *variable\AutoFrameTime
explosion\AutoFrameDirection = *variable\AutoFrameDirection
explosion\AutoFrameLastTime = *variable\AutoFrameLastTime
EndProcedure
Procedure CopyVariable_ennemi(*variable.AnimSprite)
ennemi\SpriteNumber = *variable\SpriteNumber
ennemi\Transparent = *variable\Transparent
ennemi\Xsize = *variable\Xsize
ennemi\Ysize = *variable\Ysize
ennemi\AnimCount = *variable\AnimCount
ennemi\DirectionCount = *variable\DirectionCount
ennemi\currentAnim = *variable\currentAnim
ennemi\currentDirection = *variable\currentDirection
ennemi\XclipStart = *variable\XclipStart
ennemi\YclipStart = *variable\YclipStart
ennemi\AutoFrameTime = *variable\AutoFrameTime
ennemi\AutoFrameDirection = *variable\AutoFrameDirection
ennemi\AutoFrameLastTime = *variable\AutoFrameLastTime
EndProcedure
Procedure CopyVariable_boss(*variable.AnimSprite)
boss_anim\SpriteNumber = *variable\SpriteNumber
boss_anim\Transparent = *variable\Transparent
boss_anim\Xsize = *variable\Xsize
boss_anim\Ysize = *variable\Ysize
boss_anim\AnimCount = *variable\AnimCount
boss_anim\DirectionCount = *variable\DirectionCount
boss_anim\currentAnim = *variable\currentAnim
boss_anim\currentDirection = *variable\currentDirection
boss_anim\XclipStart = *variable\XclipStart
boss_anim\YclipStart = *variable\YclipStart
boss_anim\AutoFrameTime = *variable\AutoFrameTime
boss_anim\AutoFrameDirection = *variable\AutoFrameDirection
boss_anim\AutoFrameLastTime = *variable\AutoFrameLastTime
EndProcedure
Procedure DrawLaser(laser_vitesse)
For laser = 0 To #nombre_laser
If laser(laser)\x
DisplayTransparentSprite(1, laser(laser)\x, laser(laser)\y)
laser(laser)\y - GameSpeed(laser_vitesse, Elapsed_time)
If laser(laser)\y < -60 : laser(laser)\x = 0 : EndIf
For a = 0 To Nombre_Ennemi
If ennemi(a)\x
If CollisionAnimSprite(ennemi, ennemi(a)\x, ennemi(a)\y, 1, laser(laser)\x, laser(laser)\y)
ennemi(a)\vie - 50
If ennemi(a)\vie <= 0
If Random(4) = 0 And bonus_missile(missile_bonus)\x = 0
bonus_missile(missile_bonus)\x = ennemi(a)\x
bonus_missile(missile_bonus)\y = ennemi(a)\y
missile_bonus + 1
If missile_bonus > 2 : missile_bonus = 0 : EndIf
EndIf
explosion(boom)\x = ennemi(a)\x
explosion(boom)\y = ennemi(a)\y
explosion(boom)\vitesse = 0
explosion(boom)\frame = 0
explosion(boom)\taille = 0
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
ennemi(a)\x = 0
ennemi(a)\y = 0
score_total\x + 1
Else
explosion(boom)\x = laser(laser)\x - explosion_small\Xsize / 2
explosion(boom)\y = laser(laser)\y - explosion_small\Ysize / 2
explosion(boom)\vitesse = 0
explosion(boom)\frame = 0
explosion(boom)\taille = 1
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
EndIf
laser(laser)\x = 0
EndIf
EndIf
Next
If CollisionAnimSprite(boss_anim, boss\x, boss\y, 1, laser(laser)\x, laser(laser)\y) And mode_boss = 1
boss\vie - 50
If boss\vie <= 0
If Random(4) = 0 And bonus_missile(missile_bonus)\x = 0
bonus_missile(missile_bonus)\x = boss\x
bonus_missile(missile_bonus)\y = boss\y
missile_bonus + 1
If missile_bonus > 2 : missile_bonus = 0 : EndIf
EndIf
For a = 0 To 20
explosion(boom)\x = boss\x + Random(boss_anim\Ysize)
explosion(boom)\y = boss\y + Random(boss_anim\Xsize)
explosion(boom)\vitesse = Random(3)
explosion(boom)\frame = 0
explosion(boom)\taille = 0
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
Next
boss\x = 0
boss\y = 0
Else
explosion(boom)\x = laser(laser)\x - explosion_small\Xsize / 2
explosion(boom)\y = laser(laser)\y - explosion_small\Ysize / 2
explosion(boom)\vitesse = 0
explosion(boom)\frame = 0
explosion(boom)\taille = 1
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
EndIf
laser(laser)\x = 0
EndIf
EndIf
Next
For laser = 0 To #nombre_laser_ennemi
If laser_ennemi(laser)\x
DisplayTransparentSprite(16, laser_ennemi(laser)\x, laser_ennemi(laser)\y)
If CollisionAnimSprite(vaisseau, vais\x, vais\y, 16, laser_ennemi(laser)\x, laser_ennemi(laser)\y)
laser_ennemi(laser)\x = 0
life - 5
EndIf
laser_ennemi(laser)\y + GameSpeed(laser_vitesse, Elapsed_time)
If laser_ennemi(laser)\y > #window_height : laser_ennemi(laser)\x = 0 : EndIf
EndIf
Next
EndProcedure
Procedure DrawExplosion(ex)
If explosion(ex)\x
If explosion(ex)\taille = 0
CopyVariable_explosion(@explosion_big)
Else
CopyVariable_explosion(@explosion_small)
EndIf
SetAnimFrame(explosion, explosion(ex)\frame)
If ElapsedMilliseconds() - explosion(ex)\rotation > explosion(ex)\rotation_max * 34
explosion(ex)\rotation = ElapsedMilliseconds()
NextAnimFrame(explosion)
explosion(ex)\frame = CurrentAnimFrame(explosion)
EndIf
DisplayAnimSprite(explosion, explosion(ex)\x, explosion(ex)\y)
explosion(ex)\y + explosion(ex)\vitesse
If explosion(ex)\y > #window_height Or explosion(ex)\frame = 6 : explosion(ex)\x = 0 : EndIf
EndIf
EndProcedure
Procedure Collision(astre)
For laser = 0 To #nombre_laser
If asteroid(astre)\taille >= 0
If CollisionAnimSprite(asteroid_small, asteroid(astre)\x, asteroid(astre)\y, 1, laser(laser)\x, laser(laser)\y) And asteroid(astre)\taille
laser(laser)\x = 0
explosion(boom)\x = asteroid(astre)\x
explosion(boom)\y = asteroid(astre)\y
explosion(boom)\vitesse = asteroid(astre)\vitesse
explosion(boom)\frame = 0
explosion(boom)\taille = asteroid(astre)\taille
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
asteroid(astre)\x = 0
score + 1
EndIf
If CollisionAnimSprite(asteroid_big, asteroid(astre)\x, asteroid(astre)\y, 1, laser(laser)\x, laser(laser)\y) And asteroid(astre)\taille = 0
laser(laser)\x = 0
explosion(boom)\x = asteroid(astre)\x
explosion(boom)\y = asteroid(astre)\y
explosion(boom)\vitesse = asteroid(astre)\vitesse
explosion(boom)\frame = 0
explosion(boom)\taille = asteroid(astre)\taille
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
asteroid(astre)\x = 0
score + 10
EndIf
EndIf
Next
If CollisionAnimAnim(asteroid_small, asteroid(astre)\x, asteroid(astre)\y, vaisseau, vais\x, vais\y) And asteroid(astre)\taille
life - 1
asteroid(astre)\x = 0
acceleration\y = GameSpeed(vit_max, Elapsed_time)
EndIf
If CollisionAnimAnim(asteroid_big, asteroid(astre)\x, asteroid(astre)\y, vaisseau, vais\x, vais\y) And asteroid(astre)\taille = 0
life - 3
asteroid(astre)\x = 0
acceleration\y = GameSpeed(vit_max, Elapsed_time) * 2
EndIf
If score >= #life_max
life + 1
score - #life_max
EndIf
If life > #life_max : life = #life_max : EndIf
EndProcedure
Procedure DrawAsteroid()
For astre = 0 To #nombre_asteroid
DrawExplosion(astre)
Collision(astre)
If asteroid(astre)\x
If asteroid(astre)\taille = 0
CopyVariable_meteore(@asteroid_big)
Else
CopyVariable_meteore(@asteroid_small)
EndIf
SetAnimFrame(meteore, asteroid(astre)\frame)
If ElapsedMilliseconds() - asteroid(astre)\rotation > asteroid(astre)\rotation_max
asteroid(astre)\rotation = ElapsedMilliseconds()
NextAnimFrame(meteore)
asteroid(astre)\frame = CurrentAnimFrame(meteore)
EndIf
DisplayAnimSprite(meteore, asteroid(astre)\x, asteroid(astre)\y)
asteroid(astre)\y + GameSpeed(asteroid(astre)\vitesse * 29, Elapsed_time)
asteroid(astre)\x + GameSpeed(Sign(asteroid(astre)\derivX) * 29, Elapsed_time)
If asteroid(astre)\x > #window_width - 100
asteroid(astre)\derivx = -asteroid(astre)\derivx
asteroid(astre)\x = #window_width - 100
EndIf
If asteroid(astre)\x < 1
asteroid(astre)\derivx = -asteroid(astre)\derivx
asteroid(astre)\x = 1
EndIf
asteroid(astre)\derivX - Sign(asteroid(astre)\derivX) * 2
If asteroid(astre)\derivX <= 0 : asteroid(astre)\derivX = Random(200) - 180 : EndIf
If asteroid(astre)\y > #window_height : asteroid(astre)\x = 0 : EndIf
Else
asteroid(astre)\x = Random(#window_width - 100) + 50
asteroid(astre)\y = -Random(80) - 40
asteroid(astre)\vitesse = Random(5) + 5
asteroid(astre)\frame = Random(9)
asteroid(astre)\rotation_max = (Random(4) + 2) * 34
asteroid(astre)\rotation = ElapsedMilliseconds()
asteroid(astre)\taille = Random(5)
EndIf
Next
EndProcedure
Procedure DrawLife()
For x = 0 To (#window_width * life) / #life_max Step 16
DisplayTransparentSprite(4, x, #window_height - 16)
Next
For x = 0 To (#window_width * score) / #life_max Step 16
DisplayTransparentSprite(4, x, #window_height - 32)
Next
If nombre_missile
For y = 1 To nombre_missile
DisplayTransparentSprite(12, #window_width - 50, #window_height - 40 - y * 15)
Next
EndIf
EndProcedure
Procedure DrawEnnemi()
div.f = 2.6
If ennemi_actuel = 1 And niveau = 1
CopyVariable_ennemi(@ennemi_1)
ElseIf ennemi_actuel = 2 And niveau = 1
CopyVariable_ennemi(@ennemi_2)
ElseIf ennemi_actuel = 3 And niveau = 1
CopyVariable_ennemi(@ennemi_3)
ElseIf ennemi_actuel = 4 And niveau = 1
CopyVariable_ennemi(@ennemi_4)
ElseIf ennemi_actuel = 1 And niveau = 2
CopyVariable_ennemi(@ennemi_5)
ElseIf ennemi_actuel = 2 And niveau = 2
CopyVariable_ennemi(@ennemi_6)
ElseIf ennemi_actuel = 3 And niveau = 2
CopyVariable_ennemi(@ennemi_7)
ElseIf ennemi_actuel = 4 And niveau = 2
CopyVariable_ennemi(@ennemi_8)
EndIf
b = 0
For a = 0 To Nombre_Ennemi
If ennemi(a)\x
If EgalApproxime(ennemi(a)\x, ennemi(a)\rdv\x, 10) = 0
ennemi(a)\acceleration\x - Sign(ennemi(a)\x - ennemi(a)\rdv\x) * vit_max_ennemi / 10
If Abs(ennemi(a)\acceleration\x) > vit_max_ennemi : ennemi(a)\acceleration\x = vit_max_ennemi * Sign(ennemi(a)\acceleration\x) : EndIf
EndIf
If EgalApproxime(ennemi(a)\y, ennemi(a)\rdv\y, 10) = 0
ennemi(a)\acceleration\y - Sign(ennemi(a)\y - ennemi(a)\rdv\y) * vit_max_ennemi / 10
If Abs(ennemi(a)\acceleration\y) > vit_max_ennemi : ennemi(a)\acceleration\y = vit_max_ennemi * Sign(ennemi(a)\acceleration\y) : EndIf
EndIf
If EgalApproxime(ennemi(a)\x, ennemi(a)\rdv\x, 20) And EgalApproxime(ennemi(a)\y, ennemi(a)\rdv\y, 20)
ennemi(a)\rdv\x = Random(#window_width - 100) + 50
ennemi(a)\rdv\y = Random(20) + 100 + ennemi(a)\y
EndIf
If ennemi(a)\acceleration\x > 0
SetAnimDirection(ennemi, 1)
Else
SetAnimDirection(ennemi, 2)
EndIf
SetAnimFrame(ennemi, Abs(ennemi(a)\acceleration\x) / 10)
DisplayAnimSprite(ennemi, ennemi(a)\x, ennemi(a)\y)
If Random(100) = 0
c = ennemi(a)\acceleration\x / 10
If c = 0 : c = 1 : EndIf
nombre = 1
For tir = 1 To nombre
If ennemi_actuel = 1 And niveau = 1
Restore tir_1
ElseIf ennemi_actuel = 2 And niveau = 1
Restore tir_2
ElseIf ennemi_actuel = 3 And niveau = 1
Restore tir_3
ElseIf ennemi_actuel = 4 And niveau = 1
Restore tir_4
ElseIf ennemi_actuel = 1 And niveau = 2
Restore tir_6
ElseIf ennemi_actuel = 2 And niveau = 2
Restore tir_7
ElseIf ennemi_actuel = 3 And niveau = 2
Restore tir_8
ElseIf ennemi_actuel = 4 And niveau = 2
Restore tir_9
EndIf
Read nombre
If Abs(c) > 1
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 1
For d = 1 To tir
Read x
Read y
Next
EndIf
If Abs(c) > 2
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 2
For d = 1 To tir
Read x
Read y
Next
EndIf
If Abs(c) > 3
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 3
For d = 1 To tir
Read x
Read y
Next
EndIf
If Abs(c) > 4
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 4
For d = 1 To tir
Read x
Read y
Next
EndIf
If c < -1
x = ennemi\Xsize - x
EndIf
laser_ennemi(laser_ennemi)\x = ennemi(a)\x + x - 1
laser_ennemi(laser_ennemi)\y = ennemi(a)\y + y
laser_ennemi + 1
If laser_ennemi > #nombre_laser_ennemi : laser_ennemi = 0 : EndIf
Next
EndIf
ennemi(a)\y + GameSpeed((ennemi(a)\acceleration\y / 10) * 29, Elapsed_time)
ennemi(a)\x + GameSpeed((ennemi(a)\acceleration\x / 10) * 29, Elapsed_time)
If ennemi(a)\x < 1 : ennemi(a)\x = 1 : ennemi(a)\acceleration\x = 0 : EndIf
If ennemi(a)\x > #window_width : ennemi(a)\x = #window_width : ennemi(a)\acceleration\x = 0 : EndIf
If ennemi(a)\y > #window_height
ennemi(a)\x = 0
ennemi(a)\y = 0
EndIf
ElseIf ajout = 1
ennemi(a)\x = Random(#window_width - 100) + 50
ennemi(a)\y = -Random(50) - 40
ennemi(a)\vie = 100
ennemi(a)\compteur = 0
ennemi(a)\rdv\x = Random(#window_width - 100) + 50
ennemi(a)\rdv\y = Random(20) + 100 + ennemi(a)\y
EndIf
b + ennemi(a)\x
Next
If b = 0 : ajout = 2 : EndIf
EndProcedure
Procedure DrawBonus()
For a = 0 To 2
If bonus_missile(a)\x
DisplayTransparentSprite(12, bonus_missile(a)\x, bonus_missile(a)\y)
If CollisionAnimSprite(vaisseau, vais\x, vais\y, 12, bonus_missile(a)\x, bonus_missile(a)\y) And nombre_missile < #nombre_missile_max
nombre_missile + 1
bonus_missile(a)\x = 0
EndIf
bonus_missile(a)\y + GameSpeed(87, Elapsed_time)
If bonus_missile(a)\y > #window_height : bonus_missile(a)\x = 0 : EndIf
EndIf
Next
EndProcedure
Procedure FindCible(abssiceY)
If mode_boss = 1
missile_lance\cible = -2
EndIf
For a = 0 To Nombre_Ennemi
If ennemi(a)\y > proche And ennemi(a)\y < abssiceY - 20
proche = ennemi(a)\y
missile_lance\cible = a
EndIf
Next
EndProcedure
Procedure DrawMissile()
a = missile_lance\cible
If missile_lance\x
If a = -1
missile_lance\y - GameSpeed(145, Elapsed_time)
FindCible(missile_lance\y)
ElseIf a = -2
missile_lance\y - GameSpeed(145, Elapsed_time)
missile_lance\x + GameSpeed(145, Elapsed_time) * Sign(boss\x + boss_anim\Xsize / 2 - missile_lance\x)
ElseIf ennemi(a)\y > missile_lance\y Or ennemi(a)\x = 0
missile_lance\y - GameSpeed(145, Elapsed_time)
FindCible(missile_lance\y)
Else
missile_lance\y - GameSpeed(145, Elapsed_time)
missile_lance\x + GameSpeed(145, Elapsed_time) * Sign(ennemi(a)\x + ennemi\Xsize / 2 - missile_lance\x)
EndIf
DisplayTransparentSprite(11, missile_lance\x, missile_lance\y)
For b = 0 To Nombre_Ennemi
If CollisionAnimSprite(ennemi, ennemi(b)\x, ennemi(b)\y, 11, missile_lance\x, missile_lance\y)
ennemi(b)\vie - 100
If ennemi(b)\vie <= 0
explosion(boom)\x = ennemi(b)\x
explosion(boom)\y = ennemi(b)\y
explosion(boom)\vitesse = 0
explosion(boom)\frame = 0
explosion(boom)\taille = 0
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
ennemi(b)\x = 0
ennemi(b)\y = 0
score_total\x + 1
Else
explosion(boom)\x = missile_lance\x - explosion_big\Xsize / 2
explosion(boom)\y = missile_lance\y - explosion_big\Ysize / 2
explosion(boom)\vitesse = 0
explosion(boom)\frame = 0
explosion(boom)\taille = 0
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
EndIf
missile_lance\x = 0
EndIf
Next
If CollisionAnimSprite(boss_anim, boss\x, boss\y, 11, missile_lance\x, missile_lance\y) And mode_boss = 1
boss\vie - 100
If boss\vie <= 0
For a = 0 To 20
explosion(boom)\x = boss\x + Random(boss_anim\Ysize)
explosion(boom)\y = boss\y + Random(boss_anim\Xsize)
explosion(boom)\vitesse = Random(3)
explosion(boom)\frame = 0
explosion(boom)\taille = 0
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
Next
boss\x = 0
boss\y = 0
Else
explosion(boom)\x = missile_lance\x - explosion_big\Xsize / 2
explosion(boom)\y = missile_lance\y - explosion_big\Ysize / 2
explosion(boom)\vitesse = 0
explosion(boom)\frame = 0
explosion(boom)\taille = 0
explosion(boom)\rotation = 0
explosion(boom)\rotation_max = 2
boom + 1
If boom = #nombre_asteroid : boom = 0 : EndIf
EndIf
missile_lance\x = 0
EndIf
If missile_lance\y < -20 : missile_lance\x = 0 : EndIf
EndIf
EndProcedure
Procedure ModeBoss()
If niveau = 1
CopyVariable_boss(@boss_1)
ElseIf niveau = 2
CopyVariable_boss(@boss_2)
EndIf
If boss\x
If EgalApproxime(boss\x, boss\rdv\x, 10) = 0
boss\acceleration\x - Sign(boss\x - boss\rdv\x) * vit_max_ennemi / 10
If Abs(boss\acceleration\x) > vit_max_ennemi : boss\acceleration\x = vit_max_ennemi * Sign(boss\acceleration\x) : EndIf
EndIf
If EgalApproxime(boss\y, boss\rdv\y, 10) = 0
boss\acceleration\y - Sign(boss\y - boss\rdv\y) * vit_max_ennemi / 10
If Abs(boss\acceleration\y) > vit_max_ennemi : boss\acceleration\y = vit_max_ennemi * Sign(boss\acceleration\y) : EndIf
EndIf
If EgalApproxime(boss\x, boss\rdv\x, 20) And EgalApproxime(boss\y, boss\rdv\y, 20)
boss\rdv\x = Random(#window_width - 240) + 20
boss\rdv\y = Random(100) + 20
EndIf
If boss\acceleration\x > 0
SetAnimDirection(boss_anim, 1)
Else
SetAnimDirection(boss_anim, 2)
EndIf
SetAnimFrame(boss_anim, Abs(boss\acceleration\x) / 10)
DisplayAnimSprite(boss_anim, boss\x, boss\y)
If Random(100) = 0
c = boss\acceleration\x / 10
If c = 0 : c = 1 : EndIf
nombre = 1
For tir = 1 To nombre
If niveau = 1
Restore tir_5
ElseIf niveau = 2
Restore tir_10
EndIf
Read nombre
If Abs(c) > 1
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 1
For d = 1 To tir
Read x
Read y
Next
EndIf
If Abs(c) > 2
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 2
For d = 1 To tir
Read x
Read y
Next
EndIf
If Abs(c) > 3
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 3
For d = 1 To tir
Read x
Read y
Next
EndIf
If Abs(c) > 4
For d = 1 To nombre
Read x
Read y
Next
EndIf
If Abs(c) = 4
For d = 1 To tir
Read x
Read y
Next
EndIf
If c < -1
x = boss_anim\Xsize - x
EndIf
laser_ennemi(laser_ennemi)\x = boss\x + x - 1
laser_ennemi(laser_ennemi)\y = boss\y + y
laser_ennemi + 1
If laser_ennemi > #nombre_laser_ennemi : laser_ennemi = 0 : EndIf
Next
EndIf
boss\y + GameSpeed((boss\acceleration\y / 10) * 29, Elapsed_time)
boss\x + GameSpeed((boss\acceleration\x / 10) * 29, Elapsed_time)
If boss\x < 1 : boss\x = 1 : boss\acceleration\x = 0 : EndIf
If boss\x > #window_width : boss\x = #window_width : boss\acceleration\x = 0 : EndIf
Else
boss\x = Random(#window_width - 240) + 20
boss\y = -Random(50) - 200
boss\vie = 2000
boss\rdv\x = Random(#window_width - 240) + 20
boss\rdv\y = Random(100) + 20
EndIf
EndProcedure
;{ menu
CatchImage(0, ?start_screen)
CatchImage(1, ?button_quitter)
CatchImage(2, ?Jouer_1)
CatchImage(3, ?Jouer_2)
CatchImage(4, ?Commande_1)
CatchImage(5, ?Commande_2)
CatchImage(6, ?fleche)
CatchImage(7, ?arme)
If OpenWindow(0, 0, 0, 354, 354, #PB_Window_BorderLess | #PB_Window_ScreenCentered, "Space - Menu")
SetWinBackgroundImage(WindowID(0), ImageID1(0))
If CreateGadgetList(WindowID(0))
ButtonImageGadget(0, 325, 5, 24, 22, ImageID1(1))
ImageGadget(1, 98, 198, 160, 35, ImageID1(2))
ImageGadget(2, 51, 256, 253, 35, ImageID1(4))
EndIf
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
Select EventGadgetID()
Case 0
event = #PB_Event_CloseWindow
Case 1
If EventType() = #PB_EventType_LeftClick
event = 1
EndIf
Case 2
If EventType() = #PB_EventType_LeftClick
ResizeGadget(1, 17, 243, 97, 106)
SetGadgetState(1, ImageID1(6))
ResizeGadget(2, 121, 122, 191, 169)
SetGadgetState(2, ImageID1(7))
Repeat
event = WaitWindowEvent()
If event = #PB_Event_Gadget
Select EventGadgetID()
Case 0
event = 3
EndSelect
EndIf
Until event = 3
ImageGadget(1, 98, 198, 160, 35, ImageID1(2))
ImageGadget(2, 51, 256, 253, 35, ImageID1(4))
EndIf
EndSelect
EndIf
If WindowMouseX() > 98 And WindowMouseX() < 256 And WindowMouseY() > 198 And WindowMouseY() < 233
SetGadgetState(1, ImageID1(3))
Else
SetGadgetState(1, ImageID1(2))
EndIf
If WindowMouseX() > 51 And WindowMouseX() < 304 And WindowMouseY() > 256 And WindowMouseY() < 291
SetGadgetState(2, ImageID1(5))
Else
SetGadgetState(2, ImageID1(4))
EndIf
Until event = #PB_Event_CloseWindow Or event = 1
If event = #PB_Event_CloseWindow : End : EndIf
EndIf
;}
If InitSprite() And InitMouse() And InitKeyboard() And OpenWindow(0, 0, 0, #window_width, #window_height, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Space") And OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(), WindowHeight(), 0, 0, 0)
KeyboardMode(1)
;{ sprite
CatchSprite(0, ?vaisseau)
CatchSprite(1, ?laser)
CatchSprite(2, ?asteroid_small)
CatchSprite(3, ?asteroid_big)
CatchSprite(4, ?balle)
CatchSprite(5, ?explosion_small)
CatchSprite(6, ?explosion_big)
CatchSprite(7, ?ennemi_1)
CatchSprite(8, ?ennemi_2)
CatchSprite(9, ?ennemi_3)
CatchSprite(10, ?ennemi_4)
CatchSprite(11, ?missile)
CatchSprite(12, ?missile_bonus)
CatchSprite(13, ?ennemi_5)
CatchSprite(14, ?ennemi_6)
CatchSprite(15, ?ennemi_7)
CatchSprite(16, ?laser_ennemi)
CatchSprite(17, ?boss_1)
CatchSprite(18, ?boss_2)
CatchSprite(19, ?ennemi_8)
TransparentSpriteColor(0, 0, 0, 0)
TransparentSpriteColor(1, 0, 0, 0)
TransparentSpriteColor(2, 255, 0, 255)
TransparentSpriteColor(3, 255, 0, 255)
TransparentSpriteColor(4, 0, 0, 0)
TransparentSpriteColor(5, 255, 0, 255)
TransparentSpriteColor(6, 255, 0, 255)
TransparentSpriteColor(7, 255, 255, 255)
TransparentSpriteColor(8, 255, 255, 255)
TransparentSpriteColor(9, 255, 255, 255)
TransparentSpriteColor(10, 255, 255, 255)
TransparentSpriteColor(11, 255, 255, 255)
TransparentSpriteColor(12, 255, 255, 255)
TransparentSpriteColor(13, 255, 255, 255)
TransparentSpriteColor(14, 255, 255, 255)
TransparentSpriteColor(15, 255, 255, 255)
TransparentSpriteColor(16, 255, 255, 255)
TransparentSpriteColor(17, 255, 255, 255)
TransparentSpriteColor(18, 255, 255, 255)
TransparentSpriteColor(19, 255, 255, 255)
CreateAnimSprite(vaisseau, 0, 64, 64)
CreateAnimSprite(asteroid_small, 2, 50, 50)
CreateAnimSprite(asteroid_big, 3, 75, 75)
CreateAnimSprite(explosion_small, 5, 50, 50)
CreateAnimSprite(explosion_big, 6, 100, 100)
CreateAnimSprite(ennemi_1, 7, 45, 50)
CreateAnimSprite(ennemi_2, 8, 36, 56)
CreateAnimSprite(ennemi_3, 9, 78, 72)
CreateAnimSprite(ennemi_4, 10, 65, 44)
CreateAnimSprite(ennemi_5, 13, 51, 72)
CreateAnimSprite(ennemi_6, 14, 77, 50)
CreateAnimSprite(ennemi_7, 15, 83, 102)
CreateAnimSprite(ennemi_8, 19, 91, 66)
CreateAnimSprite(boss_1, 17, 195, 210)
CreateAnimSprite(boss_2, 18, 331, 220)
;}
vais.POINT\x = 10
vais\y = WindowHeight() - 100
old_vais.point\x = 10
old_vais\y = WindowHeight() - 100
acceleration.point\x = 0
acceleration\y = 0
life = #life_max
vit_max = 1160
vit_max_ennemi = 40
vit_max_div.f = 10
laser = 0
laser_ennemi = 0
laser_timer = ElapsedMilliseconds()
laser_intervale = 204; en ms
laser_vitesse = 580; en pixel \ second
ennemi_actuel = 1
niveau = 1
ajout = 1
delay = 1
modefps = 1
GameTimer(0)
Repeat
nombre_missile = 6
event = WindowEvent()
ExamineKeyboard()
Delay1(delay)
;{ deplacement & tir
old_vais\x = vais\x
old_vais\y = vais\y
If KeyboardPushed(#PB_Key_Left)
acceleration\x - GameSpeed(vit_max / vit_max_div, Elapsed_time)
If acceleration\x < -GameSpeed(vit_max, Elapsed_time) : acceleration\x = -GameSpeed(vit_max, Elapsed_time) : EndIf
ElseIf KeyboardPushed(#PB_Key_Right)
acceleration\x + GameSpeed(vit_max / vit_max_div, Elapsed_time)
If acceleration\x > GameSpeed(vit_max, Elapsed_time) : acceleration\x = GameSpeed(vit_max, Elapsed_time) : EndIf
EndIf
If KeyboardPushed(#PB_Key_Up)
acceleration\y - GameSpeed(vit_max / vit_max_div, Elapsed_time)
If acceleration\y < -GameSpeed(vit_max, Elapsed_time) : acceleration\y = -GameSpeed(vit_max, Elapsed_time) : EndIf
ElseIf KeyboardPushed(#PB_Key_Down)
acceleration\y + GameSpeed(vit_max / vit_max_div, Elapsed_time)
If acceleration\y > GameSpeed(vit_max, Elapsed_time) : acceleration\y = GameSpeed(vit_max, Elapsed_time) : EndIf
EndIf
;{ laser
If KeyboardPushed(#PB_Key_Space) And ElapsedMilliseconds() - laser_timer > laser_intervale
laser + 1
If laser > #nombre_laser : laser = 0 : EndIf
laser(laser)\x = vais\x + 31
laser(laser)\y = vais\y - 20
laser_timer = ElapsedMilliseconds()
EndIf
;}
;{ missile
If KeyboardReleased(#PB_Key_C) And missile_lance\x = 0 And nombre_missile
missile_lance\x = vais\x + 28
missile_lance\y = vais\y - 4
missile_lance\cible = -1
proche = 0
FindCible(vais\y)
nombre_missile - 1
EndIf
;}
If acceleration\x > 0
acceleration\x - 1
ElseIf acceleration\x < 0
acceleration\x + 1
EndIf
If acceleration\y > 0
acceleration\y - 1
ElseIf acceleration\y < 0
acceleration\y + 1
EndIf
vais\x + acceleration\x / (GameSpeed(vit_max / vit_max_div, Elapsed_time))
vais\y + acceleration\y / (GameSpeed(vit_max / vit_max_div, Elapsed_time))
If vais\x < 1
vais\x = 1
ElseIf vais\x > WindowWidth() - 65
vais\x = WindowWidth() - 65
EndIf
If vais\y < 1
vais\y = 1
ElseIf vais\y > WindowHeight() - 65
vais\y = WindowHeight() - 65
EndIf
If acceleration\x > 0
SetAnimDirection(vaisseau, 1)
Else
SetAnimDirection(vaisseau, 2)
EndIf
SetAnimFrame(vaisseau, Abs(acceleration\x / (GameSpeed(vit_max / vit_max_div, Elapsed_time))))
;}
ClearScreen(0, 0, 0)
Elapsed_time = GameTimer(2)
If modefps = 1
If StartDrawing(ScreenOutput())
DrawText1(0, 0, "FPS = " + Str(GameTimer(3)))
DrawText1(0, 20, "elapsed time = " + Str(Elapsed_time))
StopDrawing()
EndIf
EndIf
DrawAsteroid()
If mode_boss = 1
ModeBoss()
EndIf
DrawLaser(laser_vitesse)
DrawLife()
DrawEnnemi()
DrawBonus()
DrawMissile()
DisplayAnimSprite(vaisseau, vais\x, vais\y)
If ajout = 2 And mode_boss = 0
score_total\y + score_total\x
score_total\x = 0
ennemi_actuel + 1
mode_boss = 0
If Fract(ennemi_actuel / 5) = 0
mode_boss = 1
boss\vie = 2000
EndIf
EndIf
ajout = 1
If score_total\x >= ennemi_actuel * 5 Or mode_boss = 1 : ajout = 0 : EndIf
If boss\vie <= 0 And mode_boss = 1 : score_total\x + score_total\x : mode_boss = 0 : niveau + 1 : ennemi_actuel = 0 : boss\x = 0 : EndIf
FlipBuffers()
If KeyboardPushed(#PB_Key_D)
Repeat
WindowEvent()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_D) = 0
EndIf
If KeyboardReleased(#PB_Key_A)
delay + 1
If delay > 20 : delay = 20 : EndIf
EndIf
If KeyboardReleased(#PB_Key_Z)
delay - 1
If delay < 1 : delay = 1 : EndIf
EndIf
If KeyboardReleased(#PB_Key_F1)
If modefps = 1
modefps = 0
Else
modefps = 1
EndIf
EndIf
Until event = #PB_Event_CloseWindow Or KeyboardPushed(#PB_Key_Escape) Or life < 0 Or ennemi_actuel + (niveau - 1) * 5 > #nombre_ennemi
EndIf
If life < 0
MessageRequester("", "Vous avez perdu !" + Chr(13) + "Score = " + Str(score_total\y))
EndIf
If ennemi_actuel + (niveau - 1) * 5 > #nombre_ennemi
score_total\y = (score_total\y + score_total\x) * 2
MessageRequester("", "Vous avez gagné !" + Chr(13) + "Score = " + Str(score_total\y))
EndIf
CloseScreen()
CloseWindow(0)
End
GameTimer(1)
;{ data section
DataSection
start_screen:
IncludeBinary "IMAGE\Screen_start.png"
button_quitter:
IncludeBinary "IMAGE\button_quitter.png"
jouer_1:
IncludeBinary "IMAGE\jouer_1.png"
jouer_2:
IncludeBinary "IMAGE\jouer_2.png"
commande_1:
IncludeBinary "IMAGE\commande_1.png"
commande_2:
IncludeBinary "IMAGE\commande_2.png"
fleche:
IncludeBinary "IMAGE\fleche.png"
arme:
IncludeBinary "IMAGE\arme.png"
vaisseau:
IncludeBinary "IMAGE\anim_vaisseau.png"
laser:
IncludeBinary "IMAGE\laser.png"
laser_ennemi:
IncludeBinary "IMAGE\laser_ennemi.png"
asteroid_small:
IncludeBinary "IMAGE\anim_asteroid_small.png"
asteroid_big:
IncludeBinary "IMAGE\anim_asteroid_big.png"
balle:
IncludeBinary "IMAGE\balle3.png"
explosion_small:
IncludeBinary "IMAGE\anim_explosion_small.png"
explosion_big:
IncludeBinary "IMAGE\anim_explosion_big.png"
missile_bonus:
IncludeBinary "IMAGE\missile_bonus.png"
missile:
IncludeBinary "IMAGE\missile.png"
ennemi_1:
IncludeBinary "IMAGE\anim_ennemi_1.png"
ennemi_2:
IncludeBinary "IMAGE\anim_ennemi_2.png"
ennemi_3:
IncludeBinary "IMAGE\anim_ennemi_3.png"
ennemi_4:
IncludeBinary "IMAGE\anim_ennemi_4.png"
ennemi_5:
IncludeBinary "IMAGE\anim_ennemi_5.png"
ennemi_6:
IncludeBinary "IMAGE\anim_ennemi_6.png"
ennemi_7:
IncludeBinary "IMAGE\anim_ennemi_7.png"
ennemi_8:
IncludeBinary "IMAGE\anim_ennemi_8.png"
boss_1:
IncludeBinary "IMAGE\anim_ennemi_boss_1.png"
boss_2:
IncludeBinary "IMAGE\anim_ennemi_boss_2.png"
EndDataSection
DataSection
tir_1:
Data.l 2
Data.l 5, 37, 39, 37
Data.l 5, 39, 39, 38
Data.l 7, 38, 36, 39
Data.l 10, 38, 34, 37
tir_2:
Data.l 2
Data.l 3, 55, 31, 55
Data.l 4, 55, 30, 55
Data.l 5, 55, 29, 55
Data.l 7, 55, 27, 55
tir_3:
Data.l 4
Data.l 6, 26, 11, 26, 66, 26, 71, 26
Data.l 7, 26, 13, 26, 66, 26, 70, 26
Data.l 11, 26, 17, 26, 64, 26, 68, 26
Data.l 16, 26, 21, 26, 60, 26, 62, 26
tir_4:
Data.l 2
Data.l 9, 43, 55, 43
Data.l 10, 43, 54, 43
Data.l 12, 43, 51, 43
Data.l 16, 43, 48, 43
tir_5: ; boss 1
Data.l 4
Data.l 31, 202, 41, 209, 153, 209, 162, 201
Data.l 30, 201, 39, 209, 147, 209, 156, 201
Data.l 33, 202, 41, 209, 138, 209, 147, 201
Data.l 44, 201, 51, 209, 129, 209, 136, 201
tir_6:
Data.l 1
Data.l 25, 71
Data.l 25, 71
Data.l 25, 71
Data.l 25, 71
tir_7:
Data.l 4
Data.l 15, 16, 20, 21, 55, 21, 61, 16
Data.l 15, 16, 21, 21, 55, 21, 60, 16
Data.l 18, 16, 23, 21, 53, 21, 58, 16
Data.l 22, 16, 26, 21, 51, 21, 55, 16
tir_8:
Data.l 2
Data.l 31, 101, 50, 101
Data.l 30, 101, 49, 101
Data.l 29, 101, 47, 101
Data.l 31, 101, 44, 101
tir_9:
Data.l 4
Data.l 17, 48, 20, 48, 70, 48, 72, 48
Data.l 18, 48, 21, 48, 69, 48, 71, 48
Data.l 21, 48, 24, 48, 66, 48, 69, 48
Data.l 25, 48, 27, 48, 62, 48, 64, 48
tir_10: ; boss 2
Data.l 10
Data.l 52, 164, 50, 164, 66, 193, 66, 193, 157, 219, 172, 219, 264, 193, 264, 193, 277, 164, 277, 164
Data.l 48, 164, 64, 164, 60, 193, 76, 193, 157, 219, 172, 219, 268, 193, 280, 164, 254, 192, 265, 160
Data.l 52, 163, 82, 163, 64, 194, 93, 193, 158, 219, 171, 219, 265, 193, 277, 163, 235, 193, 246, 164
Data.l 62, 163, 71, 194, 105, 163, 114, 193, 257, 219, 169, 219, 255, 193, 264, 163, 220, 163, 210, 193
EndDataSection
;}
-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
Simpa, tourne kinckel chez moi (heureusement X2 3800+
)
Bonne continuation

Bonne continuation

Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !