Serpent infini
Publié : ven. 12/oct./2007 21:58
Bonsoir à tous,
voici un petit code inspiré d'un effet que j'avais vu la première fois sur Atari ST. D'ailleurs ceux qui l'ont connu (le ST) se souviendront peut-être du jeu d'où provient le sprite utilisé.
C'est sûr que l'on pourrait précaculer une table de Sin et de Cos mais je n'en ai pas le courage ce soir..
Bonne nuit
Zorg
voici un petit code inspiré d'un effet que j'avais vu la première fois sur Atari ST. D'ailleurs ceux qui l'ont connu (le ST) se souviendront peut-être du jeu d'où provient le sprite utilisé.
C'est sûr que l'on pourrait précaculer une table de Sin et de Cos mais je n'en ai pas le courage ce soir..
Code : Tout sélectionner
;*******************************
; ;
; Serpent-boule ;
; Ecrit en PureBasic 4.02 ;
; ;
; par Zorg, le 12/10/2007 ;
; ;
;*******************************
If InitSprite()=0 Or InitKeyboard()=0
MessageRequester("Erreur","Problème avec DirectX",0)
End
EndIf
;Ouvre un nouvel écran et crée les sprite
OpenScreen(320,240,32,"Boule")
CreateSprite(1,320,240)
CreateSprite(2,320,240)
CreateSprite(3,320,240)
CreateSprite(4,320,240)
CreateSprite(5,320,240)
CreateSprite(6,320,240)
;Restore le sprite de la boule
CreateSprite(0,32,31)
StartDrawing(SpriteOutput(0))
Restore Boule
For y_boule=0 To 30
For x_boule = 0 To 31
Read coul
Plot(x_boule,y_boule,coul)
Next x_boule
Next y_boule
StopDrawing()
TransparentSpriteColor(0,RGB(0,255,0))
x.w=150
y.w=140
vitesse_x.w=2
vitesse_y.w=-2
min_x.w=0
max_x.w=320-SpriteWidth(0)
min_y.w=0
max_y.w=240-SpriteHeight(0)
image.w=1
angle_1.f=0
angle_2.f=#PI
Repeat
;Calcul des coordonnées - Formule qui tue pour avoir un dépacement pas trop répétitif
angle_1=angle_1+0.018
angle_2=angle_2-0.017
x=120*(Sin(angle_1)*Cos(angle_2*2)*Sin(angle_1*2+angle_2))+150
y=30*(Cos(angle_2)-Sin(angle_1*0.5)+Sin(angle_2/2)+Sin(angle_2+Cos(angle_2)*3))+110
;Permutation des images de fond et affichage du sprite
image=image+1
If image>6
image=1
EndIf
UseBuffer(image)
DisplayTransparentSprite(0,x,y)
UseBuffer(#PB_Default)
DisplaySprite(image,0,0)
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_All)
UseBuffer(#PB_Default)
;Libération de la mémoire
FreeSprite(0)
FreeSprite(1)
FreeSprite(2)
FreeSprite(3)
FreeSprite(4)
FreeSprite(5)
FreeSprite(6)
End
DataSection
Boule:
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $632021, $632021, $632021, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $424142, $424142, $424142, $424142, $424142, $424142, $424142, $424142, $424142, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $424142, $632021, $844121, $632021, $632021, $632021, $632021, $844121, $424142, $424142, $424142, $424142, $424142, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $632021, $632021, $844121, $844121, $424142, $424142, $424142, $424142, $424142, $632021, $632021, $632021, $632021, $632021, $632021, $424142, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $632021, $632021, $A54121, $632021, $632021, $632021, $632021, $424142, $424142, $424142, $424142, $632021, $0, $632021, $0, $0, $0, $424142, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $632021, $632021, $632021, $0, $A54121, $A54121, $848284, $848284, $848284, $848284, $424142, $424142, $424142, $424142, $424142, $0, $0, $632021, $0, $0, $0, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $632021, $844121, $424142, $632021, $A54121, $848284, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $848284, $A54121, $A54121, $632021, $0, $0, $0, $0, $0, $0, $A54121, $632021, $632021, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $632021, $A54121, $424142, $632021, $424142, $A54121, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $848284, $A54121, $844121, $632021, $0, $0, $0, $0, $0, $0, $0, $632021, $632021, $632021, $FF00, $FF00
Data.l $FF00, $FF00, $A54121, $848284, $424142, $A54121, $A54121, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $C64121, $A54121, $A54121, $632021, $422021, $0, $0, $0, $0, $0, $0, $632021, $632021, $632021, $FF00, $FF00
Data.l $FF00, $A54121, $848284, $848284, $A54121, $844121, $848284, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $848284, $A54121, $A54121, $844121, $632021, $422021, $0, $0, $0, $632021, $0, $0, $A54121, $632021, $632021, $632021, $FF00
Data.l $FF00, $A54121, $848284, $424142, $A54121, $844121, $848284, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $C64121, $C64121, $A54121, $A54121, $844121, $422021, $422021, $0, $0, $0, $844121, $0, $0, $A54121, $632021, $632021, $632021, $FF00
Data.l $FF00, $848284, $848284, $A54121, $A54121, $A54121, $848284, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $848284, $A54121, $A54121, $A54121, $844121, $632021, $422021, $0, $0, $0, $0, $632021, $0, $0, $A54121, $844121, $632021, $632021, $FF00
Data.l $FF00, $848284, $848284, $A54121, $844121, $A54121, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $E7E3E7, $C64121, $A54121, $A54121, $844121, $632021, $422021, $422021, $0, $0, $0, $632021, $632021, $0, $0, $A54121, $A54121, $0, $632021, $FF00
Data.l $A54121, $848284, $848284, $A54121, $844121, $632021, $848284, $848284, $848284, $E7E3E7, $E7E3E7, $E7E3E7, $C64121, $C64121, $844121, $844121, $632021, $632021, $422021, $0, $0, $0, $0, $0, $0, $0, $0, $424142, $424142, $0, $632021, $632021
Data.l $A54121, $E7E3E7, $848284, $A54121, $844121, $844121, $848284, $848284, $424142, $848284, $848284, $848284, $C64121, $844121, $844121, $844121, $422021, $422021, $0, $0, $0, $0, $0, $0, $0, $0, $424142, $424142, $632021, $0, $632021, $632021
Data.l $A54121, $E7E3E7, $848284, $A54121, $844121, $844121, $632021, $424142, $848284, $424142, $A54121, $A54121, $844121, $844121, $844121, $422021, $422021, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $424142, $632021, $632021, $632021, $632021
Data.l $844121, $848284, $844121, $844121, $0, $632021, $424142, $424142, $424142, $424142, $424142, $424142, $424142, $632021, $632021, $0, $0, $0, $0, $424142, $0, $0, $0, $632021, $0, $A54121, $424142, $0, $0, $632021, $844121, $632021
Data.l $632021, $848284, $844121, $632021, $0, $632021, $424142, $424142, $632021, $632021, $424142, $632021, $632021, $632021, $0, $0, $0, $0, $0, $0, $0, $632021, $632021, $0, $424142, $424142, $844121, $0, $0, $632021, $424142, $632021
Data.l $632021, $A54121, $632021, $0, $632021, $0, $848284, $424142, $632021, $632021, $632021, $632021, $632021, $632021, $0, $0, $0, $0, $0, $632021, $632021, $632021, $0, $A54121, $A54121, $844121, $0, $0, $632021, $632021, $424142, $632021
Data.l $FF00, $632021, $0, $632021, $0, $0, $632021, $632021, $632021, $632021, $632021, $632021, $0, $0, $0, $0, $0, $632021, $632021, $A54121, $A54121, $848284, $A54121, $844121, $844121, $0, $0, $632021, $632021, $424142, $844121, $FF00
Data.l $FF00, $632021, $632021, $632021, $0, $0, $0, $0, $632021, $632021, $632021, $0, $0, $0, $0, $632021, $A54121, $A54121, $848284, $A54121, $424142, $424142, $844121, $632021, $632021, $0, $632021, $632021, $632021, $424142, $632021, $FF00
Data.l $FF00, $632021, $844121, $632021, $0, $0, $0, $0, $0, $0, $632021, $632021, $632021, $632021, $424142, $424142, $424142, $424142, $424142, $632021, $632021, $632021, $632021, $632021, $632021, $632021, $844121, $632021, $844121, $632021, $632021, $FF00
Data.l $FF00, $FF00, $632021, $844121, $632021, $0, $0, $0, $0, $0, $0, $0, $0, $0, $632021, $844121, $844121, $844121, $632021, $632021, $632021, $0, $0, $844121, $632021, $632021, $A54121, $844121, $844121, $632021, $FF00, $FF00
Data.l $FF00, $FF00, $632021, $844121, $632021, $632021, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $0, $632021, $632021, $0, $632021, $844121, $844121, $632021, $844121, $A54121, $632021, $844121, $632021, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $632021, $844121, $A54121, $422021, $422021, $422021, $632021, $0, $0, $0, $0, $0, $0, $0, $0, $632021, $632021, $844121, $844121, $632021, $844121, $632021, $844121, $632021, $632021, $632021, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $632021, $844121, $632021, $632021, $844121, $422021, $422021, $422021, $422021, $0, $0, $632021, $632021, $632021, $844121, $844121, $844121, $632021, $632021, $844121, $844121, $424142, $844121, $632021, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $424142, $424142, $632021, $424142, $A54121, $844121, $422021, $422021, $422021, $844121, $844121, $424142, $632021, $632021, $844121, $844121, $632021, $632021, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $424142, $424142, $424142, $424142, $424142, $A54121, $A54121, $A54121, $844121, $424142, $A54121, $844121, $844121, $844121, $844121, $632021, $844121, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $424142, $424142, $424142, $848284, $848284, $848284, $848284, $A54121, $A54121, $A54121, $A54121, $844121, $632021, $844121, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $632021, $424142, $424142, $424142, $424142, $844121, $844121, $844121, $632021, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
Data.l $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $632021, $632021, $632021, $632021, $632021, $632021, $632021, $632021, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00, $FF00
EndDataSection
Zorg