Vers l'infini

Programmation avancée de jeux en PureBasic

vous trouvez ce jeu

amusant
7
47%
amusant
7
47%
aussi fun que mon tableur
1
7%
moins kiffant que mon wiifit, d'ailleur j'y retourne...
0
Aucun vote
 
Nombre total de votes : 15

beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Vers l'infini

Message par beauregard »

Un vaisseau face à des envahisseurs: utilisation des Listes Chaînées.

Code : Tout sélectionner

;
; Les Listes Chaînées (Linked Lists), tout une aventure !
; vers l'infini 0.2 - video game - PC - mode fenêtre - 08/06/2008 - source PureBasic 4.20
; France - pseudo: beauregard
; touches flêchées gauche et droite, X( tir) et F( image/seconde)

; problème à résoudre:
; #PB_Window_ScreenCentered ne centre pas l'écran graphique si le joueur clique sur le bouton agrandir.

If InitMouse ()=0 Or InitKeyboard ()=0 Or InitSprite ()=0  Or InitSprite3D ()=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
Global manette.b
If InitJoystick():manette=1:EndIf
UsePNGImageDecoder()
; °°°°°°°°°°°°°°°°°°°°  fonte °°°°°°°°°°°°°°°°°°°°°°°°°°
LoadFont ( 0 , "Comic Sans Ms" ,16, #PB_Font_Bold)

Enumeration ; ici, on donne un petit nom à nos sprites( non, chuis pas un numéro !):
  #envahisseurs
  #tirbruteA  
  #gentil
  #tirgentil  
EndEnumeration

Structure objet ;- opération de clonage... 
 id.w ; id comme identité
 x.w
 y.w
 tempoA.w
 tempoB.w 
 boutonA.b
 boutonB.b 
EndStructure
Global NewList bruteA.objet() ; effectif
Global NewList bruteB.objet() ; effectif, ouf !
Global NewList tirb.objet() ; tir brute
Global NewList tirg.objet() ; tir gentil

Declare Ftirgentil(x,y)
Declare Affichagetirgentil()

Declare FbruteA()
Declare AffichagebruteA()
Declare FtirbruteA(x,y)
Declare AffichagetirbruteA()

Declare FbruteB()
Declare AffichagebruteB()
;Declare FtirbruteB(x,y)
;Declare AffichagetirbruteB()

Declare Fin()


If OpenWindow ( 0 , 0, 0, 800, 600, "vers l'infini" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar| #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_ScreenCentered ) 
 OpenWindowedScreen ( WindowID ( 0 ), 0, 0, 800, 600, 0, 1, 1) ; un ecran graphique dans la fenêtre. 
 SetWindowColor(0, RGB (0, 0, 0))  
EndIf
KeyboardMode(#PB_Keyboard_International)


; les méchants de l'histoire... mais le sont-ils vraiment ?... mmmh ?
;CreateSprite ( #envahisseurs , 64, 32) 
; StartDrawing ( SpriteOutput ( #envahisseurs ))
;  BackColor ( RGB (0,0,0))
;  Box (0,0, 31, 31, RGB (48, 231, 225)):  Box (32, 0, 63, 31, RGB (148, 31, 225))
;StopDrawing ()

If CreateSprite(#envahisseurs, 96, 32,0)

    StartDrawing(SpriteOutput(#envahisseurs))
        ; merci à Fortix( The Fortix    .::Convertor V1::.)
        Restore envahisseurs

        For ay=0 To 32-1
            For ax=0 To 96-1

                Read a.l
                Plot(ax,ay,a.l)

            Next ax
        Next ay
    StopDrawing()

    ay=0
    ax=0
EndIf



CreateSprite ( #tirbruteA , 16, 16) 
 StartDrawing ( SpriteOutput ( #tirbruteA ))
  BackColor ( RGB (0,0,0))
  ;Box (0,0, 15, 15, RGB (225, 0, 0))
Circle(8, 8, 8 ,RGB(225, 0, 0))

 StopDrawing ()
 
 
CreateSprite ( #gentil , 32, 32) 
 StartDrawing ( SpriteOutput ( #gentil ))
  BackColor ( RGB (0,0,0))
  Box (0,0, 63, 63, RGB (46, 135, 55))

 StopDrawing ()

CreateSprite ( #tirgentil , 16, 16) 
 StartDrawing ( SpriteOutput ( #tirgentil ))
  BackColor ( RGB (0,0,0))
  Box (0, 0, 16, 16, RGB (35, 235, 235)):Box (1, 1, 14, 14, RGB (16, 138, 242))

 StopDrawing ()
 

  
Global Xgentil.w=400-32, Ygentil.w=600-96, score.w
Global recharge.b, zutA.w
Global nbreis.b, numbruteA.b, numbruteB.b, posYbruteA.w=32, posYbruteB.w=32+48
Global dirbruteA.b ; direction des bruteA
Global dirbruteB.b ; direction des bruteB
; ******************************************************************************************************
Repeat ; Boucle principale
; ******************************************************************************************************
 Event= WindowEvent ()
 
 ExamineKeyboard ()
 
 
If numbruteA<8:FbruteA():EndIf ; ordre de Fabrication des clones bruteA.
If numbruteB<8:FbruteB():EndIf ; ordre de Fabrication des clones bruteB.

AffichagetirbruteA() ; ordre d'affichage des clones tirs bruteA.
;AffichagetirbruteB() ; ordre d'affichage des clones tirs bruteB.

AffichagebruteA() ; ordre d'affichage des clones bruteA.
AffichagebruteB() ; ordre d'affichage des clones bruteB.



; vaisseau dirigé par le joueur:
If KeyboardPushed ( #PB_Key_Right ) And Xgentil<800-32:Xgentil+4:EndIf ; droite.	
If KeyboardPushed ( #PB_Key_Left ) And Xgentil>0:Xgentil-4:EndIf ; gauche.
If KeyboardPushed ( #PB_Key_X ) And recharge=0:recharge=24:Ftirgentil( (Xgentil+16)-8, Ygentil ):EndIf ; tir !
If recharge>0:recharge-1:EndIf
Affichagetirgentil()
ClipSprite(#envahisseurs, 64, 0, 32, 32)     
DisplayTransparentSprite( #envahisseurs , Xgentil, Ygentil)

    



StartDrawing ( ScreenOutput ())
DrawingMode (1)
      DrawingFont ( FontID (0)) 
FrontColor ( RGB (255,255,255))
     score$= Str (score) 
     FrontColor ( RGB (154,154,154)) :DrawText (350+1,20+1, "SCORE " +score$)
     FrontColor ( RGB (234,234,234)) :DrawText (350,20, "SCORE " +score$)
StopDrawing ()     

 
 
 If KeyboardPushed ( #PB_Key_F ) And nbreis=0:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=1:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F ) And nbreis=2:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=3:nbreis=0:EndIf

 Gosub fps ; nombre d'image par seconde. 
 
 
 
 
 FlipBuffers(1) 
 ClearScreen(RGB(0,0,0))
; ******************************************************************************************************   
 If Event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ):Fin():EndIf; si clique coin haut droit ou touche Esc, alors ferme fenêtre.
ForEver



fps:
If Val ( FormatDate ( "%ss" , Date ()))=sek 
    fps+1
Else
    FPS$= Str (fps)
    fps=0
EndIf
sek= Val ( FormatDate ( "%ss" , Date ()))
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
If nbreis=1 Or nbreis=2:DrawText (1,1, "FPS: " +FPS$)

  zutA$= Str (zutA) 
  FrontColor ( RGB (154,154,154)) :DrawText (1+1,120+1, "zutA: " +zutA$)
  FrontColor ( RGB (234,234,234)) :DrawText (1,120, "zutA: " +zutA$)
EndIf
zutA=0

StopDrawing ()
Return

Procedure Ftirgentil(x,y) ; Fabrication des tirs du vaisseau du joueur

LastElement(tirg())
AddElement(tirg())

        
tirg()\x=x
tirg()\y=y

EndProcedure  

Procedure Affichagetirgentil() ; Affichage des clones tirs du vaisseau du joueur

ForEach tirg()
zutA+1 ; variable utilisé par le programmeur...

  tirg()\y-4
  DisplayTransparentSprite( #tirgentil , tirg()\x, tirg()\y)
  If tirg()\boutonA=1 Or tirg()\y<0-15:DeleteElement(tirg()):Continue:EndIf 
  
  
  ForEach bruteA() ; ici, nous allons vérifier si un tir gentil touche une bruteA: 
    If tirg()\x>bruteA()\x-8 And tirg()\x<(bruteA()\x+31)+8
      If tirg()\y>bruteA()\y-8 And tirg()\y<(bruteA()\y+31)+8
        tirg()\boutonA=1:score+10:DeleteElement(bruteA())
      EndIf
    EndIf
  Next  

  ForEach bruteB() ; ici, nous allons vérifier si un tir gentil touche une bruteB: 
    If tirg()\x>bruteB()\x-8 And tirg()\x<(bruteB()\x+31)+8
      If tirg()\y>bruteB()\y-8 And tirg()\y<(bruteB()\y+31)+8
        tirg()\boutonA=1:score+10:DeleteElement(bruteB())
      EndIf
    EndIf
  Next 
 
Next


EndProcedure
 
Procedure FbruteA() ; Fabrication des clones bruteA

Static placement.w


LastElement(bruteA())
AddElement(bruteA())

numbruteA+1 
bruteA()\id=numbruteA; je ne suis pas un numéro, noonnn ! 

placement+64; taille 32 colonnes +32 pour la séparation entre les bruteA, voyez.
bruteA()\x=placement
bruteA()\y=32

EndProcedure  
Procedure FbruteB() ; Fabrication des clones bruteB

Static placement.w


LastElement(bruteB())
AddElement(bruteB())

numbruteB+1 
bruteB()\id=numbruteB; je ne suis pas un numéro, noonnn ! 

placement+64; taille 32 colonnes +32 pour la séparation entre les bruteB, voyez.
bruteB()\x=placement
bruteB()\y=320

EndProcedure 

Procedure AffichagebruteA() ; Affichage des clones bruteA


Static tempotirbruteA.b 
Static choixbruteA.b

tempotirbruteA+1
If tempotirbruteA>64:tempotirbruteA=0
  choixbruteA=Random(7); de 0 à 7... 
  choixbruteA+1; ...et là +1, donc maintenant de 1 à 8.
EndIf

ForEach bruteA()

  If dirbruteA=0:bruteA()\x+2 
    If bruteA()\x>(800-4)-32:dirbruteA=1:EndIf ; bord de l'écran droite
  EndIf
  If dirbruteA=2:bruteA()\x-2 
    If bruteA()\x<0+4:dirbruteA=3:EndIf ; bord de l'écran gauche
  EndIf
  
  bruteA()\y=posYbruteA
  
  ClipSprite(#envahisseurs, 32, 0, 32, 32) 
  DisplayTransparentSprite( #envahisseurs , bruteA()\x, bruteA()\y)
  
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteA=1 And LastElement(bruteA()):dirbruteA=2:dirbruteB=2:posYbruteA+32:posYbruteB+32:EndIf
  If dirbruteA=3 And LastElement(bruteA()):dirbruteA=0:dirbruteB=0:posYbruteA+32:posYbruteB+32:EndIf
  
  If choixbruteA>0 And bruteA()\id=choixbruteA; tir ennemi !!
    choixbruteA=0:FtirbruteA( (bruteA()\x+16)-8, (bruteA()\y+31)-8 )
  EndIf
    
Next

EndProcedure
Procedure AffichagebruteB() ; Affichage des clones bruteB

Static tempotirbruteB.b 
Static choixbruteB.b

tempotirbruteB+1
If tempotirbruteB>64:tempotirbruteB=0
  choixbruteB=Random(7); de 0 à 7... 
  choixbruteB+1; ...et là +1, donc maintenant de 1 à 8.
EndIf

ForEach bruteB()

  If dirbruteB=0:bruteB()\x+2 
    If bruteB()\x>(800-4)-32:dirbruteB=1:EndIf ; bord de l'écran droite
  EndIf
  If dirbruteB=2:bruteB()\x-2 
    If bruteB()\x<0+4:dirbruteB=3:EndIf ; bord de l'écran gauche
  EndIf
  
  bruteB()\y=posYbruteB



  ClipSprite(#envahisseurs, 0, 0, 32, 32)     
  DisplayTransparentSprite( #envahisseurs , bruteB()\x, bruteB()\y)
  
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteB=1 And LastElement(bruteB()):dirbruteB=2:dirbruteA=2:posYbruteB+32:posYbruteA+32:EndIf
  If dirbruteB=3 And LastElement(bruteB()):dirbruteB=0:dirbruteA=0:posYbruteB+32:posYbruteA+32:EndIf
  
  If choixbruteB>0 And bruteB()\id=choixbruteB; tir ennemi !!
    choixbruteB=0:FtirbruteA( (bruteB()\x+16)-8, (bruteB()\y+31)-8 )
  EndIf
    
Next

EndProcedure

Procedure FtirbruteA(x,y) ; Fabrication des tirs ennemis provenant des clones bruteA

LastElement(tirb())
AddElement(tirb())

tirb()\x=x
tirb()\y=y

EndProcedure

Procedure AffichagetirbruteA() ; Affichage des clones tirs ennemis bruteA

ForEach tirb()

  tirb()\y+4
  DisplayTransparentSprite( #tirbruteA , tirb()\x, tirb()\y)

    ; ici, nous allons vérifier si un tir bruteA touche le gentil vaisseau du joueur, hum:
    If tirb()\x>Xgentil-1 And tirb()\x<(Xgentil+31)+8
      If tirb()\y>Ygentil-1 And tirb()\y<(Ygentil+31)+8
        DeleteElement(tirb())
        ; game over ou perd un vaisseau ou le bouclier de celui-ci... c'est à vous de continuer l'aventure.
      EndIf
    EndIf
  
Next
ForEach tirb()
  If tirb()\y>600:DeleteElement(tirb()):EndIf  
Next
EndProcedure

Procedure.l Fin()

 If IsImage(#envahisseurs):FreeImage(#envahisseurs):EndIf
 If IsImage(#tirbruteA):FreeImage(#tirbruteA):EndIf  
 If IsImage(#gentil):FreeImage(#gentil):EndIf
 If IsImage(#tirgentil):FreeImage(#tirgentil):EndIf  
 End
EndProcedure

DataSection
  envahisseurs:

  Data.l $0000F3,$0000FF,$00006B,$000036,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000036,$000059,$0000FE,$0000F7,$0000AD,$000089,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$000089,$0000AD,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000FD,$0000FC,$000067,$000037,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000057,$0000FB,$0000FB,$0000F7,$00009B,$0000FD,$0000D6,$000040,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000040,$0000D6,$0000FD,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FAFAFA,$ECECEC,$E1E1E1,$D9D9D9,$D5D5D5,$D5D5D5,$DADADA,$E2E2E2,$EDEDED,$FBFBFB,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F3,$00008B,$0000FE,$000063,$000038,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000039,$000039,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000056,$0000FC,$0000A2,$0000DD,$0000F6,$000031,$0000ED,$00007F,$0000F2,$000089,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000089,$0000F2,$00007B,$0000ED,$000031,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FAFAFA,$E2E2E2,$D3D3D3,$C8C8C8,$C0C0C0,$BCBCBC,$BCBCBC,$C1C1C1,$C9C9C9,$D5D5D5,$E4E4E4,$FBFBFB,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F0,$606060,$0000A6,$0000FD,$000061,$000038,$000000,$000000,$000000,$000000,$000000,$000000,$000039,$00003E,$0000A0,$000096,$00003E,$000039,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000056,$0000FB,$0000C4,$606060,$0000D6,$0000F6,$000000,$00009B,$00009B,$808098,$0000C5,$0000D6,$000040,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000040,$0000D6,$0000C5,$7E7E9A,$00009B,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$DFDFDF,$CDCDCD,$BEBEBE,$B3B3B3,$AAAAAA,$A6A6A6,$A7A7A7,$ABABAB,$B4B4B4,$C0C0C0,$CFCFCF,$E2E2E2,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$5E5E5E,$59595B,$0000B2,$0000FB,$00005E,$000037,$000000,$000000,$000000,$000039,$000041,$000096,$0000FD,$0000F9,$0000F9,$0000FD,$0000A4,$000042,$000039,$000000,$000000,$000000,$000036,$000055,$0000F9,$0000CF,$58585D,$5E5E5E,$0000D9,$0000F6,$000000,$000035,$0000ED,$88889B,$818181,$5252AD,$0000F2,$000083,$000000,$000000,$000000,$000000,$000000,$000000,$00002E,$0000D2,$0000D2,$00002E,$000000,$000000,$000000,$000000,$000000,$000000,$000083,$0000F2,$5252AD,$818181,$88889B,$0000ED,$000035,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$F3F3F3,$CCCCCC,$BABABA,$ABABAB,$A0A0A0,$AD957B,$DB8A32,$DB8A32,$AE967C,$A2A2A2,$AEAEAE,$BCBCBC,$CFCFCF,$FFFFFF,$2F2F2F,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$616161,$4A4969,$575759,$0000C0,$0000FA,$00005B,$000000,$000037,$000043,$00008D,$0000FB,$0000FA,$0000A5,$505050,$505050,$000098,$0000FA,$0000FC,$00009F,$000044,$000038,$000000,$000054,$0000F8,$0000DA,$56565D,$4A4969,$616161,$0000D9,$0000F6,$000000,$000000,$00009B,$5454D8,$6E6268,$62585B,$63637B,$0000CA,$0000D6,$00003D,$000000,$000000,$000000,$00002E,$0000D6,$3A3AB2,$3A3AB2,$0000D6,$00002E,$000000,$000000,$000000,$00003D,$0000D6,$0000CA,$63637B,$62585B,$6E6268,$5454D8,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$D1D1D1,$BBBBBB,$AAAAAA,$9C9C9C,$929292,$BB8041,$E67700,$E67700,$BC8142,$939393,$9E9E9E,$ACACAC,$BEBEBE,$EDEDED,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$696969,$3A3A89,$4B4967,$565659,$0000CE,$0000F8,$000063,$000082,$0000F8,$0000FA,$0000BA,$515151,$515151,$454558,$454558,$515151,$515151,$0000A7,$0000F9,$0000FA,$000090,$00005B,$0000F8,$0000E1,$54545D,$4B4967,$3A3A89,$696969,$0000D9,$0000F6,$000000,$000000,$000035,$0000F2,$88889B,$6A5D63,$5C5358,$656565,$43439E,$0000F2,$000083,$000000,$00002E,$0000D6,$3939B0,$494044,$494044,$3838B5,$0000D6,$00002E,$000000,$00007F,$0000F2,$43439E,$656565,$5C5358,$6A5D63,$88889B,$0000F2,$000035,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$EFEFEF,$C0C0C0,$ACACAC,$9C9C9C,$909090,$878787,$B46A1A,$C16400,$C16400,$B46A1A,$888888,$929292,$9E9E9E,$AFAFAF,$C3C3C3,$F0F0F0,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$6D6D6D,$3C3B94,$3C3B8C,$4C4B67,$545459,$0000C4,$0000FE,$0000FA,$0000C6,$515153,$535353,$48475D,$3B3A7F,$3B3A82,$3B3A82,$3B3A7F,$48475D,$535353,$515151,$0000B9,$0000FA,$0000FF,$0000D5,$52525E,$4C4B67,$3C3B8C,$3C3B94,$6D6D6D,$0000D9,$0000F6,$000000,$000000,$000000,$00009B,$00009B,$909090,$472C36,$402A33,$524B4E,$535371,$0000CA,$0000D2,$0000D6,$3939B6,$4D4649,$39282E,$39282E,$4D4649,$3939B6,$0000D6,$0000D2,$0000CA,$535371,$524B4E,$402A33,$472C36,$909090,$00009B,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$C8C8C8,$B2B2B2,$A0A0A0,$929292,$888888,$808080,$954F03,$964E00,$964E00,$954F03,$818181,$898989,$949494,$A3A3A3,$B5B5B5,$CACACA,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$727272,$403EA0,$403EA0,$3E3D94,$4E4E6F,$57575A,$4A4A92,$50505A,$545454,$4A495E,$3C3C82,$3D3C89,$3E3C91,$3E3D93,$3E3D93,$3E3C91,$3D3C89,$3C3C82,$4A495E,$545454,$4F4F5B,$494994,$575759,$4E4E6F,$3E3D94,$403EA0,$403EA0,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$0000B0,$000096,$9D9D9D,$532F3D,$4E2E3B,$472B37,$5A5055,$656565,$47479E,$49499A,$554C50,$402A33,$422B34,$422B34,$402A33,$554C50,$49499A,$47479E,$656565,$5A5055,$472B37,$4E2E3B,$532F3D,$9D9D9D,$000096,$0000B0,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$EBEBEB,$BABABA,$A7A7A7,$979797,$8C8C8C,$848484,$7E7E7E,$6D4419,$693600,$693600,$6D4419,$7F7F7F,$858585,$8D8D8D,$999999,$A8A8A8,$BCBCBC,$ECECEC,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$797979,$4542A8,$4643B4,$4543AE,$4442A5,$43409B,$413F93,$403E8D,$403E8B,$413F90,$423F94,$43419D,$4342A3,$4442A6,$4442A6,$4342A3,$43419D,$423F94,$413F90,$403E8B,$403E8D,$413F93,$43409B,$4442A5,$4543AE,$4643B4,$4542A8,$797979,$0000D9,$0000F6,$000000,$000000,$0000A8,$0000CA,$94949E,$84737A,$603244,$603244,$5A3142,$532F3D,$4D2D3B,$4A2C38,$4A2C38,$4C2D3A,$502E3B,$522E3D,$522E3D,$502E3B,$4C2D3A,$4A2C38,$4A2C38,$4D2D3B,$532F3D,$5A3142,$603244,$603244,$84737A,$94949E,$0000CA,$0000AD,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$EEEEEE,$BFBFBF,$ACACAC,$9C9C9C,$909090,$878787,$808080,$7C7C7C,$5A4A39,$3E2000,$3E2000,$5A4A39,$7D7D7D,$818181,$878787,$919191,$9D9D9D,$AEAEAE,$C0C0C0,$EFEFEF,$FFFFFF,$000000,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$7B7B7B,$4A47B4,$7972A1,$8B8B97,$817FA0,$544FBE,$4C48B9,$4947AE,$4946AA,$4946AA,$4946AE,$4A47B2,$4A47B6,$4B47B6,$4B47B6,$4A47B6,$4A47B2,$4946AE,$4946AA,$4946AA,$4947AE,$4C48B9,$544FBE,$817FA0,$8B8B9A,$7972A1,$4A47B4,$7B7B7B,$0000D9,$0000F6,$000000,$0000A8,$0000CA,$8B8B94,$7F6F75,$643449,$6B354D,$723B52,$6D364E,$68344B,$623347,$5C3144,$5B3143,$5C3144,$603246,$623347,$623347,$603246,$5C3144,$5B3143,$5C3144,$623347,$68344B,$6D364E,$723B52,$6B354D,$643449,$7F6F75,$8B8B94,$0000CA,$0000A8,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$F0F0F0,$C4C4C4,$B0B0B0,$A0A0A0,$939393,$898989,$828282,$7E7E7E,$7B7B7B,$666461,$393129,$393129,$676562,$7B7B7B,$7E7E7E,$838383,$8A8A8A,$949494,$A1A1A1,$B1B1B1,$C5C5C5,$F0F0F0,$FFFFFF,$000000,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$7B7B7B,$4E4DB7,$6F6FB4,$0000D3,$6F6FD1,$9797A0,$8D8CAA,$726CCC,$6C69C8,$6560C6,$5B59C2,$5754C0,$534FBD,$4F4EBC,$4F4EBC,$534FBD,$5754C0,$5B59C2,$6560C6,$6C69C8,$726CCC,$8D8CAA,$9A9A9D,$7777CE,$0000D9,$6B6BBE,$4E4DB7,$7B7B7B,$0000D9,$0000F6,$00009B,$0000CE,$8B8B94,$7E6C74,$9696B0,$BBBBBB,$CACACA,$B6A1A9,$906175,$845269,$753C56,$703750,$6E364F,$6D364E,$6E364F,$6E374F,$6E374F,$6E364F,$6D364E,$6E364F,$703750,$753C56,$845269,$906175,$B6A1A9,$CACACA,$BBBBBB,$9696B0,$7E6C74,$8B8B94,$0000CE,$00009B,$000000,$000000,$000000,$FFFFFF,$F1F1F1,$C8C8C8,$B4B4B4,$A3A3A3,$959595,$8B8B8B,$848484,$7F7F7F,$7C7C7C,$7A7A7A,$797979,$797979,$797979,$797979,$7A7A7A,$7C7C7C,$7F7F7F,$848484,$8B8B8B,$969696,$A3A3A3,$B4B4B4,$C8C8C8,$F1F1F1,$FFFFFF,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$777777,$5350B4,$6363A3,$0000F3,$0000FB,$0000CA,$7272D3,$9D9D9F,$9191AE,$7D79CE,$6B69CA,$605DC4,$5957C1,$5654C0,$5654C0,$5957C1,$605DC4,$6B69CA,$7D79CE,$9191AE,$9D9D9D,$7B7BCE,$0000C0,$0000FB,$0000F3,$5B5BB4,$5350B6,$777777,$0000D9,$0000F6,$0000D6,$8080B8,$847179,$A4A4A4,$0000A8,$0000DE,$00006B,$D1D1D1,$D3D3D3,$BDA5AE,$925C74,$89516A,$804660,$7A3D58,$773A55,$773A55,$773A55,$773A55,$7A3D58,$804660,$89516A,$925C74,$BDA5AE,$D3D3D3,$D1D1D1,$00006B,$0000DE,$0000A8,$A4A4A4,$847179,$8080B8,$0000D6,$000000,$000000,$FFFFFF,$F3F3F3,$CDCDCD,$B8B8B8,$A6A6A6,$979797,$8D8D8D,$858585,$808080,$7D7D7D,$7B7B7B,$797979,$797979,$797979,$797979,$797979,$797979,$7B7B7B,$7D7D7D,$808080,$858585,$8D8D8D,$979797,$A6A6A6,$B8B8B8,$CDCDCD,$F3F3F3,$FFFFFF,$000000,$000000
  Data.l $0000ED,$0000F1,$777777,$5756AE,$696691,$797979,$4E4ED2,$0000F3,$0000FB,$0000CA,$6B6BCA,$929292,$8584A3,$6965C6,$615DC4,$5D5AC4,$5D5AC4,$615DC4,$6965C6,$8584A3,$929292,$7272C2,$0000C0,$0000F9,$0000F4,$4D4DD7,$77777B,$696691,$5756AE,$777777,$0000D9,$0000F6,$000073,$0000B7,$AAAAAA,$957B85,$B2B2B2,$8E8ECE,$0000D2,$0000DE,$00006B,$CCCCCC,$B59EA7,$915871,$8C516C,$864B66,$814460,$7F405B,$7F405B,$814460,$864B66,$8C516C,$915871,$B59EA7,$CCCCCC,$00006B,$0000DE,$0000D2,$8E8ECE,$B2B2B2,$957B85,$AAAAAA,$0000B7,$000073,$000000,$FFFFFF,$F7F7F7,$D2D2D2,$BCBCBC,$A9A9A9,$9A9A9A,$8D8D8D,$868686,$808080,$7D7D7D,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7D7D7D,$808080,$868686,$8D8D8D,$9A9A9A,$A9A9A9,$BCBCBC,$D2D2D2,$F7F7F7,$FFFFFF,$000000
  Data.l $0000ED,$0000F1,$727272,$5D5AB2,$5D5AB2,$5A58A8,$636188,$676777,$4D4DD3,$0000F4,$0000FB,$0000C4,$6B6B9D,$6963C6,$6963C6,$6963C6,$6963C6,$6963C6,$6963C6,$727294,$0000C0,$0000F8,$0000F4,$4B4BD7,$66667D,$636188,$5A58A8,$5D5AB2,$5D5AB2,$727272,$0000D9,$0000F6,$000025,$0000ED,$9B9BCA,$A28391,$7E3D59,$A0828F,$B3B3B3,$8989CB,$0000D2,$0000DE,$8383DA,$C4C4C4,$AC909D,$894964,$864661,$84425E,$84425E,$864661,$894964,$AC909D,$C4C4C4,$8383DA,$0000DE,$0000D2,$8989CB,$B3B3B3,$A0828F,$7E3D59,$A28391,$9B9BCA,$0000ED,$000025,$FFFFFF,$FBFBFB,$DCDCDC,$C4C4C4,$AFAFAF,$9E9E9E,$909090,$878787,$818181,$7D7D7D,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7D7D7D,$818181,$878787,$909090,$9E9E9E,$AFAFAF,$C4C4C4,$DCDCDC,$FBFBFB,$FFFFFF
  Data.l $0000ED,$0000F1,$6F6F6F,$6763B6,$6966B7,$6661AE,$605DA6,$5D5AA1,$636185,$636381,$4C4CD3,$0000F7,$5A5AA7,$6D6BC2,$726CC6,$776DCA,$776DCA,$726CC6,$6D6BC2,$60609B,$0000F6,$4A4AD6,$606083,$636185,$5D5AA1,$605DA6,$6661AE,$6966B7,$6763B6,$6F6F6F,$0000D9,$0000F6,$000000,$000077,$0000B7,$C3C3C3,$86425E,$83405C,$7E3F59,$977B86,$A9A9A9,$8484C6,$0000D6,$0000DE,$A7A7C8,$86425E,$86425E,$884360,$884360,$86425E,$86425E,$A7A7C8,$0000DE,$0000D2,$8484C6,$A9A9A9,$977B86,$7E3F59,$83405C,$86425E,$C3C3C3,$0000B7,$000077,$000000,$FFFFFF,$EBEBEB,$D1D1D1,$B9B9B9,$A5A5A5,$959595,$898989,$818181,$7D7D7D,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7D7D7D,$818181,$898989,$959595,$A5A5A5,$B9B9B9,$D1D1D1,$EBEBEB,$FFFFFF
  Data.l $0000ED,$0000F1,$727272,$776FBC,$7D79C2,$7D77C0,$726DB9,$6B6BAA,$6966A6,$6765A5,$6B6B89,$60608F,$726F96,$7F7BC2,$8180CC,$8381CF,$8381CF,$8180CC,$7F7BC2,$726F96,$61618B,$6B6B89,$6765A5,$6966A6,$6B6BAA,$726DB9,$7D77C0,$7D79C2,$776FBC,$727272,$0000D9,$0000F6,$000000,$000025,$0000ED,$A1A1CF,$A98A97,$894460,$83425B,$7E4059,$7B3F58,$987C86,$B0B0B0,$8E8ECE,$A58697,$8C4461,$8E4662,$8E4763,$8E4763,$8E4662,$8C4461,$A58697,$8E8ECE,$B0B0B0,$987C86,$7B3F58,$7E4059,$83425B,$894460,$A98A97,$A1A1CF,$0000ED,$000025,$000000,$FFFFFF,$E5E5E5,$CACACA,$B3B3B3,$A0A0A0,$919191,$868686,$7F7F7F,$7C7C7C,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7C7C7C,$7F7F7F,$868686,$919191,$A0A0A0,$B3B3B3,$CACACA,$E5E5E5,$FFFFFF
  Data.l $0000ED,$0000F1,$727272,$8381C2,$8784CC,$8885D1,$8784CC,$8482C4,$8280BE,$807DB9,$7F7BB6,$817DBA,$8381C1,$8683CA,$8885D1,$8987D3,$8987D3,$8885D1,$8683CA,$8381C1,$817DBA,$7F7BB6,$807DB9,$8280BE,$8482C4,$8784CC,$8885D1,$8784CC,$8381C2,$727272,$0000D9,$0000F6,$000000,$000000,$00007B,$0000B7,$BBBBBB,$8B4862,$8A4762,$864660,$85465E,$884761,$8E4863,$904A66,$934C69,$944F6A,$944E69,$934C69,$934C69,$944E69,$944F6A,$934C69,$904A66,$8E4863,$884761,$85465E,$864660,$8A4762,$8B4862,$BBBBBB,$0000BD,$00007B,$000000,$000000,$FFFFFF,$E4E4E4,$C9C9C9,$B3B3B3,$A0A0A0,$919191,$868686,$7F7F7F,$7C7C7C,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7C7C7C,$7F7F7F,$868686,$919191,$A0A0A0,$B3B3B3,$C9C9C9,$E4E4E4,$FFFFFF
  Data.l $0000ED,$0000F1,$727272,$8A88C6,$8F8CD2,$9290D7,$9290D7,$918FD5,$8F8CD2,$8C8ACE,$8B89CA,$8B89CA,$8D8ACF,$8F8CD2,$918FD5,$9290D7,$9290D7,$918FD5,$8F8CD2,$8D8ACF,$8B89CA,$8B89CA,$8C8ACE,$8F8CD2,$918FD5,$9290D7,$9290D7,$8F8CD2,$8A88C6,$727272,$0000D9,$0000F6,$000000,$000000,$000025,$0000ED,$9999C7,$A98B97,$974F69,$9A536D,$9A536C,$9D566F,$A15C75,$A36077,$A15D75,$9F5972,$9D566F,$9A536C,$9A536C,$9D566F,$9F5972,$A15D75,$A36077,$A15C75,$9D566F,$9A536C,$9A536D,$974F69,$A98B97,$9999C7,$0000ED,$000025,$000000,$000000,$FFFFFF,$E6E6E6,$CDCDCD,$B6B6B6,$A4A4A4,$949494,$898989,$818181,$7E7E7E,$7C7C7C,$7A7A7A,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7A7A7A,$7C7C7C,$7E7E7E,$818181,$898989,$949494,$A4A4A4,$B6B6B6,$CDCDCD,$E6E6E6,$FFFFFF
  Data.l $0000ED,$0000F1,$727272,$9291CC,$9696D3,$9897DA,$9A98DB,$9A98DB,$9A98DB,$9B98DB,$9D9ADB,$9D9BDB,$9D9BDB,$9D9BDB,$9D9ADB,$9B98DB,$9B98DB,$9D9ADB,$9D9BDB,$9D9BDB,$9D9BDB,$9D9ADB,$9B98DB,$9A98DB,$9A98DB,$9A98DB,$9897DA,$9696D3,$9291CC,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$00007F,$0000A0,$B9B9B9,$A25D73,$AF7586,$B87E90,$B87F91,$CBB2BB,$B3B3DB,$BFA5B0,$A96B7D,$A66679,$A56477,$A56477,$A66679,$A96B7D,$BFA5B0,$B3B3DB,$CBB2BB,$B87F91,$B87E90,$AF7586,$A25D73,$B9B9B9,$0000A4,$00007B,$000000,$000000,$000000,$FFFFFF,$EEEEEE,$D4D4D4,$BEBEBE,$ABABAB,$9A9A9A,$8D8D8D,$858585,$818181,$7E7E7E,$7C7C7C,$7B7B7B,$7A7A7A,$7A7A7A,$7B7B7B,$7B7B7B,$7B7B7B,$7B7B7B,$7A7A7A,$7A7A7A,$7B7B7B,$7C7C7C,$7E7E7E,$818181,$858585,$8D8D8D,$9A9A9A,$ABABAB,$BEBEBE,$D4D4D4,$EEEEEE,$FFFFFF
  Data.l $0000ED,$0000F1,$727272,$9897CF,$A09FD7,$A3A1DD,$A4A2DF,$A5A3DF,$A6A4DF,$A9A7E0,$B2ACE2,$B6B4E2,$B7B4E3,$B4AEE2,$ACA9E1,$A9A6E0,$A9A6E0,$ACA9E1,$B4AEE2,$B7B4E3,$B6B4E2,$B2ACE2,$A9A7E0,$A6A4DF,$A5A3DF,$A4A2DF,$A3A1DD,$A09FD7,$9897CF,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$000070,$0000BD,$B2B2B2,$A66677,$BE8596,$C796A4,$D4C3C8,$B5B5E3,$0000F5,$9090E3,$B77B8C,$B57989,$B57A8A,$B57A8A,$B57989,$B77B8C,$9090E3,$0000F5,$B9B9E2,$D4C3C8,$C796A4,$BE8596,$A66677,$B2B2B2,$0000BD,$000070,$000000,$000000,$000000,$FFFFFF,$F8F8F8,$DFDFDF,$C8C8C8,$B4B4B4,$A3A3A3,$949494,$8A8A8A,$858585,$818181,$7F7F7F,$7D7D7D,$7D7D7D,$7E7E7E,$7F7F7F,$7F7F7F,$7F7F7F,$7F7F7F,$7E7E7E,$7D7D7D,$7D7D7D,$7F7F7F,$818181,$858585,$8A8A8A,$949494,$A3A3A3,$B4B4B4,$C8C8C8,$DFDFDF,$F8F8F8,$FFFFFF
  Data.l $0000ED,$0000F1,$777777,$A3A1D3,$A9A7DD,$AEAAE2,$B2ACE2,$B4AEE2,$B7B6E3,$BEBCE4,$C4C2E5,$CAC6E7,$CCC8E7,$C6C4E6,$C2BEE4,$BEBAE4,$BEBAE4,$C2BEE4,$C6C4E6,$CCC8E7,$CAC6E7,$C4C2E5,$BEBCE4,$B7B6E3,$B4AEE2,$B2ACE2,$AEAAE2,$A9A7DD,$A3A1D3,$777777,$0000D9,$0000F6,$000000,$000000,$000000,$0000C0,$7171C6,$A88E94,$AE707C,$C48F9B,$D5C3C7,$B8B8E2,$0000F5,$0000ED,$CFCFD3,$BF8693,$C38E99,$C6949F,$C6949F,$C38E99,$BF8693,$CFCFD3,$0000ED,$0000F5,$B8B8E2,$D5C3C7,$C48F9B,$AE707C,$A88E94,$7171C6,$0000C0,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$F7F7F7,$D5D5D5,$C0C0C0,$ACACAC,$9C9C9C,$919191,$8A8A8A,$868686,$838383,$828282,$838383,$858585,$868686,$878787,$878787,$868686,$858585,$838383,$828282,$838383,$868686,$8A8A8A,$919191,$9C9C9C,$ACACAC,$C0C0C0,$D5D5D5,$F7F7F7,$FFFFFF,$FFFFFF
  Data.l $0000F3,$0000EB,$7B7B7B,$AEACDB,$BAB7E2,$BEBCE4,$BEBCE4,$C0BEE4,$C4C2E6,$CCCAE7,$B6B6C2,$AAAAAA,$AEAEAE,$BCBCC6,$D1D1E8,$CFCCE8,$CFCCE8,$D1D1E8,$BCBCC6,$AEAEAE,$AAAAAA,$B6B6C2,$CCCAE7,$C4C2E6,$C0BEE4,$BEBCE4,$BEBCE4,$BAB7E2,$AEACDB,$7B7B7B,$0000D1,$0000F7,$000000,$000000,$00002B,$0000F8,$9A9AA7,$A2666F,$B77A82,$CEB9BD,$B2B2DE,$0000F2,$0000FB,$8484E2,$CBB2B6,$CA98A0,$D2A9AE,$D8B5BC,$D8B5BC,$D2A9AE,$CA98A0,$CBB2B6,$8888E1,$0000FB,$0000F2,$B2B2DE,$CEB9BD,$B77A82,$A2666F,$9A9AA7,$0000F8,$00002B,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$E2E2E2,$A6A6A6,$9A9A9A,$929292,$8C8C8C,$8A8A8A,$8A8A8A,$8C8C8C,$8F8F8F,$929292,$939393,$939393,$929292,$8F8F8F,$8C8C8C,$8A8A8A,$8A8A8A,$8C8C8C,$919191,$999999,$A6A6A6,$E2E2E2,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000
  Data.l $0000A3,$0000F8,$7F7F7F,$C1C0E2,$C6C6E6,$CACAE7,$CCCAE7,$CCCCE7,$D1CFE8,$D3D3E9,$A1A1A1,$0000A9,$0000F5,$A1A1B6,$BABAC2,$DAD9EA,$DAD9EA,$BABAC2,$A2A2B4,$0000F4,$0000BD,$A1A1A1,$D3D3E9,$D1CFE8,$CCCCE7,$CCCAE7,$CACAE7,$C6C6E6,$C1C0E2,$7F7F7F,$0000F7,$0000D6,$000000,$000000,$00006B,$0000BD,$AAAAAA,$AF7276,$CCB5B7,$B6B6DD,$0000F2,$000063,$0000ED,$C8C8CD,$CA989D,$D8B0B6,$E3DADB,$D0D0EF,$D0D0EF,$E3DADB,$D8B0B6,$CA989D,$C8C8CD,$0000ED,$000063,$0000F2,$B6B6DD,$CCB5B7,$AF7276,$AAAAAA,$0000BD,$00006B,$000000,$000000,$000000,$000000,$000000,$000000,$282828,$FFFFFF,$DFDFDF,$A4A4A4,$9B9B9B,$969696,$959595,$969696,$9A9A9A,$9E9E9E,$A1A1A1,$A3A3A3,$A3A3A3,$A1A1A1,$9D9D9D,$999999,$959595,$949494,$959595,$9A9A9A,$A3A3A3,$DEDEDE,$FFFFFF,$282828,$000000,$000000,$000000,$000000
  Data.l $00003D,$0000FF,$5B5BAE,$9D9DA6,$D3D3EA,$D6D5EA,$D6D5EA,$D7D6EA,$D7D7EA,$A9A9B7,$8787BD,$0000F8,$0000FD,$00009D,$9F9FA4,$E1E1ED,$E1E1ED,$9F9FA4,$000097,$0000FD,$0000F8,$8686BE,$A9A9B7,$D7D7EA,$D7D6EA,$D6D5EA,$D6D5EA,$D3D3EA,$9D9DA6,$5D5DAA,$0000FE,$000045,$000000,$000000,$0000C0,$7777CE,$BBA1A1,$CFBCBC,$BCBCE1,$0000F2,$000063,$0000CA,$8989E2,$CEBBBB,$D5ACAC,$E0C4C4,$E7E7EB,$0000E5,$0000E5,$E7E7EB,$E0C4C4,$D5ACAC,$CEBBBB,$8989E2,$0000CA,$000063,$0000F2,$BCBCE1,$CFBCBC,$BBA1A1,$7777CE,$0000C0,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$AFAFAF,$A7A7A7,$A3A3A3,$A3A3A3,$A6A6A6,$AAAAAA,$B0B0B0,$B5B5B5,$B8B8B8,$B7B7B7,$B4B4B4,$AFAFAF,$A9A9A9,$A4A4A4,$A1A1A1,$A0A0A0,$A5A5A5,$ADADAD,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $000037,$0000DF,$0000F4,$858585,$DDDDEB,$DFDFED,$DFDFED,$DFDFED,$DFDDEB,$8D8D8D,$0000C0,$0000F4,$0000C0,$0000FC,$9F9FA5,$C8C8D1,$C8C8D1,$9F9FA4,$0000FA,$0000DB,$0000E9,$0000D2,$8D8D8D,$DFDDEB,$DFDFED,$DFDFED,$DFDFED,$DDDDEB,$858585,$0000F3,$0000F4,$000038,$000000,$00002B,$0000F5,$B7B7C5,$D3C1C0,$C1C1E6,$0000F2,$000063,$000000,$0000ED,$D5D5D9,$DAB6B3,$DFC3C0,$E5DCDB,$9F9FF5,$0000CA,$0000CA,$9F9FF5,$E5DCDB,$DFC3C0,$DAB6B3,$D5D5D9,$0000ED,$000000,$000063,$0000F2,$C1C1E6,$D3C1C0,$B7B7C5,$0000F5,$00002B,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$E8E8E8,$BCBCBC,$B5B5B5,$B2B2B2,$B4B4B4,$B9B9B9,$BFBFBF,$E8E8E8,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$E7E7E7,$BDBDBD,$B6B6B6,$B1B1B1,$AFAFAF,$B1B1B1,$B9B9B9,$E8E8E8,$FFFFFF,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000043,$0000FE,$6363BA,$ACACB6,$E5E5EF,$E7E7F0,$E5E5EF,$AEAEB7,$7979A6,$0000FA,$000084,$00003A,$0000FC,$00009B,$AEAEB4,$AEAEB4,$000096,$0000FC,$00003B,$00006D,$0000FC,$7777A8,$AEAEB7,$E5E5EF,$E7E7F0,$E5E5EF,$ACACB6,$6666B7,$0000FF,$00004D,$000000,$000000,$00006B,$0000BD,$D3D3D3,$C3C3E7,$0000F2,$000063,$000000,$0000CA,$9999F0,$E4DBDA,$E7D2CE,$E7DEDD,$E3E3E8,$0000E1,$000051,$000051,$0000E1,$E3E3E8,$E7DEDD,$E7D2CE,$E4DBDA,$9999F0,$0000CA,$000000,$000063,$0000F2,$C3C3E7,$D3D3D3,$0000BD,$00006B,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$D5D5D5,$CBCBCB,$C6C6C6,$C5C5C5,$C9C9C9,$D0D0D0,$EFEFEF,$FFFFFF,$0F0F0F,$000000,$000000,$1A1A1A,$FFFFFF,$EEEEEE,$CDCDCD,$C5C5C5,$C0C0C0,$C1C1C1,$C7C7C7,$D2D2D2,$FFFFFF,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000039,$0000E1,$0000F4,$949494,$EBEAF1,$EBEBF1,$EBEAF1,$949494,$0000B2,$0000F8,$000048,$000000,$000096,$0000FD,$AEAEAE,$AEAEAE,$0000FB,$0000BD,$000000,$000042,$0000F4,$0000C2,$949494,$EBEAF1,$EBEBF1,$EBEAF1,$949494,$0000EB,$0000F4,$00003A,$000000,$000000,$0000BD,$00006B,$BFBFE4,$0000ED,$000063,$000000,$000000,$0000F2,$E4E4EC,$EFE7E4,$EFDFDB,$E9E9E9,$000070,$0000CA,$000000,$000000,$0000CA,$000070,$E9E9E9,$EFDFDB,$EFE7E4,$E4E4EC,$0000F2,$000000,$000000,$000063,$0000ED,$BFBFE4,$00006B,$0000BD,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FAFAFA,$E5E5E5,$DCDCDC,$D9D9D9,$DBDBDB,$F3F3F3,$FFFFFF,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$010101,$FFFFFF,$FFFFFF,$F1F1F1,$D5D5D5,$D3D3D3,$D7D7D7,$E1E1E1,$F9F9F9,$FFFFFF,$000000,$000000,$000000,$000000
  Data.l $000000,$000036,$00004B,$0000FF,$7B7BCE,$CECED1,$F0F0F3,$CECED1,$8787BA,$0000F9,$000088,$000038,$000000,$000039,$0000FD,$000096,$000091,$0000FD,$000039,$000000,$000037,$000086,$0000FA,$8585BD,$CECED1,$F0F0F3,$CECED1,$7F7FCA,$0000FE,$00004D,$000036,$000000,$00002B,$0000F5,$AFAFE4,$0000ED,$000063,$000000,$000000,$000025,$0000C5,$0000B0,$ECECF1,$F2EBE9,$E8E8EC,$0000DE,$000056,$000000,$000000,$000056,$0000DE,$E8E8EC,$F2EBE9,$ECECF1,$0000B0,$0000C5,$000025,$000000,$000000,$000063,$0000ED,$AFAFE4,$0000F5,$00002B,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$F6F6F6,$EFEFEF,$F8F8F8,$FFFFFF,$FFFFFF,$191919,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$272727,$FFFFFF,$F7F7F7,$E8E8E8,$EAEAEA,$F1F1F1,$FEFEFE,$FFFFFF,$000000,$000000,$000000,$000000
  Data.l $000000,$000000,$00003A,$0000E3,$0000F3,$B2B2B2,$BABABA,$B2B2B2,$0000A2,$0000F8,$00004E,$000000,$000000,$000000,$000096,$0000FC,$0000F9,$0000C0,$000000,$000000,$000000,$000045,$0000F7,$0000AE,$B2B2B2,$BABABA,$B2B2B2,$0000E5,$0000F4,$00003C,$000000,$000000,$000067,$0000E1,$0000ED,$000067,$000000,$000000,$000000,$000000,$000025,$0000C5,$0000B0,$ECECF1,$000070,$0000CA,$000000,$000000,$000000,$000000,$0000CA,$000070,$ECECF1,$0000B0,$0000C5,$000025,$000000,$000000,$000000,$000000,$000067,$0000ED,$0000E1,$000067,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$323232,$0A0A0A,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$0D0D0D,$FFFFFF,$FFFFFF,$FEFEFE,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000
  Data.l $000000,$000000,$000000,$00004F,$0000FE,$0000E2,$0000C8,$0000DD,$0000FE,$00008D,$000036,$000000,$000000,$000000,$000037,$0000FD,$0000FD,$000038,$000000,$000000,$000000,$000036,$00008D,$0000FE,$0000DD,$0000C8,$0000E2,$0000FE,$000050,$000000,$000000,$000000,$0000BD,$0000FD,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$0000C5,$0000B0,$0000DE,$00005A,$000000,$000000,$000000,$000000,$00005A,$0000DE,$0000B0,$0000C5,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000067,$0000FD,$0000BD,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$2A2A2A,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000
  Data.l $000000,$000000,$000000,$000037,$00007B,$0000FB,$0000F7,$0000F9,$0000A0,$000037,$000000,$000000,$000000,$000000,$000000,$000045,$000045,$000000,$000000,$000000,$000000,$000000,$000037,$0000A0,$0000F9,$0000F7,$0000FB,$00007B,$000037,$000000,$000000,$000000,$0000C0,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$0000C0,$0000A8,$000000,$000000,$000000,$000000,$000000,$000000,$0000A8,$0000C0,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000067,$0000C0,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$080808,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$0A0A0A,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000,$000000

EndDataSection
Dernière modification par beauregard le lun. 23/juin/2008 22:08, modifié 4 fois.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Sympa ton code.

; problème à résoudre:
; #PB_Window_ScreenCentered ne centre pas l'écran graphique si le joueur clique sur le bouton agrandir.
Ben supprime le bouton :)
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.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Salut Beauregard,

En effet, très jolis graphismes stockées en Datas. Sinon pour ton petit souci, tu as juste un chiffre à modifier : le 0 de l'«avant-avant-dernier» paramètre dans OpenWindowedScreen() doit être remplacé par 1.

Code : Tout sélectionner

; 
; Les Listes Chaînées (Linked Lists), tout une aventure ! 
; vers l'infini 0.2 - video game - PC - mode fenêtre - 08/06/2008 - source PureBasic 4.20 
; France - pseudo: beauregard 
; touches flêchées gauche et droite, X( tir) et F( image/seconde) 

; problème à résoudre: 
; #PB_Window_ScreenCentered ne centre pas l'écran graphique si le joueur clique sur le bouton agrandir. 

If InitMouse ()=0 Or InitKeyboard ()=0 Or InitSprite ()=0  Or InitSprite3D ()=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 
Global manette.b 
If InitJoystick():manette=1:EndIf 
UsePNGImageDecoder() 
; °°°°°°°°°°°°°°°°°°°°  fonte °°°°°°°°°°°°°°°°°°°°°°°°°° 
LoadFont ( 0 , "Comic Sans Ms" ,16, #PB_Font_Bold) 

Enumeration ; ici, on donne un petit nom à nos sprites( non, chuis pas un numéro !): 
  #envahisseurs 
  #tirbruteA  
  #gentil 
  #tirgentil  
EndEnumeration 

Structure objet ;- opération de clonage... 
 id.w ; id comme identité 
 x.w 
 y.w 
 tempoA.w 
 tempoB.w 
 boutonA.b 
 boutonB.b 
EndStructure 
Global NewList bruteA.objet() ; effectif 
Global NewList bruteB.objet() ; effectif, ouf ! 
Global NewList tirb.objet() ; tir brute 
Global NewList tirg.objet() ; tir gentil 

Declare Ftirgentil(x,y) 
Declare Affichagetirgentil() 

Declare FbruteA() 
Declare AffichagebruteA() 
Declare FtirbruteA(x,y) 
Declare AffichagetirbruteA() 

Declare FbruteB() 
Declare AffichagebruteB() 
;Declare FtirbruteB(x,y) 
;Declare AffichagetirbruteB() 

Declare Fin() 


If OpenWindow ( 0 , 0, 0, 800, 600, "vers l'infini" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar| #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_ScreenCentered ) 
 OpenWindowedScreen ( WindowID ( 0 ), 0, 0, 800, 600, 1, 1, 1) ; un ecran graphique dans la fenêtre. 
 SetWindowColor(0, RGB (0, 0, 0))  
EndIf 
KeyboardMode(#PB_Keyboard_International) 


; les méchants de l'histoire... mais le sont-ils vraiment ?... mmmh ? 
;CreateSprite ( #envahisseurs , 64, 32) 
; StartDrawing ( SpriteOutput ( #envahisseurs )) 
;  BackColor ( RGB (0,0,0)) 
;  Box (0,0, 31, 31, RGB (48, 231, 225)):  Box (32, 0, 63, 31, RGB (148, 31, 225)) 
;StopDrawing () 

If CreateSprite(#envahisseurs, 96, 32,0) 

    StartDrawing(SpriteOutput(#envahisseurs)) 
        ; merci à Fortix( The Fortix    .::Convertor V1::.) 
        Restore envahisseurs 

        For ay=0 To 32-1 
            For ax=0 To 96-1 

                Read a.l 
                Plot(ax,ay,a.l) 

            Next ax 
        Next ay 
    StopDrawing() 

    ay=0 
    ax=0 
EndIf 



CreateSprite ( #tirbruteA , 16, 16) 
 StartDrawing ( SpriteOutput ( #tirbruteA )) 
  BackColor ( RGB (0,0,0)) 
  ;Box (0,0, 15, 15, RGB (225, 0, 0)) 
Circle(8, 8, 8 ,RGB(225, 0, 0)) 

 StopDrawing () 
  
  
CreateSprite ( #gentil , 32, 32) 
 StartDrawing ( SpriteOutput ( #gentil )) 
  BackColor ( RGB (0,0,0)) 
  Box (0,0, 63, 63, RGB (46, 135, 55)) 

 StopDrawing () 

CreateSprite ( #tirgentil , 16, 16) 
 StartDrawing ( SpriteOutput ( #tirgentil )) 
  BackColor ( RGB (0,0,0)) 
  Box (0, 0, 16, 16, RGB (35, 235, 235)):Box (1, 1, 14, 14, RGB (16, 138, 242)) 

 StopDrawing () 
  

  
Global Xgentil.w=400-32, Ygentil.w=600-96, score.w 
Global recharge.b, zutA.w 
Global nbreis.b, numbruteA.b, numbruteB.b, posYbruteA.w=32, posYbruteB.w=32+48 
Global dirbruteA.b ; direction des bruteA 
Global dirbruteB.b ; direction des bruteB 
; ****************************************************************************************************** 
Repeat ; Boucle principale 
; ****************************************************************************************************** 
 Event= WindowEvent () 
  
 ExamineKeyboard () 
  
  
If numbruteA<8:FbruteA():EndIf ; ordre de Fabrication des clones bruteA. 
If numbruteB<8:FbruteB():EndIf ; ordre de Fabrication des clones bruteB. 

AffichagetirbruteA() ; ordre d'affichage des clones tirs bruteA. 
;AffichagetirbruteB() ; ordre d'affichage des clones tirs bruteB. 

AffichagebruteA() ; ordre d'affichage des clones bruteA. 
AffichagebruteB() ; ordre d'affichage des clones bruteB. 



; vaisseau dirigé par le joueur: 
If KeyboardPushed ( #PB_Key_Right ) And Xgentil<800-32:Xgentil+4:EndIf ; droite.    
If KeyboardPushed ( #PB_Key_Left ) And Xgentil>0:Xgentil-4:EndIf ; gauche. 
If KeyboardPushed ( #PB_Key_X ) And recharge=0:recharge=24:Ftirgentil( (Xgentil+16)-8, Ygentil ):EndIf ; tir ! 
If recharge>0:recharge-1:EndIf 
Affichagetirgentil() 
ClipSprite(#envahisseurs, 64, 0, 32, 32)      
DisplayTransparentSprite( #envahisseurs , Xgentil, Ygentil) 

    



StartDrawing ( ScreenOutput ()) 
DrawingMode (1) 
      DrawingFont ( FontID (0)) 
FrontColor ( RGB (255,255,255)) 
     score$= Str (score) 
     FrontColor ( RGB (154,154,154)) :DrawText (350+1,20+1, "SCORE " +score$) 
     FrontColor ( RGB (234,234,234)) :DrawText (350,20, "SCORE " +score$) 
StopDrawing ()      

  
  
 If KeyboardPushed ( #PB_Key_F ) And nbreis=0:nbreis+1:EndIf 
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=1:nbreis+1:EndIf 
 If KeyboardPushed ( #PB_Key_F ) And nbreis=2:nbreis+1:EndIf 
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=3:nbreis=0:EndIf 

 Gosub fps ; nombre d'image par seconde. 
  
  
  
  
 FlipBuffers(1) 
 ClearScreen(RGB(0,0,0)) 
; ******************************************************************************************************    
 If Event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ):Fin():EndIf; si clique coin haut droit ou touche Esc, alors ferme fenêtre. 
ForEver 



fps: 
If Val ( FormatDate ( "%ss" , Date ()))=sek 
    fps+1 
Else 
    FPS$= Str (fps) 
    fps=0 
EndIf 
sek= Val ( FormatDate ( "%ss" , Date ())) 
StartDrawing ( ScreenOutput ()) 
DrawingMode (1) 
FrontColor ( RGB (255,255,255)) 
If nbreis=1 Or nbreis=2:DrawText (1,1, "FPS: " +FPS$) 

  zutA$= Str (zutA) 
  FrontColor ( RGB (154,154,154)) :DrawText (1+1,120+1, "zutA: " +zutA$) 
  FrontColor ( RGB (234,234,234)) :DrawText (1,120, "zutA: " +zutA$) 
EndIf 
zutA=0 

StopDrawing () 
Return 

Procedure Ftirgentil(x,y) ; Fabrication des tirs du vaisseau du joueur 

LastElement(tirg()) 
AddElement(tirg()) 

        
tirg()\x=x 
tirg()\y=y 

EndProcedure  

Procedure Affichagetirgentil() ; Affichage des clones tirs du vaisseau du joueur 

ForEach tirg() 
zutA+1 ; variable utilisé par le programmeur... 

  tirg()\y-4 
  DisplayTransparentSprite( #tirgentil , tirg()\x, tirg()\y) 
  If tirg()\boutonA=1 Or tirg()\y<0-15:DeleteElement(tirg()):Continue:EndIf 
  
  
  ForEach bruteA() ; ici, nous allons vérifier si un tir gentil touche une bruteA: 
    If tirg()\x>bruteA()\x-8 And tirg()\x<(bruteA()\x+31)+8 
      If tirg()\y>bruteA()\y-8 And tirg()\y<(bruteA()\y+31)+8 
        tirg()\boutonA=1:score+10:DeleteElement(bruteA()) 
      EndIf 
    EndIf 
  Next  

  ForEach bruteB() ; ici, nous allons vérifier si un tir gentil touche une bruteB: 
    If tirg()\x>bruteB()\x-8 And tirg()\x<(bruteB()\x+31)+8 
      If tirg()\y>bruteB()\y-8 And tirg()\y<(bruteB()\y+31)+8 
        tirg()\boutonA=1:score+10:DeleteElement(bruteB()) 
      EndIf 
    EndIf 
  Next 
  
Next 


EndProcedure 
  
Procedure FbruteA() ; Fabrication des clones bruteA 

Static placement.w 


LastElement(bruteA()) 
AddElement(bruteA()) 

numbruteA+1 
bruteA()\id=numbruteA; je ne suis pas un numéro, noonnn ! 

placement+64; taille 32 colonnes +32 pour la séparation entre les bruteA, voyez. 
bruteA()\x=placement 
bruteA()\y=32 

EndProcedure  
Procedure FbruteB() ; Fabrication des clones bruteB 

Static placement.w 


LastElement(bruteB()) 
AddElement(bruteB()) 

numbruteB+1 
bruteB()\id=numbruteB; je ne suis pas un numéro, noonnn ! 

placement+64; taille 32 colonnes +32 pour la séparation entre les bruteB, voyez. 
bruteB()\x=placement 
bruteB()\y=320 

EndProcedure 

Procedure AffichagebruteA() ; Affichage des clones bruteA 


Static tempotirbruteA.b 
Static choixbruteA.b 

tempotirbruteA+1 
If tempotirbruteA>64:tempotirbruteA=0 
  choixbruteA=Random(7); de 0 à 7... 
  choixbruteA+1; ...et là +1, donc maintenant de 1 à 8. 
EndIf 

ForEach bruteA() 

  If dirbruteA=0:bruteA()\x+2 
    If bruteA()\x>(800-4)-32:dirbruteA=1:EndIf ; bord de l'écran droite 
  EndIf 
  If dirbruteA=2:bruteA()\x-2 
    If bruteA()\x<0+4:dirbruteA=3:EndIf ; bord de l'écran gauche 
  EndIf 
  
  bruteA()\y=posYbruteA 
  
  ClipSprite(#envahisseurs, 32, 0, 32, 32) 
  DisplayTransparentSprite( #envahisseurs , bruteA()\x, bruteA()\y) 
  
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteA=1 And LastElement(bruteA()):dirbruteA=2:dirbruteB=2:posYbruteA+32:posYbruteB+32:EndIf 
  If dirbruteA=3 And LastElement(bruteA()):dirbruteA=0:dirbruteB=0:posYbruteA+32:posYbruteB+32:EndIf 
  
  If choixbruteA>0 And bruteA()\id=choixbruteA; tir ennemi !! 
    choixbruteA=0:FtirbruteA( (bruteA()\x+16)-8, (bruteA()\y+31)-8 ) 
  EndIf 
    
Next 

EndProcedure 
Procedure AffichagebruteB() ; Affichage des clones bruteB 

Static tempotirbruteB.b 
Static choixbruteB.b 

tempotirbruteB+1 
If tempotirbruteB>64:tempotirbruteB=0 
  choixbruteB=Random(7); de 0 à 7... 
  choixbruteB+1; ...et là +1, donc maintenant de 1 à 8. 
EndIf 

ForEach bruteB() 

  If dirbruteB=0:bruteB()\x+2 
    If bruteB()\x>(800-4)-32:dirbruteB=1:EndIf ; bord de l'écran droite 
  EndIf 
  If dirbruteB=2:bruteB()\x-2 
    If bruteB()\x<0+4:dirbruteB=3:EndIf ; bord de l'écran gauche 
  EndIf 
  
  bruteB()\y=posYbruteB 



  ClipSprite(#envahisseurs, 0, 0, 32, 32)      
  DisplayTransparentSprite( #envahisseurs , bruteB()\x, bruteB()\y) 
  
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteB=1 And LastElement(bruteB()):dirbruteB=2:dirbruteA=2:posYbruteB+32:posYbruteA+32:EndIf 
  If dirbruteB=3 And LastElement(bruteB()):dirbruteB=0:dirbruteA=0:posYbruteB+32:posYbruteA+32:EndIf 
  
  If choixbruteB>0 And bruteB()\id=choixbruteB; tir ennemi !! 
    choixbruteB=0:FtirbruteA( (bruteB()\x+16)-8, (bruteB()\y+31)-8 ) 
  EndIf 
    
Next 

EndProcedure 

Procedure FtirbruteA(x,y) ; Fabrication des tirs ennemis provenant des clones bruteA 

LastElement(tirb()) 
AddElement(tirb()) 

tirb()\x=x 
tirb()\y=y 

EndProcedure 

Procedure AffichagetirbruteA() ; Affichage des clones tirs ennemis bruteA 

ForEach tirb() 

  tirb()\y+4 
  DisplayTransparentSprite( #tirbruteA , tirb()\x, tirb()\y) 

    ; ici, nous allons vérifier si un tir bruteA touche le gentil vaisseau du joueur, hum: 
    If tirb()\x>Xgentil-1 And tirb()\x<(Xgentil+31)+8 
      If tirb()\y>Ygentil-1 And tirb()\y<(Ygentil+31)+8 
        DeleteElement(tirb()) 
        ; game over ou perd un vaisseau ou le bouclier de celui-ci... c'est à vous de continuer l'aventure. 
      EndIf 
    EndIf 
  
Next 
ForEach tirb() 
  If tirb()\y>600:DeleteElement(tirb()):EndIf  
Next 
EndProcedure 

Procedure.l Fin() 

 If IsImage(#envahisseurs):FreeImage(#envahisseurs):EndIf 
 If IsImage(#tirbruteA):FreeImage(#tirbruteA):EndIf  
 If IsImage(#gentil):FreeImage(#gentil):EndIf 
 If IsImage(#tirgentil):FreeImage(#tirgentil):EndIf  
 End 
EndProcedure 

DataSection 
  envahisseurs: 

  Data.l $0000F3,$0000FF,$00006B,$000036,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000036,$000059,$0000FE,$0000F7,$0000AD,$000089,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$000089,$0000AD,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000FD,$0000FC,$000067,$000037,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000057,$0000FB,$0000FB,$0000F7,$00009B,$0000FD,$0000D6,$000040,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000040,$0000D6,$0000FD,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FAFAFA,$ECECEC,$E1E1E1,$D9D9D9,$D5D5D5,$D5D5D5,$DADADA,$E2E2E2,$EDEDED,$FBFBFB,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F3,$00008B,$0000FE,$000063,$000038,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000039,$000039,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000056,$0000FC,$0000A2,$0000DD,$0000F6,$000031,$0000ED,$00007F,$0000F2,$000089,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000089,$0000F2,$00007B,$0000ED,$000031,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FAFAFA,$E2E2E2,$D3D3D3,$C8C8C8,$C0C0C0,$BCBCBC,$BCBCBC,$C1C1C1,$C9C9C9,$D5D5D5,$E4E4E4,$FBFBFB,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F0,$606060,$0000A6,$0000FD,$000061,$000038,$000000,$000000,$000000,$000000,$000000,$000000,$000039,$00003E,$0000A0,$000096,$00003E,$000039,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000056,$0000FB,$0000C4,$606060,$0000D6,$0000F6,$000000,$00009B,$00009B,$808098,$0000C5,$0000D6,$000040,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000040,$0000D6,$0000C5,$7E7E9A,$00009B,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$DFDFDF,$CDCDCD,$BEBEBE,$B3B3B3,$AAAAAA,$A6A6A6,$A7A7A7,$ABABAB,$B4B4B4,$C0C0C0,$CFCFCF,$E2E2E2,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$5E5E5E,$59595B,$0000B2,$0000FB,$00005E,$000037,$000000,$000000,$000000,$000039,$000041,$000096,$0000FD,$0000F9,$0000F9,$0000FD,$0000A4,$000042,$000039,$000000,$000000,$000000,$000036,$000055,$0000F9,$0000CF,$58585D,$5E5E5E,$0000D9,$0000F6,$000000,$000035,$0000ED,$88889B,$818181,$5252AD,$0000F2,$000083,$000000,$000000,$000000,$000000,$000000,$000000,$00002E,$0000D2,$0000D2,$00002E,$000000,$000000,$000000,$000000,$000000,$000000,$000083,$0000F2,$5252AD,$818181,$88889B,$0000ED,$000035,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$F3F3F3,$CCCCCC,$BABABA,$ABABAB,$A0A0A0,$AD957B,$DB8A32,$DB8A32,$AE967C,$A2A2A2,$AEAEAE,$BCBCBC,$CFCFCF,$FFFFFF,$2F2F2F,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$616161,$4A4969,$575759,$0000C0,$0000FA,$00005B,$000000,$000037,$000043,$00008D,$0000FB,$0000FA,$0000A5,$505050,$505050,$000098,$0000FA,$0000FC,$00009F,$000044,$000038,$000000,$000054,$0000F8,$0000DA,$56565D,$4A4969,$616161,$0000D9,$0000F6,$000000,$000000,$00009B,$5454D8,$6E6268,$62585B,$63637B,$0000CA,$0000D6,$00003D,$000000,$000000,$000000,$00002E,$0000D6,$3A3AB2,$3A3AB2,$0000D6,$00002E,$000000,$000000,$000000,$00003D,$0000D6,$0000CA,$63637B,$62585B,$6E6268,$5454D8,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$D1D1D1,$BBBBBB,$AAAAAA,$9C9C9C,$929292,$BB8041,$E67700,$E67700,$BC8142,$939393,$9E9E9E,$ACACAC,$BEBEBE,$EDEDED,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$696969,$3A3A89,$4B4967,$565659,$0000CE,$0000F8,$000063,$000082,$0000F8,$0000FA,$0000BA,$515151,$515151,$454558,$454558,$515151,$515151,$0000A7,$0000F9,$0000FA,$000090,$00005B,$0000F8,$0000E1,$54545D,$4B4967,$3A3A89,$696969,$0000D9,$0000F6,$000000,$000000,$000035,$0000F2,$88889B,$6A5D63,$5C5358,$656565,$43439E,$0000F2,$000083,$000000,$00002E,$0000D6,$3939B0,$494044,$494044,$3838B5,$0000D6,$00002E,$000000,$00007F,$0000F2,$43439E,$656565,$5C5358,$6A5D63,$88889B,$0000F2,$000035,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$EFEFEF,$C0C0C0,$ACACAC,$9C9C9C,$909090,$878787,$B46A1A,$C16400,$C16400,$B46A1A,$888888,$929292,$9E9E9E,$AFAFAF,$C3C3C3,$F0F0F0,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$6D6D6D,$3C3B94,$3C3B8C,$4C4B67,$545459,$0000C4,$0000FE,$0000FA,$0000C6,$515153,$535353,$48475D,$3B3A7F,$3B3A82,$3B3A82,$3B3A7F,$48475D,$535353,$515151,$0000B9,$0000FA,$0000FF,$0000D5,$52525E,$4C4B67,$3C3B8C,$3C3B94,$6D6D6D,$0000D9,$0000F6,$000000,$000000,$000000,$00009B,$00009B,$909090,$472C36,$402A33,$524B4E,$535371,$0000CA,$0000D2,$0000D6,$3939B6,$4D4649,$39282E,$39282E,$4D4649,$3939B6,$0000D6,$0000D2,$0000CA,$535371,$524B4E,$402A33,$472C36,$909090,$00009B,$00009B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$C8C8C8,$B2B2B2,$A0A0A0,$929292,$888888,$808080,$954F03,$964E00,$964E00,$954F03,$818181,$898989,$949494,$A3A3A3,$B5B5B5,$CACACA,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$727272,$403EA0,$403EA0,$3E3D94,$4E4E6F,$57575A,$4A4A92,$50505A,$545454,$4A495E,$3C3C82,$3D3C89,$3E3C91,$3E3D93,$3E3D93,$3E3C91,$3D3C89,$3C3C82,$4A495E,$545454,$4F4F5B,$494994,$575759,$4E4E6F,$3E3D94,$403EA0,$403EA0,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$0000B0,$000096,$9D9D9D,$532F3D,$4E2E3B,$472B37,$5A5055,$656565,$47479E,$49499A,$554C50,$402A33,$422B34,$422B34,$402A33,$554C50,$49499A,$47479E,$656565,$5A5055,$472B37,$4E2E3B,$532F3D,$9D9D9D,$000096,$0000B0,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$EBEBEB,$BABABA,$A7A7A7,$979797,$8C8C8C,$848484,$7E7E7E,$6D4419,$693600,$693600,$6D4419,$7F7F7F,$858585,$8D8D8D,$999999,$A8A8A8,$BCBCBC,$ECECEC,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$797979,$4542A8,$4643B4,$4543AE,$4442A5,$43409B,$413F93,$403E8D,$403E8B,$413F90,$423F94,$43419D,$4342A3,$4442A6,$4442A6,$4342A3,$43419D,$423F94,$413F90,$403E8B,$403E8D,$413F93,$43409B,$4442A5,$4543AE,$4643B4,$4542A8,$797979,$0000D9,$0000F6,$000000,$000000,$0000A8,$0000CA,$94949E,$84737A,$603244,$603244,$5A3142,$532F3D,$4D2D3B,$4A2C38,$4A2C38,$4C2D3A,$502E3B,$522E3D,$522E3D,$502E3B,$4C2D3A,$4A2C38,$4A2C38,$4D2D3B,$532F3D,$5A3142,$603244,$603244,$84737A,$94949E,$0000CA,$0000AD,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$EEEEEE,$BFBFBF,$ACACAC,$9C9C9C,$909090,$878787,$808080,$7C7C7C,$5A4A39,$3E2000,$3E2000,$5A4A39,$7D7D7D,$818181,$878787,$919191,$9D9D9D,$AEAEAE,$C0C0C0,$EFEFEF,$FFFFFF,$000000,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$7B7B7B,$4A47B4,$7972A1,$8B8B97,$817FA0,$544FBE,$4C48B9,$4947AE,$4946AA,$4946AA,$4946AE,$4A47B2,$4A47B6,$4B47B6,$4B47B6,$4A47B6,$4A47B2,$4946AE,$4946AA,$4946AA,$4947AE,$4C48B9,$544FBE,$817FA0,$8B8B9A,$7972A1,$4A47B4,$7B7B7B,$0000D9,$0000F6,$000000,$0000A8,$0000CA,$8B8B94,$7F6F75,$643449,$6B354D,$723B52,$6D364E,$68344B,$623347,$5C3144,$5B3143,$5C3144,$603246,$623347,$623347,$603246,$5C3144,$5B3143,$5C3144,$623347,$68344B,$6D364E,$723B52,$6B354D,$643449,$7F6F75,$8B8B94,$0000CA,$0000A8,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$F0F0F0,$C4C4C4,$B0B0B0,$A0A0A0,$939393,$898989,$828282,$7E7E7E,$7B7B7B,$666461,$393129,$393129,$676562,$7B7B7B,$7E7E7E,$838383,$8A8A8A,$949494,$A1A1A1,$B1B1B1,$C5C5C5,$F0F0F0,$FFFFFF,$000000,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$7B7B7B,$4E4DB7,$6F6FB4,$0000D3,$6F6FD1,$9797A0,$8D8CAA,$726CCC,$6C69C8,$6560C6,$5B59C2,$5754C0,$534FBD,$4F4EBC,$4F4EBC,$534FBD,$5754C0,$5B59C2,$6560C6,$6C69C8,$726CCC,$8D8CAA,$9A9A9D,$7777CE,$0000D9,$6B6BBE,$4E4DB7,$7B7B7B,$0000D9,$0000F6,$00009B,$0000CE,$8B8B94,$7E6C74,$9696B0,$BBBBBB,$CACACA,$B6A1A9,$906175,$845269,$753C56,$703750,$6E364F,$6D364E,$6E364F,$6E374F,$6E374F,$6E364F,$6D364E,$6E364F,$703750,$753C56,$845269,$906175,$B6A1A9,$CACACA,$BBBBBB,$9696B0,$7E6C74,$8B8B94,$0000CE,$00009B,$000000,$000000,$000000,$FFFFFF,$F1F1F1,$C8C8C8,$B4B4B4,$A3A3A3,$959595,$8B8B8B,$848484,$7F7F7F,$7C7C7C,$7A7A7A,$797979,$797979,$797979,$797979,$7A7A7A,$7C7C7C,$7F7F7F,$848484,$8B8B8B,$969696,$A3A3A3,$B4B4B4,$C8C8C8,$F1F1F1,$FFFFFF,$000000,$000000,$000000 
  Data.l $0000ED,$0000F1,$777777,$5350B4,$6363A3,$0000F3,$0000FB,$0000CA,$7272D3,$9D9D9F,$9191AE,$7D79CE,$6B69CA,$605DC4,$5957C1,$5654C0,$5654C0,$5957C1,$605DC4,$6B69CA,$7D79CE,$9191AE,$9D9D9D,$7B7BCE,$0000C0,$0000FB,$0000F3,$5B5BB4,$5350B6,$777777,$0000D9,$0000F6,$0000D6,$8080B8,$847179,$A4A4A4,$0000A8,$0000DE,$00006B,$D1D1D1,$D3D3D3,$BDA5AE,$925C74,$89516A,$804660,$7A3D58,$773A55,$773A55,$773A55,$773A55,$7A3D58,$804660,$89516A,$925C74,$BDA5AE,$D3D3D3,$D1D1D1,$00006B,$0000DE,$0000A8,$A4A4A4,$847179,$8080B8,$0000D6,$000000,$000000,$FFFFFF,$F3F3F3,$CDCDCD,$B8B8B8,$A6A6A6,$979797,$8D8D8D,$858585,$808080,$7D7D7D,$7B7B7B,$797979,$797979,$797979,$797979,$797979,$797979,$7B7B7B,$7D7D7D,$808080,$858585,$8D8D8D,$979797,$A6A6A6,$B8B8B8,$CDCDCD,$F3F3F3,$FFFFFF,$000000,$000000 
  Data.l $0000ED,$0000F1,$777777,$5756AE,$696691,$797979,$4E4ED2,$0000F3,$0000FB,$0000CA,$6B6BCA,$929292,$8584A3,$6965C6,$615DC4,$5D5AC4,$5D5AC4,$615DC4,$6965C6,$8584A3,$929292,$7272C2,$0000C0,$0000F9,$0000F4,$4D4DD7,$77777B,$696691,$5756AE,$777777,$0000D9,$0000F6,$000073,$0000B7,$AAAAAA,$957B85,$B2B2B2,$8E8ECE,$0000D2,$0000DE,$00006B,$CCCCCC,$B59EA7,$915871,$8C516C,$864B66,$814460,$7F405B,$7F405B,$814460,$864B66,$8C516C,$915871,$B59EA7,$CCCCCC,$00006B,$0000DE,$0000D2,$8E8ECE,$B2B2B2,$957B85,$AAAAAA,$0000B7,$000073,$000000,$FFFFFF,$F7F7F7,$D2D2D2,$BCBCBC,$A9A9A9,$9A9A9A,$8D8D8D,$868686,$808080,$7D7D7D,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7D7D7D,$808080,$868686,$8D8D8D,$9A9A9A,$A9A9A9,$BCBCBC,$D2D2D2,$F7F7F7,$FFFFFF,$000000 
  Data.l $0000ED,$0000F1,$727272,$5D5AB2,$5D5AB2,$5A58A8,$636188,$676777,$4D4DD3,$0000F4,$0000FB,$0000C4,$6B6B9D,$6963C6,$6963C6,$6963C6,$6963C6,$6963C6,$6963C6,$727294,$0000C0,$0000F8,$0000F4,$4B4BD7,$66667D,$636188,$5A58A8,$5D5AB2,$5D5AB2,$727272,$0000D9,$0000F6,$000025,$0000ED,$9B9BCA,$A28391,$7E3D59,$A0828F,$B3B3B3,$8989CB,$0000D2,$0000DE,$8383DA,$C4C4C4,$AC909D,$894964,$864661,$84425E,$84425E,$864661,$894964,$AC909D,$C4C4C4,$8383DA,$0000DE,$0000D2,$8989CB,$B3B3B3,$A0828F,$7E3D59,$A28391,$9B9BCA,$0000ED,$000025,$FFFFFF,$FBFBFB,$DCDCDC,$C4C4C4,$AFAFAF,$9E9E9E,$909090,$878787,$818181,$7D7D7D,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7D7D7D,$818181,$878787,$909090,$9E9E9E,$AFAFAF,$C4C4C4,$DCDCDC,$FBFBFB,$FFFFFF 
  Data.l $0000ED,$0000F1,$6F6F6F,$6763B6,$6966B7,$6661AE,$605DA6,$5D5AA1,$636185,$636381,$4C4CD3,$0000F7,$5A5AA7,$6D6BC2,$726CC6,$776DCA,$776DCA,$726CC6,$6D6BC2,$60609B,$0000F6,$4A4AD6,$606083,$636185,$5D5AA1,$605DA6,$6661AE,$6966B7,$6763B6,$6F6F6F,$0000D9,$0000F6,$000000,$000077,$0000B7,$C3C3C3,$86425E,$83405C,$7E3F59,$977B86,$A9A9A9,$8484C6,$0000D6,$0000DE,$A7A7C8,$86425E,$86425E,$884360,$884360,$86425E,$86425E,$A7A7C8,$0000DE,$0000D2,$8484C6,$A9A9A9,$977B86,$7E3F59,$83405C,$86425E,$C3C3C3,$0000B7,$000077,$000000,$FFFFFF,$EBEBEB,$D1D1D1,$B9B9B9,$A5A5A5,$959595,$898989,$818181,$7D7D7D,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7D7D7D,$818181,$898989,$959595,$A5A5A5,$B9B9B9,$D1D1D1,$EBEBEB,$FFFFFF 
  Data.l $0000ED,$0000F1,$727272,$776FBC,$7D79C2,$7D77C0,$726DB9,$6B6BAA,$6966A6,$6765A5,$6B6B89,$60608F,$726F96,$7F7BC2,$8180CC,$8381CF,$8381CF,$8180CC,$7F7BC2,$726F96,$61618B,$6B6B89,$6765A5,$6966A6,$6B6BAA,$726DB9,$7D77C0,$7D79C2,$776FBC,$727272,$0000D9,$0000F6,$000000,$000025,$0000ED,$A1A1CF,$A98A97,$894460,$83425B,$7E4059,$7B3F58,$987C86,$B0B0B0,$8E8ECE,$A58697,$8C4461,$8E4662,$8E4763,$8E4763,$8E4662,$8C4461,$A58697,$8E8ECE,$B0B0B0,$987C86,$7B3F58,$7E4059,$83425B,$894460,$A98A97,$A1A1CF,$0000ED,$000025,$000000,$FFFFFF,$E5E5E5,$CACACA,$B3B3B3,$A0A0A0,$919191,$868686,$7F7F7F,$7C7C7C,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7C7C7C,$7F7F7F,$868686,$919191,$A0A0A0,$B3B3B3,$CACACA,$E5E5E5,$FFFFFF 
  Data.l $0000ED,$0000F1,$727272,$8381C2,$8784CC,$8885D1,$8784CC,$8482C4,$8280BE,$807DB9,$7F7BB6,$817DBA,$8381C1,$8683CA,$8885D1,$8987D3,$8987D3,$8885D1,$8683CA,$8381C1,$817DBA,$7F7BB6,$807DB9,$8280BE,$8482C4,$8784CC,$8885D1,$8784CC,$8381C2,$727272,$0000D9,$0000F6,$000000,$000000,$00007B,$0000B7,$BBBBBB,$8B4862,$8A4762,$864660,$85465E,$884761,$8E4863,$904A66,$934C69,$944F6A,$944E69,$934C69,$934C69,$944E69,$944F6A,$934C69,$904A66,$8E4863,$884761,$85465E,$864660,$8A4762,$8B4862,$BBBBBB,$0000BD,$00007B,$000000,$000000,$FFFFFF,$E4E4E4,$C9C9C9,$B3B3B3,$A0A0A0,$919191,$868686,$7F7F7F,$7C7C7C,$7B7B7B,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7B7B7B,$7C7C7C,$7F7F7F,$868686,$919191,$A0A0A0,$B3B3B3,$C9C9C9,$E4E4E4,$FFFFFF 
  Data.l $0000ED,$0000F1,$727272,$8A88C6,$8F8CD2,$9290D7,$9290D7,$918FD5,$8F8CD2,$8C8ACE,$8B89CA,$8B89CA,$8D8ACF,$8F8CD2,$918FD5,$9290D7,$9290D7,$918FD5,$8F8CD2,$8D8ACF,$8B89CA,$8B89CA,$8C8ACE,$8F8CD2,$918FD5,$9290D7,$9290D7,$8F8CD2,$8A88C6,$727272,$0000D9,$0000F6,$000000,$000000,$000025,$0000ED,$9999C7,$A98B97,$974F69,$9A536D,$9A536C,$9D566F,$A15C75,$A36077,$A15D75,$9F5972,$9D566F,$9A536C,$9A536C,$9D566F,$9F5972,$A15D75,$A36077,$A15C75,$9D566F,$9A536C,$9A536D,$974F69,$A98B97,$9999C7,$0000ED,$000025,$000000,$000000,$FFFFFF,$E6E6E6,$CDCDCD,$B6B6B6,$A4A4A4,$949494,$898989,$818181,$7E7E7E,$7C7C7C,$7A7A7A,$7A7A7A,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$797979,$7A7A7A,$7A7A7A,$7C7C7C,$7E7E7E,$818181,$898989,$949494,$A4A4A4,$B6B6B6,$CDCDCD,$E6E6E6,$FFFFFF 
  Data.l $0000ED,$0000F1,$727272,$9291CC,$9696D3,$9897DA,$9A98DB,$9A98DB,$9A98DB,$9B98DB,$9D9ADB,$9D9BDB,$9D9BDB,$9D9BDB,$9D9ADB,$9B98DB,$9B98DB,$9D9ADB,$9D9BDB,$9D9BDB,$9D9BDB,$9D9ADB,$9B98DB,$9A98DB,$9A98DB,$9A98DB,$9897DA,$9696D3,$9291CC,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$00007F,$0000A0,$B9B9B9,$A25D73,$AF7586,$B87E90,$B87F91,$CBB2BB,$B3B3DB,$BFA5B0,$A96B7D,$A66679,$A56477,$A56477,$A66679,$A96B7D,$BFA5B0,$B3B3DB,$CBB2BB,$B87F91,$B87E90,$AF7586,$A25D73,$B9B9B9,$0000A4,$00007B,$000000,$000000,$000000,$FFFFFF,$EEEEEE,$D4D4D4,$BEBEBE,$ABABAB,$9A9A9A,$8D8D8D,$858585,$818181,$7E7E7E,$7C7C7C,$7B7B7B,$7A7A7A,$7A7A7A,$7B7B7B,$7B7B7B,$7B7B7B,$7B7B7B,$7A7A7A,$7A7A7A,$7B7B7B,$7C7C7C,$7E7E7E,$818181,$858585,$8D8D8D,$9A9A9A,$ABABAB,$BEBEBE,$D4D4D4,$EEEEEE,$FFFFFF 
  Data.l $0000ED,$0000F1,$727272,$9897CF,$A09FD7,$A3A1DD,$A4A2DF,$A5A3DF,$A6A4DF,$A9A7E0,$B2ACE2,$B6B4E2,$B7B4E3,$B4AEE2,$ACA9E1,$A9A6E0,$A9A6E0,$ACA9E1,$B4AEE2,$B7B4E3,$B6B4E2,$B2ACE2,$A9A7E0,$A6A4DF,$A5A3DF,$A4A2DF,$A3A1DD,$A09FD7,$9897CF,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$000070,$0000BD,$B2B2B2,$A66677,$BE8596,$C796A4,$D4C3C8,$B5B5E3,$0000F5,$9090E3,$B77B8C,$B57989,$B57A8A,$B57A8A,$B57989,$B77B8C,$9090E3,$0000F5,$B9B9E2,$D4C3C8,$C796A4,$BE8596,$A66677,$B2B2B2,$0000BD,$000070,$000000,$000000,$000000,$FFFFFF,$F8F8F8,$DFDFDF,$C8C8C8,$B4B4B4,$A3A3A3,$949494,$8A8A8A,$858585,$818181,$7F7F7F,$7D7D7D,$7D7D7D,$7E7E7E,$7F7F7F,$7F7F7F,$7F7F7F,$7F7F7F,$7E7E7E,$7D7D7D,$7D7D7D,$7F7F7F,$818181,$858585,$8A8A8A,$949494,$A3A3A3,$B4B4B4,$C8C8C8,$DFDFDF,$F8F8F8,$FFFFFF 
  Data.l $0000ED,$0000F1,$777777,$A3A1D3,$A9A7DD,$AEAAE2,$B2ACE2,$B4AEE2,$B7B6E3,$BEBCE4,$C4C2E5,$CAC6E7,$CCC8E7,$C6C4E6,$C2BEE4,$BEBAE4,$BEBAE4,$C2BEE4,$C6C4E6,$CCC8E7,$CAC6E7,$C4C2E5,$BEBCE4,$B7B6E3,$B4AEE2,$B2ACE2,$AEAAE2,$A9A7DD,$A3A1D3,$777777,$0000D9,$0000F6,$000000,$000000,$000000,$0000C0,$7171C6,$A88E94,$AE707C,$C48F9B,$D5C3C7,$B8B8E2,$0000F5,$0000ED,$CFCFD3,$BF8693,$C38E99,$C6949F,$C6949F,$C38E99,$BF8693,$CFCFD3,$0000ED,$0000F5,$B8B8E2,$D5C3C7,$C48F9B,$AE707C,$A88E94,$7171C6,$0000C0,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$F7F7F7,$D5D5D5,$C0C0C0,$ACACAC,$9C9C9C,$919191,$8A8A8A,$868686,$838383,$828282,$838383,$858585,$868686,$878787,$878787,$868686,$858585,$838383,$828282,$838383,$868686,$8A8A8A,$919191,$9C9C9C,$ACACAC,$C0C0C0,$D5D5D5,$F7F7F7,$FFFFFF,$FFFFFF 
  Data.l $0000F3,$0000EB,$7B7B7B,$AEACDB,$BAB7E2,$BEBCE4,$BEBCE4,$C0BEE4,$C4C2E6,$CCCAE7,$B6B6C2,$AAAAAA,$AEAEAE,$BCBCC6,$D1D1E8,$CFCCE8,$CFCCE8,$D1D1E8,$BCBCC6,$AEAEAE,$AAAAAA,$B6B6C2,$CCCAE7,$C4C2E6,$C0BEE4,$BEBCE4,$BEBCE4,$BAB7E2,$AEACDB,$7B7B7B,$0000D1,$0000F7,$000000,$000000,$00002B,$0000F8,$9A9AA7,$A2666F,$B77A82,$CEB9BD,$B2B2DE,$0000F2,$0000FB,$8484E2,$CBB2B6,$CA98A0,$D2A9AE,$D8B5BC,$D8B5BC,$D2A9AE,$CA98A0,$CBB2B6,$8888E1,$0000FB,$0000F2,$B2B2DE,$CEB9BD,$B77A82,$A2666F,$9A9AA7,$0000F8,$00002B,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$E2E2E2,$A6A6A6,$9A9A9A,$929292,$8C8C8C,$8A8A8A,$8A8A8A,$8C8C8C,$8F8F8F,$929292,$939393,$939393,$929292,$8F8F8F,$8C8C8C,$8A8A8A,$8A8A8A,$8C8C8C,$919191,$999999,$A6A6A6,$E2E2E2,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000 
  Data.l $0000A3,$0000F8,$7F7F7F,$C1C0E2,$C6C6E6,$CACAE7,$CCCAE7,$CCCCE7,$D1CFE8,$D3D3E9,$A1A1A1,$0000A9,$0000F5,$A1A1B6,$BABAC2,$DAD9EA,$DAD9EA,$BABAC2,$A2A2B4,$0000F4,$0000BD,$A1A1A1,$D3D3E9,$D1CFE8,$CCCCE7,$CCCAE7,$CACAE7,$C6C6E6,$C1C0E2,$7F7F7F,$0000F7,$0000D6,$000000,$000000,$00006B,$0000BD,$AAAAAA,$AF7276,$CCB5B7,$B6B6DD,$0000F2,$000063,$0000ED,$C8C8CD,$CA989D,$D8B0B6,$E3DADB,$D0D0EF,$D0D0EF,$E3DADB,$D8B0B6,$CA989D,$C8C8CD,$0000ED,$000063,$0000F2,$B6B6DD,$CCB5B7,$AF7276,$AAAAAA,$0000BD,$00006B,$000000,$000000,$000000,$000000,$000000,$000000,$282828,$FFFFFF,$DFDFDF,$A4A4A4,$9B9B9B,$969696,$959595,$969696,$9A9A9A,$9E9E9E,$A1A1A1,$A3A3A3,$A3A3A3,$A1A1A1,$9D9D9D,$999999,$959595,$949494,$959595,$9A9A9A,$A3A3A3,$DEDEDE,$FFFFFF,$282828,$000000,$000000,$000000,$000000 
  Data.l $00003D,$0000FF,$5B5BAE,$9D9DA6,$D3D3EA,$D6D5EA,$D6D5EA,$D7D6EA,$D7D7EA,$A9A9B7,$8787BD,$0000F8,$0000FD,$00009D,$9F9FA4,$E1E1ED,$E1E1ED,$9F9FA4,$000097,$0000FD,$0000F8,$8686BE,$A9A9B7,$D7D7EA,$D7D6EA,$D6D5EA,$D6D5EA,$D3D3EA,$9D9DA6,$5D5DAA,$0000FE,$000045,$000000,$000000,$0000C0,$7777CE,$BBA1A1,$CFBCBC,$BCBCE1,$0000F2,$000063,$0000CA,$8989E2,$CEBBBB,$D5ACAC,$E0C4C4,$E7E7EB,$0000E5,$0000E5,$E7E7EB,$E0C4C4,$D5ACAC,$CEBBBB,$8989E2,$0000CA,$000063,$0000F2,$BCBCE1,$CFBCBC,$BBA1A1,$7777CE,$0000C0,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$AFAFAF,$A7A7A7,$A3A3A3,$A3A3A3,$A6A6A6,$AAAAAA,$B0B0B0,$B5B5B5,$B8B8B8,$B7B7B7,$B4B4B4,$AFAFAF,$A9A9A9,$A4A4A4,$A1A1A1,$A0A0A0,$A5A5A5,$ADADAD,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$000000 
  Data.l $000037,$0000DF,$0000F4,$858585,$DDDDEB,$DFDFED,$DFDFED,$DFDFED,$DFDDEB,$8D8D8D,$0000C0,$0000F4,$0000C0,$0000FC,$9F9FA5,$C8C8D1,$C8C8D1,$9F9FA4,$0000FA,$0000DB,$0000E9,$0000D2,$8D8D8D,$DFDDEB,$DFDFED,$DFDFED,$DFDFED,$DDDDEB,$858585,$0000F3,$0000F4,$000038,$000000,$00002B,$0000F5,$B7B7C5,$D3C1C0,$C1C1E6,$0000F2,$000063,$000000,$0000ED,$D5D5D9,$DAB6B3,$DFC3C0,$E5DCDB,$9F9FF5,$0000CA,$0000CA,$9F9FF5,$E5DCDB,$DFC3C0,$DAB6B3,$D5D5D9,$0000ED,$000000,$000063,$0000F2,$C1C1E6,$D3C1C0,$B7B7C5,$0000F5,$00002B,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$E8E8E8,$BCBCBC,$B5B5B5,$B2B2B2,$B4B4B4,$B9B9B9,$BFBFBF,$E8E8E8,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$E7E7E7,$BDBDBD,$B6B6B6,$B1B1B1,$AFAFAF,$B1B1B1,$B9B9B9,$E8E8E8,$FFFFFF,$000000,$000000,$000000,$000000,$000000 
  Data.l $000000,$000043,$0000FE,$6363BA,$ACACB6,$E5E5EF,$E7E7F0,$E5E5EF,$AEAEB7,$7979A6,$0000FA,$000084,$00003A,$0000FC,$00009B,$AEAEB4,$AEAEB4,$000096,$0000FC,$00003B,$00006D,$0000FC,$7777A8,$AEAEB7,$E5E5EF,$E7E7F0,$E5E5EF,$ACACB6,$6666B7,$0000FF,$00004D,$000000,$000000,$00006B,$0000BD,$D3D3D3,$C3C3E7,$0000F2,$000063,$000000,$0000CA,$9999F0,$E4DBDA,$E7D2CE,$E7DEDD,$E3E3E8,$0000E1,$000051,$000051,$0000E1,$E3E3E8,$E7DEDD,$E7D2CE,$E4DBDA,$9999F0,$0000CA,$000000,$000063,$0000F2,$C3C3E7,$D3D3D3,$0000BD,$00006B,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$D5D5D5,$CBCBCB,$C6C6C6,$C5C5C5,$C9C9C9,$D0D0D0,$EFEFEF,$FFFFFF,$0F0F0F,$000000,$000000,$1A1A1A,$FFFFFF,$EEEEEE,$CDCDCD,$C5C5C5,$C0C0C0,$C1C1C1,$C7C7C7,$D2D2D2,$FFFFFF,$000000,$000000,$000000,$000000,$000000 
  Data.l $000000,$000039,$0000E1,$0000F4,$949494,$EBEAF1,$EBEBF1,$EBEAF1,$949494,$0000B2,$0000F8,$000048,$000000,$000096,$0000FD,$AEAEAE,$AEAEAE,$0000FB,$0000BD,$000000,$000042,$0000F4,$0000C2,$949494,$EBEAF1,$EBEBF1,$EBEAF1,$949494,$0000EB,$0000F4,$00003A,$000000,$000000,$0000BD,$00006B,$BFBFE4,$0000ED,$000063,$000000,$000000,$0000F2,$E4E4EC,$EFE7E4,$EFDFDB,$E9E9E9,$000070,$0000CA,$000000,$000000,$0000CA,$000070,$E9E9E9,$EFDFDB,$EFE7E4,$E4E4EC,$0000F2,$000000,$000000,$000063,$0000ED,$BFBFE4,$00006B,$0000BD,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FAFAFA,$E5E5E5,$DCDCDC,$D9D9D9,$DBDBDB,$F3F3F3,$FFFFFF,$FFFFFF,$000000,$000000,$000000,$000000,$000000,$010101,$FFFFFF,$FFFFFF,$F1F1F1,$D5D5D5,$D3D3D3,$D7D7D7,$E1E1E1,$F9F9F9,$FFFFFF,$000000,$000000,$000000,$000000 
  Data.l $000000,$000036,$00004B,$0000FF,$7B7BCE,$CECED1,$F0F0F3,$CECED1,$8787BA,$0000F9,$000088,$000038,$000000,$000039,$0000FD,$000096,$000091,$0000FD,$000039,$000000,$000037,$000086,$0000FA,$8585BD,$CECED1,$F0F0F3,$CECED1,$7F7FCA,$0000FE,$00004D,$000036,$000000,$00002B,$0000F5,$AFAFE4,$0000ED,$000063,$000000,$000000,$000025,$0000C5,$0000B0,$ECECF1,$F2EBE9,$E8E8EC,$0000DE,$000056,$000000,$000000,$000056,$0000DE,$E8E8EC,$F2EBE9,$ECECF1,$0000B0,$0000C5,$000025,$000000,$000000,$000063,$0000ED,$AFAFE4,$0000F5,$00002B,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$F6F6F6,$EFEFEF,$F8F8F8,$FFFFFF,$FFFFFF,$191919,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$272727,$FFFFFF,$F7F7F7,$E8E8E8,$EAEAEA,$F1F1F1,$FEFEFE,$FFFFFF,$000000,$000000,$000000,$000000 
  Data.l $000000,$000000,$00003A,$0000E3,$0000F3,$B2B2B2,$BABABA,$B2B2B2,$0000A2,$0000F8,$00004E,$000000,$000000,$000000,$000096,$0000FC,$0000F9,$0000C0,$000000,$000000,$000000,$000045,$0000F7,$0000AE,$B2B2B2,$BABABA,$B2B2B2,$0000E5,$0000F4,$00003C,$000000,$000000,$000067,$0000E1,$0000ED,$000067,$000000,$000000,$000000,$000000,$000025,$0000C5,$0000B0,$ECECF1,$000070,$0000CA,$000000,$000000,$000000,$000000,$0000CA,$000070,$ECECF1,$0000B0,$0000C5,$000025,$000000,$000000,$000000,$000000,$000067,$0000ED,$0000E1,$000067,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$323232,$0A0A0A,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$0D0D0D,$FFFFFF,$FFFFFF,$FEFEFE,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000 
  Data.l $000000,$000000,$000000,$00004F,$0000FE,$0000E2,$0000C8,$0000DD,$0000FE,$00008D,$000036,$000000,$000000,$000000,$000037,$0000FD,$0000FD,$000038,$000000,$000000,$000000,$000036,$00008D,$0000FE,$0000DD,$0000C8,$0000E2,$0000FE,$000050,$000000,$000000,$000000,$0000BD,$0000FD,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$0000C5,$0000B0,$0000DE,$00005A,$000000,$000000,$000000,$000000,$00005A,$0000DE,$0000B0,$0000C5,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000067,$0000FD,$0000BD,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$2A2A2A,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000 
  Data.l $000000,$000000,$000000,$000037,$00007B,$0000FB,$0000F7,$0000F9,$0000A0,$000037,$000000,$000000,$000000,$000000,$000000,$000045,$000045,$000000,$000000,$000000,$000000,$000000,$000037,$0000A0,$0000F9,$0000F7,$0000FB,$00007B,$000037,$000000,$000000,$000000,$0000C0,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$0000C0,$0000A8,$000000,$000000,$000000,$000000,$000000,$000000,$0000A8,$0000C0,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000067,$0000C0,$000000,$000000,$000000,$000000,$FFFFFF,$FFFFFF,$FFFFFF,$080808,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$0A0A0A,$FFFFFF,$FFFFFF,$FFFFFF,$000000,$000000,$000000,$000000 

EndDataSection
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

comtois a écrit :Sympa ton code.
; problème à résoudre:
; #PB_Window_ScreenCentered ne centre pas l'écran graphique si le joueur clique sur le bouton agrandir.
Ben supprime le bouton :)
merci comtois. Alors, heu, supprimer le bouton agrandir, tel n'est pas mon but( si le joueur veut masquer tout ce qu'il y autour de la fenêtre, et bien faut lui donner cette possibilité).
Ollivier a écrit :Salut Beauregard,

En effet, très jolis graphismes stockées en Datas. Sinon pour ton petit souci, tu as juste un chiffre à modifier : le 0 de l'«avant-avant-dernier» paramètre dans OpenWindowedScreen() doit être remplacé par 1.
merci Ollivier, c'est une nouvelle possibilité intéressante. Mais sur nos écran lcd, c'est pas glop( image flou). La lutte continu...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Personnellement, en tant que «joueur», je ne me sentirais pas gêné par ça.

Si tu es perfectionniste à ce point, il va te falloir une batterie de sprites dont la taille sera fonction du format voulu par le joueur, un petit peu comme une police de caractères, ce qui va augmenter la complexité de ton code pour peu de choses.

Sinon, il y a une autre méthode un peu plus dynamique : tu stockes tes sprites avec la taille maximum dans les datas. (ex 256*256)
A chaque redimensionnement de fenêtre, tu duppliques les sprites d'origine et les adapte à la taille désirée (réduction de taille) avec un lissage pour éviter de perdre en graphisme.

Dans ce cas, toutes tes positions doivent devenir des nombres flottants. Tu dois calculer les coefs exacts. En effet, c'est une lutte !

Finalement, la méthode de Comtois n'est peut-être pas plus mal au départ, le temps de terminer le déroulement du jeu...

Ollivier
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Très sympa :)
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Message par Huitbit »

Jolis sprites :D !
Quel logiciel utilises-tu?

Par contre je suis invincible :? (pas dans la vraie vie bien sûr!).

Hasta la vista!
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

merci à tous ! :)
Huitbit a écrit :Jolis sprites :D !
Quel logiciel utilises-tu?
Par contre je suis invincible :? (pas dans la vraie vie bien sûr!).
Hasta la vista!
une vieille version de toshop( 6). Pour du pixel art, il y a le freeware Ultimate Paint qui est très bien. Ce code est en fait une réaction à un questionnement dans le forum débutant. Le but étant la bonne utilisation des listes chainées, dans le cadre d'un jeu avec beaucoup de clones.
ah, et j'ai oublié de préciser que l'image est d'une taille de 96*32,
et le précieux convertisseur:
http://www.purebasic.fr/french/viewtopi ... highlight=
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

0.3

Message par beauregard »

Je vous propose aujourd'hui une petite mise à jour.

Un problème qui me turlupine depuis quelques temps: si on active RedimensionnementAuto, c'est super car le joueur peut agrandir la fenêtre ou la redimensionner à sa convenance. Mais, il y a un mais:
RedimensionnementAuto redimensionne la fenêtre dès le lancement du programme, et le résultat n'est pas net( le joueur voit une image altèrée).

Un image valant mille discours, à gauche RedimensionnementAuto à 0, et à droite RedimensionnementAuto mis à 1:
Image
que faire :?:
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

source 0.3

Message par beauregard »

Code : Tout sélectionner

;
; Les Listes Chaînées (Linked Lists), tout une aventure !
; vers l'infini 0.3 - video game - PC - mode fenêtre - 08/06/2008 - source PureBasic 4.20
; France - pseudo: beauregard
; touches flêchées gauche et droite, X( tir) et F( image/seconde)

; problème à résoudre:
; RedimensionnementAuto qui redimensionne sans que le joueur redimensionne quoique ce soit: c'est pas net.

; prochains objectifs:
; -> hi-score + sauvegarde sur .dat
; -> manette
; -> revoir design tir du gentil + zoom rapide au départ du tir.
; -> explosion des brutes.
; -> life en lettre transparente afin de bien signifier au joueur qu'il vient de gagner une vie.
; -> boss de fin de niveau( grande soucoupe protégé par de petits blocs destructibles + séquence de tirs orientés)...
; ... et ré-utiliser tête 3eme envahisseur( rajout d'une bouche rire).
; -> après avoir terminé 3 niveaux, affrontement avec ce boss( à chaque rencontre: +de blocs +de tirs orientés, vitesse...)
; -> bruitages

If InitMouse ()=0 Or InitKeyboard ()=0 Or InitSprite ()=0  Or InitSprite3D ()=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
Global manette.b
If InitJoystick():manette=1:EndIf ; pas encore utilisé dans cette version
UsePNGImageDecoder()
; °°°°°°°°°°°°°°°°°°°°  fonte °°°°°°°°°°°°°°°°°°°°°°°°°°
LoadFont ( 0 , "Comic Sans Ms" ,16, #PB_Font_Bold)
LoadFont ( 1 , "Comic Sans Ms" ,30, #PB_Font_Bold)

Enumeration ; ici, on donne un petit nom à nos sprites( non, chuis pas un numéro !):
  #shipb
  #envahisseurs
  #bouche ; pour le 3eme 
  #tirbruteA1  
  #tirbruteA2
  #tirgentil
  #boum:#boum3D
  
  #fleche:#fleche3D  
  #irepere
EndEnumeration

Structure objet ;- opération de clonage... 
 id.w ; id comme identité
 x.w
 y.w
 tempoA.w
 tempoB.w 
 boutonA.b
 boutonB.b 
 taille.w 
EndStructure
Global NewList bruteA.objet() ; 
Global NewList bruteB.objet() ; 
Global NewList bruteC.objet() ; 
Global NewList tirb.objet() ; tir brute
Global NewList tirg.objet() ; tir gentil
Global NewList etoile.objet() ; fond

Declare Affichageintro()
Declare Affichagelevel()

Declare Fetoile(p,l,classe) ; ordre donné depuis Affichagelevel(). p comme partie de l'écran concerné( gauche et droite)
Declare Affichagetoile()

Declare Ftirgentil(x,y)
Declare Affichagetirgentil()

Declare Affichageship()

Declare FbruteA()
Declare AffichagebruteA()

Declare FbruteB()
Declare AffichagebruteB()

Declare FbruteC()
Declare AffichagebruteC()

Declare Ftirbrute(x,y)
Declare Affichagetirbrute()

Declare Affichagegameover()
Declare Fin()


If OpenWindow ( 0 , 0, 0, 800, 600, "vers l'infini 0.3" , #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar| #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_ScreenCentered | #PB_Window_ScreenCentered ) 

; OpenWindowedScreen ( WindowID ( 0 ), 0, 0, 800, 600, 1, 1, 1) ; un ecran graphique dans la fenêtre avec un RedimensionnementAuto qui
; m'embête, car pas net: l'image est flou dès le démarrage ! 
 OpenWindowedScreen ( WindowID ( 0 ), 0, 0, 800, 600, 0, 1, 1) ; un ecran graphique dans la fenêtre toute simple.

 SetWindowColor(0, RGB (0, 0, 0))  
EndIf
KeyboardMode(#PB_Keyboard_International) 

; 5 images d'une taille de 64*64: vaisseau dirigé par le joueur.
; 16 images d'une taille de 64*48: vaisseau en démonstration pour l'intro.
; espace non encore utilisé d'une taille de 128*48.
; 1 image d'une taille de 128*48: titre du jeu
LoadSprite (#shipb,"infiniship.png");IncludeFile  "infinidata.pbi"

; 3 images d'une taille de 32*32:
If CreateSprite(#envahisseurs, 96, 32,0)

    StartDrawing(SpriteOutput(#envahisseurs))
        ; merci à Fortix( The Fortix    .::Convertor V1::.)
        Restore envahisseurs

        For ay=0 To 32-1
            For ax=0 To 96-1

                Read a.l
                Plot(ax,ay,a.l)

            Next ax
        Next ay
    StopDrawing()

    ay=0
    ax=0
EndIf

If CreateSprite(#bouche, 8, 6, 0); un peu de pixel art: bouche ouverte pour le 3eme envahisseur.

    StartDrawing(SpriteOutput(#bouche))
    
    ; 1ere ligne:
    LineXY (0, 0, 7, 0, RGB (211,0,0))
    ; 2eme ligne:    
    Plot(0, 1, RGB (185, 227, 250)):Plot(7, 1, RGB (185, 227, 250))
    LineXY (1, 1, 6, 1, RGB (255, 255, 255))
    ; 3eme et 4eme ligne:
    LineXY (0, 2, 7, 2, RGB (176, 27, 37))
    LineXY (0, 3, 7, 3, RGB (176, 27, 37))
    ; 5eme ligne:    
    Plot(0, 4, RGB (185, 227, 250)):Plot(1, 4, RGB (185, 227, 250))
    Plot(6, 4, RGB (185, 227, 250)):Plot(7, 4, RGB (185, 227, 250))
    LineXY (2, 4, 5, 4, RGB (255, 255, 255))
    ; 6eme ligne:
    LineXY (0, 5, 7, 5, RGB (211,0,0)) 
    
    StopDrawing ()   
EndIf

CreateSprite ( #tirbruteA1 , 16, 16) ; tir ennemi: image 1 
 StartDrawing ( SpriteOutput ( #tirbruteA1 ))
  BackColor ( RGB (0,0,0))
    Ellipse(8, 8, 8, 8 ,RGB(225, 0, 0)) 
    Ellipse(8, 8, 5, 5 ,RGB(255, 80, 80))
 StopDrawing ()
CreateSprite ( #tirbruteA2 , 16, 16) ; tir ennemi: image 2 
 StartDrawing ( SpriteOutput ( #tirbruteA2 ))
  BackColor ( RGB (0,0,0))
    Ellipse(8, 8, 8-2, 8 ,RGB(225, 0, 0)) 
    Ellipse(8, 8, 6-2, 6 ,RGB(255, 80, 80))
 StopDrawing ()
 
CreateSprite ( #tirgentil , 16, 16) 
 StartDrawing ( SpriteOutput ( #tirgentil ))
  BackColor ( RGB (0,0,0))
  Box (0, 0, 16, 16, RGB (35, 235, 235)):Box (1, 1, 14, 14, RGB (16, 138, 242))
 StopDrawing ()
 
; explosion:
CreateSprite ( #boum ,128, 128, #PB_Sprite_Texture ) 
 StartDrawing ( SpriteOutput ( #boum ))
  BackColor ( RGB (0,0,0))
  Circle(64, 64, 64, RGB (255, 161, 0))  

 StopDrawing ()
CreateSprite3D ( #boum3D , #boum ) ; sprite3D( utilisant les capacitées de votre carte vidéo).

 CreateSprite ( #irepere , 4, 4, 0 ) ; test utile pour le programmeur
 StartDrawing ( SpriteOutput ( #irepere ))
  BackColor ( RGB (0,0,0))
  Box (0,0, 5, 5, RGB (190, 27, 27))
 StopDrawing ()

Global etape.b=0, pause.b, lacheboutonX.b, level.b=1
Global Xgentil.w=400-32, Ygentil.w=600-96, score.w, vie.b=3, invuln.w=99, bonusvie.b, zoomboum.w, transpboum.w, zoomY.w
Global recharge.b, zutA.w
Global nbreis.b, numbruteA.b, numbruteB.b, numbruteC.b, posYbruteA.w=48*3, posYbruteB.w=48*2, posYbruteC.w=48
Global placementA.w, placementB.w, placementC.w, speedbrut.b=1, nbrdetruit.w
Global dirbruteA.b ; direction des bruteA
Global dirbruteB.b ; direction des bruteB
Global dirbruteC.b ; direction des bruteC

MouseLocate(400, 300)
; ******************************************************************************************************
Repeat ; Boucle principale
; ******************************************************************************************************
 Event= WindowEvent ()
 Start3D(); on place cette commande dès le début de la boucle principale. 
 
 ExamineKeyboard ()

; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
If pause=0:ReleaseMouse(0); on récupère la souris pour le jeu
  ExamineMouse()
EndIf
If pause>0:ReleaseMouse(1):EndIf; on libère la souris
If KeyboardPushed ( #PB_Key_P ) And pause=0:pause=1:EndIf
If KeyboardPushed ( #PB_Key_P )=0 And pause=1:pause=2:EndIf
If KeyboardPushed ( #PB_Key_P ) And pause=2:pause=3:EndIf
If KeyboardPushed ( #PB_Key_P )=0 And pause=3:pause=0:EndIf
; °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° 

If etape=0; *******
  Affichageintro()
EndIf

If etape=1; *******
  Affichagelevel(); + fabrication des étoiles
EndIf

If etape=10; ******* 

  ; fond étoilé
  Affichagetoile()
  
  If numbruteA<8:FbruteA():EndIf ; ordre de Fabrication des clones bruteA.
  If numbruteB<8 And level>1:FbruteB():EndIf ; ordre de Fabrication des clones bruteB.
  If numbruteC<8 And level>2:FbruteC():EndIf ; ordre de Fabrication des clones bruteC.

  Affichagetirbrute() ; ordre d'affichage des clones tirs brute.

  AffichagebruteA() ; ordre d'affichage des clones bruteA.
  AffichagebruteB() ; ordre d'affichage des clones bruteB.
  AffichagebruteC() ; ordre d'affichage des clones bruteC.

  Affichageship(); vaisseau du joueur
  
  ;- changement de niveau
  ; pour le 1er niveau, il y a 8 brutes à détruire.
  ; pour le 2eme niveau, il y a 16 brutes à détruire.
  ; pour le 3eme niveau, il y a 24 brutes à détruire...
  ; ... et provisoire la même chose pour tout les niveau suivant.  
  If (nbrdetruit>7 And level=1) Or (nbrdetruit>15 And level=2) Or (nbrdetruit>23 And level>2)
    level+1:etape=1
    numbruteA=0:numbruteB=0:numbruteC=0
    
    posYbruteA=48*3:posYbruteB=48*2:posYbruteC=48
    placementA=0:placementB=0:placementC=0
    dirbruteA=0:dirbruteB=0:dirbruteC=0; dans une même direction, pour un même but ;) 
    speedbrut=1:nbrdetruit=0    
  EndIf

  If (score>490 And bonusvie=0) Or (score>990 And bonusvie=1) Or (score>1490 And bonusvie=2) Or (score>1990 And bonusvie=3)
    bonusvie+1:vie+1 ; joueur gagne une vie tout les 500 pts
  EndIf
  If (score>2490 And bonusvie=4) Or (score>2990 And bonusvie=5) Or (score>3490 And bonusvie=6) Or (score>3990 And bonusvie=7)
    bonusvie+1:vie+1 ; joueur gagne une vie tout les 500 pts
  EndIf

  ClipSprite(#shipb, 0, 208, 64, 48):DisplayTransparentSprite( #shipb , 10, 10)
  StartDrawing ( ScreenOutput ())
    DrawingMode (1)
      DrawingFont ( FontID (0)) 
      FrontColor ( RGB (255,255,255))
      score$= Str (score) 
      FrontColor ( RGB (154,154,154)) :DrawText (350+1,20+1, "SCORE " +score$)
      FrontColor ( RGB (234,234,234)) :DrawText (350,20, "SCORE " +score$)
      DrawingFont ( FontID (1))
      vie$= Str (vie) 
      FrontColor ( RGB (164,21,21)) :DrawText (42+1, 4+1, "  " +vie$)
      FrontColor ( RGB (253,201,255)) :DrawText (42, 4, "  " +vie$)     
  StopDrawing ()
  
  ; Si invuln=100, alors explosion 1.
  ; Si invuln=101, alors explosion 2.  
  If vie<1 And invuln<100:etape=20:EndIf

EndIf; If etape=10

If etape=20; *******
  Affichagegameover()
EndIf 

 If KeyboardPushed ( #PB_Key_F ) And nbreis=0:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=1:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F ) And nbreis=2:nbreis+1:EndIf
 If KeyboardPushed ( #PB_Key_F )=0 And nbreis=3:nbreis=0:EndIf

 Gosub fps ; nombre d'image par seconde. 
 
 Stop3D(); on place cette commande à la fin de la boucle principale. 
 FlipBuffers(1) 
 ClearScreen(RGB(0,0,0))
; ******************************************************************************************************   
 If Event= #PB_Event_CloseWindow Or KeyboardPushed ( #PB_Key_Escape ):Fin():EndIf; si clique coin haut droit ou touche Esc, alors ferme fenêtre.
ForEver



fps:
If Val ( FormatDate ( "%ss" , Date ()))=sek 
    fps+1
Else
    FPS$= Str (fps)
    fps=0
EndIf
sek= Val ( FormatDate ( "%ss" , Date ()))
StartDrawing ( ScreenOutput ())
DrawingMode (1)
FrontColor ( RGB (255,255,255))
If nbreis=1 Or nbreis=2:DrawText (1,1, "FPS: " +FPS$)
vram=AvailableScreenMemory()
  vram$= Str (vram)
  FrontColor ( RGB (154,154,154)) :DrawText (1+1,80+1, "vram: " +vram$)
  FrontColor ( RGB (234,234,234)) :DrawText (1,80, "vram: " +vram$)
     
  zutA$= Str (zutA) 
  FrontColor ( RGB (154,154,154)) :DrawText (1+1,120+1, "zutA: " +zutA$)
  FrontColor ( RGB (234,234,234)) :DrawText (1,120, "zutA: " +zutA$)
EndIf
zutA=0

StopDrawing ()
Return

Procedure.l Affichageintro() ; titre + vaisseau du joueur vue sous toute les coutures...
Static tempoappui.b
Static tempointro.b
Static ishipintro.b

; titre:
ClipSprite(#shipb, 192, 208, 128, 48):DisplayTransparentSprite( #shipb , 400-64, 300-128)

; vaisseau du joueur vue sous toute les coutures:
If pause=0:tempointro+1:EndIf
If tempointro>18:tempointro=0
  ishipintro+1
  If ishipintro>15:ishipintro=0:EndIf
EndIf
If ishipintro<5:ClipSprite(#shipb, ishipintro*64, 64, 64, 48):EndIf
If ishipintro>4 And ishipintro<10:ClipSprite(#shipb, (ishipintro-5)*64, 112, 64, 48):EndIf
If ishipintro>9 And ishipintro<15:ClipSprite(#shipb, (ishipintro-10)*64, 160, 64, 48):EndIf
If ishipintro=15:ClipSprite(#shipb, 0, 208, 64, 48):EndIf
DisplayTransparentSprite( #shipb , 400-32, 300)  

;DisplayTransparentSprite( #irepere , 400, 350) 
  StartDrawing ( ScreenOutput ())
    DrawingMode (1)
      DrawingFont ( FontID (0)) 
      FrontColor ( RGB (255,255,255))
 
      FrontColor ( RGB (154,154,154)) :DrawText (280+1, 480+1, "appuyez sur la touche X")
      FrontColor ( RGB (234,234,234)) :DrawText (280, 480, "appuyez sur la touche X")
     
  StopDrawing ()
  
If tempoappui<51 And pause=0:tempoappui+1:EndIf
If KeyboardPushed ( #PB_Key_X ) And tempoappui>50 And pause=0:tempoappui=0:etape=1:lacheboutonX=1:EndIf
EndProcedure 

Procedure.l Affichagelevel()
Static tempolevel.b

  ForEach tirg() ; il faut supprimer tout les clones tirg. 
    DeleteElement(tirg())
  Next
  ForEach tirb() ; il faut supprimer tout les clones tirb.  
    DeleteElement(tirb())
  Next
  
  StartDrawing ( ScreenOutput ())
    DrawingMode (1)
      DrawingFont ( FontID (1)) 
      FrontColor ( RGB (255,255,255))
      level$= Str (level) 
      FrontColor ( RGB (154,154,154)) :DrawText (276+1, 260+1, "NIVEAU  " +level$)
      FrontColor ( RGB (234,234,234)) :DrawText (276, 260, "NIVEAU  " +level$)
    
  StopDrawing ()

If level=5 Or level=10 Or level=15 Or level=20; après chaque boss, on nettoie l'espace, hum.
  ForEach etoile()
    DeleteElement(etoile())
  Next  
EndIf

If tempolevel<40 And pause=0:tempolevel+1
  If tempolevel>39:tempolevel=0:etape=10
  
    For t=1 To 10  
      Fetoile(0,1,0) ; installation des étoiles dans la partie gauche de l'écran.
    Next
    For t=1 To 10  
      Fetoile(1,1,0) ; installation des étoiles dans la partie droite de l'écran.
    Next  
 
  EndIf
EndIf

EndProcedure

Procedure.l Fetoile(p,l,classe) ; Fabrication des etoiles

LastElement(etoile())
AddElement(etoile())

etoile()\id=p; étoile appartenant à la partie gauche( 0), ou droite( 1) de l'écran, afin d'éviter d'avoir une moitié de l'écran trop vide. 
etoile()\taille=classe

;placementA+64; taille 32 colonnes +32 pour la séparation entre les bruteA, voyez.
If p=0:etoile()\x=Random(380):etoile()\x+20:EndIf; de 0 à 400  
If p=1:etoile()\x=Random(400):etoile()\x+380:EndIf; de 400 à 800
If l=1:etoile()\y=Random(700):etoile()\y-100:EndIf; de 0 à 300 car fabriquer à partir de la procédure Affichagelevel() 
If l=0:etoile()\y=-10:EndIf; -10 car fabriquer durant le jeu

EndProcedure

Procedure.l Affichagetoile()
Static choixclasse.b

ForEach etoile()
zutA+1 ; test: connaitre le nombre d'étoile

  If etoile()\taille=0:ClipSprite(#shipb, 200, 211, 1, 1):DisplayTransparentSprite( #shipb , etoile()\x, etoile()\y):EndIf
  If etoile()\taille=1:ClipSprite(#shipb, 209, 230, 15, 15):DisplayTransparentSprite( #shipb , etoile()\x-7, etoile()\y):EndIf
;  If etoile()\taille=2
;    ClipSprite(#shipb, 242, 231, 22, 25):DisplayTransparentSprite( #shipb , etoile()\x-11, etoile()\y)
;    ClipSprite(#shipb, 264, 234, 8, 22):DisplayTransparentSprite( #shipb , (etoile()\x-11)+22, etoile()\y+3)    
;    ClipSprite(#shipb, 272, 236, 4, 20):DisplayTransparentSprite( #shipb , (etoile()\x-11)+30, etoile()\y+5)
;  EndIf
  
  If pause=0:etoile()\y+1:EndIf
  
  If etoile()\y>600 And etoile()\boutonA=0:etoile()\boutonA=1
    If etoile()\id=0
      choixclasse=Random(18)
      If choixclasse<13:Fetoile(0,0,0):EndIf ; étoile lointaine...
      If choixclasse>12 And choixclasse<19:Fetoile(0,0,1):EndIf ; étoile rouge 
;      If choixclasse=19:Fetoile(0,0,2):EndIf ; grande étoile
    EndIf
    If etoile()\id=1
      choixclasse=Random(18)
      If choixclasse<13:Fetoile(1,0,0):EndIf ; étoile lointaine...
      If choixclasse>12 And choixclasse<19:Fetoile(1,0,1):EndIf ; étoile rouge 
;      If choixclasse=19:Fetoile(1,0,2):tempogrande=20:EndIf ; grande étoile
    EndIf
  EndIf
  
  If etoile()\y>650 And etoile()\boutonA=1:DeleteElement(etoile()):EndIf
    
Next

EndProcedure

Procedure.l Affichagegameover()
Static tempover.b


If tempover<51 And pause=0:tempover+1:EndIf ; petite temporisation, avant de redonner la main au joueur.

  StartDrawing ( ScreenOutput ())
    DrawingMode (1)
      DrawingFont ( FontID (1)) 
      FrontColor ( RGB (255,255,255))
      FrontColor ( RGB (154,154,154)) :DrawText (276+1, 260+1, "GAME OVER")
      FrontColor ( RGB (234,234,234)) :DrawText (276, 260, "GAME OVER")      
  If tempover>50
      DrawingFont ( FontID (0))    
      FrontColor ( RGB (154,154,154)) :DrawText (280+1, 480+1, "appuyez sur la touche X")
      FrontColor ( RGB (234,234,234)) :DrawText (280, 480, "appuyez sur la touche X")
  EndIf     
  StopDrawing ()   

If KeyboardPushed ( #PB_Key_X ) And tempover>50 And pause=0:tempover=0; remise à l'état premier de toutes les variables, voyez.
  etape=0:level=1:recharge=0
  Xgentil=400-32:Ygentil=600-96:score=0:vie=3:invuln=99
  
  numbruteA=0:numbruteB=0:numbruteC=0
  posYbruteA=48*3:posYbruteB=48*2:posYbruteC=48
  placementA=0:placementB=0:placementC=0
  dirbruteA=0:dirbruteB=0:dirbruteC=0; dans une même direction, pour un même but ;) 
  speedbrut=1:nbrdetruit=0

  ForEach tirg() ; il faut supprimer tout les clones tirg. 
    DeleteElement(tirg())
  Next

  ForEach bruteA() ; il faut supprimer tout les clones bruteA. 
    DeleteElement(bruteA())
  Next  
  ForEach bruteB() ; il faut supprimer tout les clones bruteB. 
    DeleteElement(bruteB())
  Next  
  ForEach bruteC() ; il faut supprimer tout les clones bruteC. 
    DeleteElement(bruteC())
  Next  

  ForEach tirb() ; il faut supprimer tout les clones tirb.  
    DeleteElement(tirb())
  Next
  
  ForEach etoile()
    DeleteElement(etoile())
  Next
EndIf
;DisplayTransparentSprite( #irepere , 400, 350)
EndProcedure

Procedure.l Affichageship() ; vaisseau dirigé par le joueur.

Static tempod.b ; temporisation utilisée pour la direction du vaisseau du joueur
Static shipdirection.b ; et cette variable détermine la direction du vaisseau du joueur

;zutA=shipdirection
If pause=0 And invuln<100
  If KeyboardPushed ( #PB_Key_Right ) And Xgentil<800-64:Xgentil+4; va à droite
    If shipdirection<0:shipdirection=0:EndIf
    tempod+1
    If tempod>6:tempod=0
      If shipdirection<2:shipdirection+1:EndIf
    EndIf  
  EndIf

  If KeyboardPushed ( #PB_Key_Left ) And Xgentil>0:Xgentil-4; va à gauche	
    If shipdirection>0:shipdirection=0:EndIf
    tempod+1
    If tempod>6:tempod=0
      If shipdirection>-2:shipdirection-1:EndIf
    EndIf
  EndIf

  ; si le joueur ne touche pas les touches fleches, alors le vaisseau doit se rétablir.
  If KeyboardPushed ( #PB_Key_Right )=0 And KeyboardPushed ( #PB_Key_Left )=0
    tempod+1
    If tempod>6:tempod=0
      If shipdirection>0:shipdirection-1:EndIf
      If shipdirection<0:shipdirection+1:EndIf    
    EndIf
  EndIf

  If KeyboardPushed ( #PB_Key_X )=0 And lacheboutonX=1:lacheboutonX=0:EndIf
  If KeyboardPushed ( #PB_Key_X ) And lacheboutonX=0 And recharge=0 ; tir !
    recharge=24:Ftirgentil( (Xgentil+32)-8, Ygentil )
    lacheboutonX=1; <- ligne a désactiver si vous voulez donner au joueur un tir automatique.
  EndIf
  If recharge>0:recharge-1:EndIf ; petite temporisation avant d'autoriser un prochain tir
EndIf; If pause=0 And invuln<100

Affichagetirgentil()

If invuln>0 And invuln<100 And pause=0:invuln-1:EndIf
If invuln=0 Or (invuln>10 And invuln<20) Or (invuln>30 And invuln<40) Or (invuln>50 And invuln<60) Or (invuln>80 And invuln<90) Or invuln=100
  ; 5 images d'une taille de 64*64
  If shipdirection=0:ClipSprite(#shipb, 0, 0, 64, 64):EndIf; vue de dessus( si le joueur ne touche à rien) 
  If shipdirection=1:ClipSprite(#shipb, 64, 0, 64, 64):EndIf; droite 1
  If shipdirection=2:ClipSprite(#shipb, 128, 0, 64, 64):EndIf; droite 2
  If shipdirection=-1:ClipSprite(#shipb, 192, 0, 64, 64):EndIf; gauche 1
  If shipdirection=-2:ClipSprite(#shipb, 256, 0, 64, 64):EndIf; gauche 2
  DisplayTransparentSprite( #shipb , Xgentil, Ygentil)
EndIf

;DisplayTransparentSprite( #irepere , Xgentil, Ygentil) 
;DisplayTransparentSprite( #irepere , Xgentil+64, Ygentil)   


If invuln>99; explosion du vaisseau ! Utilisation d'un sprite3D
; taille de #boum3D: 128*128
; ZoomSprite3D(#Sprite3D, Largeur, Hauteur)

  ; Si invuln=100, alors explosion 1.
  ; Si invuln=101, alors explosion 2.
  
If invuln=100; 1ere partie de l'explosion
  ZoomSprite3D(#boum3D, 64+zoomboum, 64+zoomboum)
  DisplaySprite3D ( #boum3D , (Xgentil)-(zoomboum/2), (Ygentil)-(zoomboum/2), 55+transpboum)
  If transpboum<200 And pause=0:transpboum+4:EndIf
EndIf
If invuln=101; 2eme partie de l'explosion
  ZoomSprite3D(#boum3D, 128, 192-zoomboum)
  DisplaySprite3D ( #boum3D , (Xgentil)-(64/2), ((Ygentil)-(zoomboum/2))+zoomY, 55+transpboum)
  If transpboum>0 And pause=0:transpboum-4:EndIf
EndIf

If zoomboum<64 And invuln=100 And pause=0:zoomboum+2; 1ere partie de l'explosion
  If zoomboum>63:zoomboum=64:invuln=101:EndIf
EndIf
If zoomboum<128 And invuln=101 And pause=0:zoomboum+2:zoomY+2; 2eme partie de l'explosion
  If zoomboum>127:zoomboum=0:invuln=99:EndIf; fin explosion, le jouer récupère la main.  
EndIf

;zutA=transpboum;(Xgentil-32)-(zoomboum/2)

EndIf; If invuln=100; explosion du vaisseau !

EndProcedure 

Procedure.l Ftirgentil(x,y) ; Fabrication des tirs du vaisseau du joueur

LastElement(tirg())
AddElement(tirg())

        
tirg()\x=x
tirg()\y=y

EndProcedure  

Procedure.l Affichagetirgentil() ; Affichage des clones tirs du vaisseau du joueur

ForEach tirg()
;zutA+1 ; variable utilisé par le programmeur...

  If pause=0:tirg()\y-4:EndIf
  DisplayTransparentSprite( #tirgentil , tirg()\x, tirg()\y)
  If tirg()\boutonA=1 Or tirg()\y<0-15:DeleteElement(tirg()):Continue:EndIf 
  
  
  ForEach bruteA() ; ici, nous allons vérifier si un tir gentil touche une bruteA: 
    If tirg()\x>bruteA()\x-8 And tirg()\x<(bruteA()\x+31)+8
      If tirg()\y>bruteA()\y-8 And tirg()\y<(bruteA()\y+31)+8
        nbrdetruit+1:tirg()\boutonA=1:score+10:DeleteElement(bruteA())
      EndIf
    EndIf
  Next  

  ForEach bruteB() ; ici, nous allons vérifier si un tir gentil touche une bruteB: 
    If tirg()\x>bruteB()\x-8 And tirg()\x<(bruteB()\x+31)+8
      If tirg()\y>bruteB()\y-8 And tirg()\y<(bruteB()\y+31)+8
        nbrdetruit+1:tirg()\boutonA=1:score+10:DeleteElement(bruteB())
      EndIf
    EndIf
  Next
   
  ForEach bruteC() ; ici, nous allons vérifier si un tir gentil touche une bruteC: 
    If tirg()\x>bruteC()\x-8 And tirg()\x<(bruteC()\x+31)+8
      If tirg()\y>bruteC()\y-8 And tirg()\y<(bruteC()\y+31)+8
        nbrdetruit+1:tirg()\boutonA=1:score+10:DeleteElement(bruteC())
      EndIf
    EndIf
  Next
   
Next

;- augmente régulièrement la vitesse
;- de déplacement des brutes, au fur et à mesure de leurs destructions...
If nbrdetruit>4-1 And speedbrut<2:speedbrut=2:EndIf
If nbrdetruit>8-1 And speedbrut<3:speedbrut=3:EndIf
If nbrdetruit>12-1 And speedbrut<4:speedbrut=4:EndIf
If nbrdetruit>16-1 And speedbrut<5:speedbrut=5:EndIf
If nbrdetruit>20-1 And speedbrut<6:speedbrut=6:EndIf

EndProcedure
 
Procedure.l FbruteA() ; Fabrication des clones bruteA

LastElement(bruteA())
AddElement(bruteA())

numbruteA+1 
bruteA()\id=numbruteA; je ne suis pas un numéro, noonnn ! 

placementA+64; taille 32 colonnes +32 pour la séparation entre les bruteA, voyez.
bruteA()\x=placementA

EndProcedure

Procedure.l FbruteB() ; Fabrication des clones bruteB

LastElement(bruteB())
AddElement(bruteB())

numbruteB+1 
bruteB()\id=numbruteB; je ne suis pas un numéro, noonnn ! 

placementB+64; taille 32 colonnes +32 pour la séparation entre les bruteB, voyez.
bruteB()\x=placementB

EndProcedure
 
Procedure.l FbruteC() ; Fabrication des clones bruteC

LastElement(bruteC())
AddElement(bruteC())

numbruteC+1 
bruteC()\id=numbruteC; je ne suis pas un numéro, noonnn ! 

placementC+64; taille 32 colonnes +32 pour la séparation entre les bruteC, voyez.
bruteC()\x=placementC

EndProcedure 

Procedure.l AffichagebruteA() ; Affichage des clones bruteA


Static tempotirbruteA.b 
Static choixbruteA.b

If pause=0:tempotirbruteA+1:EndIf
If tempotirbruteA>64:tempotirbruteA=0
  choixbruteA=Random(7); de 0 à 7... 
  choixbruteA+1; ...et là +1, donc maintenant de 1 à 8.
EndIf

ForEach bruteA()

  If pause=0:
    If dirbruteA=0:bruteA()\x+speedbrut 
      If bruteA()\x>(800-4)-32:dirbruteA=1:EndIf ; bord de l'écran droite
    EndIf
    If dirbruteA=2:bruteA()\x-speedbrut 
      If bruteA()\x<0+4:dirbruteA=3:EndIf ; bord de l'écran gauche
    EndIf
  
    bruteA()\y=posYbruteA
  EndIf
  ClipSprite(#envahisseurs, 0, 0, 32, 32) 
  DisplayTransparentSprite( #envahisseurs , bruteA()\x, bruteA()\y)
  If bruteA()\y>600-48:etape=20:EndIf  
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteA=1 And LastElement(bruteA()):dirbruteC=2:dirbruteB=2:dirbruteA=2:posYbruteC+32:posYbruteB+32:posYbruteA+32:EndIf
  If dirbruteA=3 And LastElement(bruteA()):dirbruteC=0:dirbruteB=0:dirbruteA=0:posYbruteC+32:posYbruteB+32:posYbruteA+32:EndIf
  
  If choixbruteA>0 And bruteA()\id=choixbruteA; tir ennemi !!
    choixbruteA=0:Ftirbrute( (bruteA()\x+16)-8, (bruteA()\y+31)-8 )
  EndIf

  ; ici, nous allons vérifier si un vaisseau bruteA touche le gentil vaisseau du joueur, hum:
  If invuln=0  
    If bruteA()\x+16>Xgentil-1 And bruteA()\x+16<Xgentil+64; on teste à partir du milieu de bruteA, car faut pas être trop dur avec le joueur.
      If bruteA()\y+16>Ygentil-1 And bruteA()\y+16<Ygentil+64
        invuln=100:vie-1:transpboum=0:zoomY=0
      EndIf
    EndIf
  EndIf
    
Next

EndProcedure

Procedure.l AffichagebruteB() ; Affichage des clones bruteB

Static tempotirbruteB.b 
Static choixbruteB.b

If pause=0:tempotirbruteB+1:EndIf
If tempotirbruteB>64:tempotirbruteB=0
  choixbruteB=Random(7); de 0 à 7... 
  choixbruteB+1; ...et là +1, donc maintenant de 1 à 8.
EndIf

ForEach bruteB()

  If pause=0
    If dirbruteB=0:bruteB()\x+speedbrut 
      If bruteB()\x>(800-4)-32:dirbruteB=1:EndIf ; bord de l'écran droite
    EndIf
    If dirbruteB=2:bruteB()\x-speedbrut 
      If bruteB()\x<0+4:dirbruteB=3:EndIf ; bord de l'écran gauche
    EndIf
  
    bruteB()\y=posYbruteB
  EndIf

  ClipSprite(#envahisseurs, 32, 0, 32, 32)     
  DisplayTransparentSprite( #envahisseurs , bruteB()\x, bruteB()\y)
  If bruteB()\y>600-48:etape=20:EndIf  
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteB=1 And LastElement(bruteB()):dirbruteC=2:dirbruteB=2:dirbruteA=2:posYbruteC+32:posYbruteB+32:posYbruteA+32:EndIf
  If dirbruteB=3 And LastElement(bruteB()):dirbruteC=0:dirbruteB=0:dirbruteA=0:posYbruteC+32:posYbruteB+32:posYbruteA+32:EndIf
  
  If choixbruteB>0 And bruteB()\id=choixbruteB; tir ennemi !!
    choixbruteB=0:Ftirbrute( (bruteB()\x+16)-8, (bruteB()\y+31)-8 )
  EndIf

  ; ici, nous allons vérifier si un vaisseau bruteA touche le gentil vaisseau du joueur, hum:
  If invuln=0  
    If bruteB()\x+16>Xgentil-1 And bruteB()\x+16<Xgentil+64; on teste à partir du milieu de bruteB, car faut pas être trop dur avec le joueur.
      If bruteB()\y+16>Ygentil-1 And bruteB()\y+16<Ygentil+64
        invuln=100:vie-1:transpboum=0:zoomY=0
      EndIf
    EndIf
  EndIf
    
Next

EndProcedure

Procedure.l AffichagebruteC() ; Affichage des clones bruteC

Static tempotirbruteC.b 
Static choixbruteC.b

If pause=0:tempotirbruteC+1:EndIf
If tempotirbruteC>64:tempotirbruteC=0
  choixbruteC=Random(7); de 0 à 7... 
  choixbruteC+1; ...et là +1, donc maintenant de 1 à 8.
EndIf

ForEach bruteC()

  If pause=0
    If dirbruteC=0:bruteC()\x+speedbrut 
      If bruteC()\x>(800-4)-32:dirbruteC=1:EndIf ; bord de l'écran droite
    EndIf
    If dirbruteC=2:bruteC()\x-speedbrut 
      If bruteC()\x<0+4:dirbruteC=3:EndIf ; bord de l'écran gauche
    EndIf
  
    bruteC()\y=posYbruteC
  EndIf

  ClipSprite(#envahisseurs, 64, 0, 32, 32)     
  DisplayTransparentSprite( #envahisseurs , bruteC()\x, bruteC()\y)
  bruteC()\tempoA+1
  If bruteC()\tempoA>24:bruteC()\tempoA=0:EndIf
  If bruteC()\tempoA>12
    DisplayTransparentSprite( #bouche , bruteC()\x+12, bruteC()\y+20)
  EndIf
  If bruteC()\y>600-48:etape=20:EndIf    
  ; faut attendre le dernier clone pour decendre tout ce beau monde. Ce qui complique un peu le code.  
  If dirbruteC=1 And LastElement(bruteC()):dirbruteC=2:dirbruteB=2:dirbruteA=2:posYbruteC+32:posYbruteB+32:posYbruteA+32:EndIf
  If dirbruteC=3 And LastElement(bruteC()):dirbruteC=0:dirbruteB=0:dirbruteA=0:posYbruteC+32:posYbruteB+32:posYbruteA+32:EndIf
  
  If choixbruteC>0 And bruteC()\id=choixbruteC; tir ennemi !!
    choixbruteC=0:Ftirbrute( (bruteC()\x+16)-8, (bruteC()\y+31)-8 )
  EndIf

  ; ici, nous allons vérifier si un vaisseau bruteA touche le gentil vaisseau du joueur, hum:
  If invuln=0  
    If bruteC()\x+16>Xgentil-1 And bruteC()\x+16<Xgentil+64; on teste à partir du milieu de bruteB, car faut pas être trop dur avec le joueur.
      If bruteC()\y+16>Ygentil-1 And bruteC()\y+16<Ygentil+64
        invuln=100:vie-1:transpboum=0:zoomY=0
      EndIf
    EndIf
  EndIf
    
Next

EndProcedure

Procedure.l Ftirbrute(x,y) ; Fabrication des tirs ennemis provenant des clones bruteA

LastElement(tirb())
AddElement(tirb())

tirb()\x=x
tirb()\y=y

EndProcedure

Procedure.l Affichagetirbrute() ; Affichage des clones tirs ennemis bruteA
Static tempotb.b
;tempotb=5
If pause=0:tempotb+1:EndIf ; placé ici afin que l'animation des tirs ennemis soit tous synchronisés.
If tempotb>8:tempotb=1:EndIf

ForEach tirb()

  If pause=0:tirb()\y+4:EndIf
  If tempotb<5:DisplayTransparentSprite( #tirbruteA1 , tirb()\x, tirb()\y):EndIf
  If tempotb>4:DisplayTransparentSprite( #tirbruteA2 , tirb()\x, tirb()\y):EndIf 
  
  
;zutA+1
  ; ici, nous allons vérifier si un tir ennemi touche le gentil vaisseau du joueur, hum:
  If invuln=0  
    If tirb()\x>Xgentil-1 And tirb()\x<(Xgentil+64)-16
      If tirb()\y>Ygentil-1 And tirb()\y<(Ygentil+64)-16
        DeleteElement(tirb())
        invuln=100:vie-1:transpboum=0:zoomY=0

      EndIf
    EndIf
  EndIf
Next
ForEach tirb()
  If tirb()\y>600:DeleteElement(tirb()):EndIf  
Next
EndProcedure

Procedure.l Fin()
 If IsSprite(#shipb):FreeSprite(#shipb):EndIf
 If IsSprite(#envahisseurs):FreeSprite(#envahisseurs):EndIf
 If IsSprite(#bouche):FreeSprite(#bouche):EndIf
 If IsSprite(#tirbruteA1):FreeSprite(#tirbruteA1):EndIf  
 If IsSprite(#tirbruteA2):FreeSprite(#tirbruteA2):EndIf
 If IsSprite(#tirgentil):FreeSprite(#tirgentil):EndIf 
 If IsSprite(#boum):FreeSprite(#boum):EndIf
 If IsSprite3D(#boum3D):FreeSprite(#boum3D):EndIf

 End ; et c'est toujours un peu triste...
EndProcedure

DataSection
  envahisseurs:

  Data.l $0000F3,$0000FF,$00006B,$000036,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000036,$000059,$0000FE,$0000F7,$0000AD,$000089,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$000089,$0000AD,$00008C,$000076,$000E00,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$00008C,$001C00,$000000,$000000,$000000,$000000,$000000,$000000,$001C00,$00008C,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000E00,$000076,$00008C
  Data.l $0000ED,$0000FD,$0000FC,$000067,$000037,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000057,$0000FB,$0000FB,$0000F7,$00009B,$0000FD,$0000D6,$000040,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000040,$0000D6,$0000FD,$00009B,$000095,$2A0075,$00006C,$00005F,$000059,$000000,$000000,$000000,$000000,$000000,$000000,$00007D,$00008F,$000000,$000000,$000000,$000000,$000000,$000000,$00008F,$00007D,$000000,$000000,$000000,$000000,$000000,$000000,$000059,$00005F,$00006C,$2A0075,$000095
  Data.l $0000ED,$0000F3,$00008B,$0000FE,$000063,$000038,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000039,$000039,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000056,$0000FC,$0000A2,$0000DD,$0000F6,$000031,$0000ED,$00007F,$0000F2,$000089,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000089,$0000F2,$00007B,$0000ED,$000031,$0000A7,$77047A,$6A046D,$5C035E,$21015F,$00005D,$000058,$000E00,$000000,$000000,$00006A,$280171,$00008E,$000000,$000000,$000000,$000000,$000000,$000000,$00008E,$280171,$00006A,$000000,$000000,$000E00,$000058,$00005D,$21015F,$5C035E,$6A046D,$77047A,$0000A7
  Data.l $0000ED,$0000F0,$606060,$0000A6,$0000FD,$000061,$000038,$000000,$000000,$000000,$000000,$000000,$000000,$000039,$00003E,$0000A0,$000096,$00003E,$000039,$000000,$000000,$000000,$000000,$000000,$000000,$000037,$000056,$0000FB,$0000C4,$606060,$0000D6,$0000F6,$000000,$00009B,$00009B,$808098,$0000C5,$0000D6,$000040,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000040,$0000D6,$0000C5,$7E7E9A,$00009B,$00009B,$000000,$0000BB,$8C0893,$84078A,$77077D,$69066E,$5C0560,$220264,$000068,$000068,$00006D,$26026E,$66066C,$000091,$000000,$000000,$000000,$000000,$000000,$000000,$000091,$66066C,$26026E,$00006D,$000068,$000068,$220264,$5C0560,$69066E,$77077D,$84078A,$8C0893,$0000BB
  Data.l $0000ED,$0000F1,$5E5E5E,$59595B,$0000B2,$0000FB,$00005E,$000037,$000000,$000000,$000000,$000039,$000041,$000096,$0000FD,$0000F9,$0000F9,$0000FD,$0000A4,$000042,$000039,$000000,$000000,$000000,$000036,$000055,$0000F9,$0000CF,$58585D,$5E5E5E,$0000D9,$0000F6,$000000,$000035,$0000ED,$88889B,$818181,$5252AD,$0000F2,$000083,$000000,$000000,$000000,$000000,$000000,$000000,$00002E,$0000D2,$0000D2,$00002E,$000000,$000000,$000000,$000000,$000000,$000000,$000083,$0000F2,$5252AD,$818181,$88889B,$0000ED,$000035,$000000,$0000CE,$9C0DA8,$9B0DA7,$940C9F,$850B90,$770A81,$6E0976,$690971,$680971,$6B0973,$6E0977,$710979,$000095,$001C00,$000000,$000000,$000000,$000000,$001C00,$000095,$710979,$6E0977,$6B0973,$680971,$690971,$6E0976,$770A81,$850B90,$940C9F,$9B0DA7,$9C0DA8,$0000CE
  Data.l $0000ED,$0000F1,$616161,$4A4969,$575759,$0000C0,$0000FA,$00005B,$000000,$000037,$000043,$00008D,$0000FB,$0000FA,$0000A5,$505050,$505050,$000098,$0000FA,$0000FC,$00009F,$000044,$000038,$000000,$000054,$0000F8,$0000DA,$56565D,$4A4969,$616161,$0000D9,$0000F6,$000000,$000000,$00009B,$5454D8,$6E6268,$62585B,$63637B,$0000CA,$0000D6,$00003D,$000000,$000000,$000000,$00002E,$0000D6,$3A3AB2,$3A3AB2,$0000D6,$00002E,$000000,$000000,$000000,$00003D,$0000D6,$0000CA,$63637B,$62585B,$6E6268,$5454D8,$00009B,$000000,$000000,$0000DD,$A513B7,$AA13BC,$A913BB,$A012B2,$9311A3,$891098,$840F92,$820F90,$820F90,$800F8E,$7C0E89,$2F0692,$000095,$000000,$000000,$000000,$000000,$000095,$2F0692,$7C0E89,$800F8E,$820F90,$820F90,$840F92,$891098,$9311A3,$A012B2,$A913BB,$AA13BC,$A513B7,$0000DD
  Data.l $0000ED,$0000F1,$696969,$3A3A89,$4B4967,$565659,$0000CE,$0000F8,$000063,$000082,$0000F8,$0000FA,$0000BA,$515151,$515151,$454558,$454558,$515151,$515151,$0000A7,$0000F9,$0000FA,$000090,$00005B,$0000F8,$0000E1,$54545D,$4B4967,$3A3A89,$696969,$0000D9,$0000F6,$000000,$000000,$000035,$0000F2,$88889B,$6A5D63,$5C5358,$656565,$43439E,$0000F2,$000083,$000000,$00002E,$0000D6,$3939B0,$494044,$494044,$3838B5,$0000D6,$00002E,$000000,$00007F,$0000F2,$43439E,$656565,$5C5358,$6A5D63,$88889B,$0000F2,$000035,$000000,$000000,$0000E3,$440AD9,$AC1AC6,$B01BCB,$AF1ACA,$AA1AC3,$A419BC,$A118BA,$9F18B7,$9D18B4,$9617AC,$8A159F,$79128C,$000098,$000000,$000000,$000000,$000000,$000098,$79128C,$8A159F,$9617AC,$9D18B4,$9F18B7,$A118BA,$A419BC,$AA1AC3,$AF1ACA,$B01BCB,$AC1AC6,$440AD9,$0000E3
  Data.l $0000ED,$0000F1,$6D6D6D,$3C3B94,$3C3B8C,$4C4B67,$545459,$0000C4,$0000FE,$0000FA,$0000C6,$515153,$535353,$48475D,$3B3A7F,$3B3A82,$3B3A82,$3B3A7F,$48475D,$535353,$515151,$0000B9,$0000FA,$0000FF,$0000D5,$52525E,$4C4B67,$3C3B8C,$3C3B94,$6D6D6D,$0000D9,$0000F6,$000000,$000000,$000000,$00009B,$00009B,$909090,$472C36,$402A33,$524B4E,$535371,$0000CA,$0000D2,$0000D6,$3939B6,$4D4649,$39282E,$39282E,$4D4649,$3939B6,$0000D6,$0000D2,$0000CA,$535371,$524B4E,$402A33,$472C36,$909090,$00009B,$00009B,$000000,$000000,$000000,$000E00,$0000E9,$A720C6,$AF24CF,$B637D3,$B93FD5,$BA43D5,$BD49D7,$BC48D7,$B739D3,$AB20CB,$991DB5,$801898,$00009B,$000000,$000000,$000000,$000000,$00009B,$801898,$991DB5,$AB20CB,$B739D3,$BC48D7,$BD49D7,$BA43D5,$B93FD5,$B637D3,$AF24CF,$A720C6,$0000E9,$000E00
  Data.l $0000ED,$0000F1,$727272,$403EA0,$403EA0,$3E3D94,$4E4E6F,$57575A,$4A4A92,$50505A,$545454,$4A495E,$3C3C82,$3D3C89,$3E3C91,$3E3D93,$3E3D93,$3E3C91,$3D3C89,$3C3C82,$4A495E,$545454,$4F4F5B,$494994,$575759,$4E4E6F,$3E3D94,$403EA0,$403EA0,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$0000B0,$000096,$9D9D9D,$532F3D,$4E2E3B,$472B37,$5A5055,$656565,$47479E,$49499A,$554C50,$402A33,$422B34,$422B34,$402A33,$554C50,$49499A,$47479E,$656565,$5A5055,$472B37,$4E2E3B,$532F3D,$9D9D9D,$000096,$0000B0,$000000,$000000,$000000,$000000,$0000E3,$A025C6,$AC33D2,$B953D9,$C167DD,$C673E0,$CA7CE2,$CA7CE2,$C36CDE,$B549D7,$A025C6,$8720A7,$2D0B9B,$00008E,$000080,$000080,$00008E,$2D0B9B,$8720A7,$A025C6,$B549D7,$C36CDE,$CA7CE2,$CA7CE2,$C673E0,$C167DD,$B953D9,$AC33D2,$A025C6,$0000E3,$000000
  Data.l $0000ED,$0000F1,$797979,$4542A8,$4643B4,$4543AE,$4442A5,$43409B,$413F93,$403E8D,$403E8B,$413F90,$423F94,$43419D,$4342A3,$4442A6,$4442A6,$4342A3,$43419D,$423F94,$413F90,$403E8B,$403E8D,$413F93,$43409B,$4442A5,$4543AE,$4643B4,$4542A8,$797979,$0000D9,$0000F6,$000000,$000000,$0000A8,$0000CA,$94949E,$84737A,$603244,$603244,$5A3142,$532F3D,$4D2D3B,$4A2C38,$4A2C38,$4C2D3A,$502E3B,$522E3D,$522E3D,$502E3B,$4C2D3A,$4A2C38,$4A2C38,$4D2D3B,$532F3D,$5A3142,$603244,$603244,$84737A,$94949E,$0000CA,$0000AD,$000000,$000000,$000000,$0000E3,$9D2CC9,$AF4BD6,$BF70DE,$C680E2,$CA89E4,$CD90E6,$CB8BE4,$C379E0,$B65BDA,$A12ECF,$8F28B8,$7C23A0,$6D1F8C,$661C83,$661C83,$6D1F8C,$7C23A0,$8F28B8,$A12ECF,$B65BDA,$C379E0,$CB8BE4,$CD90E6,$CA89E4,$C67FE2,$BE6DDE,$AD47D5,$9B2BC8,$0000E1,$000000
  Data.l $0000ED,$0000F1,$7B7B7B,$4A47B4,$7972A1,$8B8B97,$817FA0,$544FBE,$4C48B9,$4947AE,$4946AA,$4946AA,$4946AE,$4A47B2,$4A47B6,$4B47B6,$4B47B6,$4A47B6,$4A47B2,$4946AE,$4946AA,$4946AA,$4947AE,$4C48B9,$544FBE,$817FA0,$8B8B9A,$7972A1,$4A47B4,$7B7B7B,$0000D9,$0000F6,$000000,$0000A8,$0000CA,$8B8B94,$7F6F75,$643449,$6B354D,$723B52,$6D364E,$68344B,$623347,$5C3144,$5B3143,$5C3144,$603246,$623347,$623347,$603246,$5C3144,$5B3143,$5C3144,$623347,$68344B,$6D364E,$723B52,$6B354D,$643449,$7F6F75,$8B8B94,$0000CA,$0000A8,$000000,$000000,$0000E8,$9A35D0,$B265DB,$C285E3,$C78FE5,$9983F5,$7E7EFF,$7474FF,$5959FF,$6847F0,$A03FD3,$9231C5,$842DB3,$7929A4,$73279C,$73279C,$7929A4,$842DB3,$9231C5,$A03FD3,$6847F0,$5959FF,$7474FF,$7E7EFF,$9982F5,$C68DE5,$C081E2,$B060DA,$9833CE,$0000E3,$000000
  Data.l $0000ED,$0000F1,$7B7B7B,$4E4DB7,$6F6FB4,$0000D3,$6F6FD1,$9797A0,$8D8CAA,$726CCC,$6C69C8,$6560C6,$5B59C2,$5754C0,$534FBD,$4F4EBC,$4F4EBC,$534FBD,$5754C0,$5B59C2,$6560C6,$6C69C8,$726CCC,$8D8CAA,$9A9A9D,$7777CE,$0000D9,$6B6BBE,$4E4DB7,$7B7B7B,$0000D9,$0000F6,$00009B,$0000CE,$8B8B94,$7E6C74,$9696B0,$BBBBBB,$CACACA,$B6A1A9,$906175,$845269,$753C56,$703750,$6E364F,$6D364E,$6E364F,$6E374F,$6E374F,$6E364F,$6D364E,$6E364F,$703750,$753C56,$845269,$906175,$B6A1A9,$CACACA,$BBBBBB,$9696B0,$7E6C74,$8B8B94,$0000CE,$00009B,$000000,$0000EF,$9B4AD4,$B476DE,$C08CE4,$8E78F4,$6868FF,$000000,$000000,$000000,$1616FF,$923BCF,$8D39C8,$8636BE,$8134B7,$7E32B2,$7E32B2,$8134B7,$8636BE,$8D39C8,$923BCF,$1616FF,$000000,$000000,$000000,$6767FF,$8B75F4,$BE89E3,$B172DD,$9945D2,$0000EA,$000000
  Data.l $0000ED,$0000F1,$777777,$5350B4,$6363A3,$0000F3,$0000FB,$0000CA,$7272D3,$9D9D9F,$9191AE,$7D79CE,$6B69CA,$605DC4,$5957C1,$5654C0,$5654C0,$5957C1,$605DC4,$6B69CA,$7D79CE,$9191AE,$9D9D9D,$7B7BCE,$0000C0,$0000FB,$0000F3,$5B5BB4,$5350B6,$777777,$0000D9,$0000F6,$0000D6,$8080B8,$847179,$A4A4A4,$0000A8,$0000DE,$00006B,$D1D1D1,$D3D3D3,$BDA5AE,$925C74,$89516A,$804660,$7A3D58,$773A55,$773A55,$773A55,$773A55,$7A3D58,$804660,$89516A,$925C74,$BDA5AE,$D3D3D3,$D1D1D1,$00006B,$0000DE,$0000A8,$A4A4A4,$847179,$8080B8,$0000D6,$000000,$0000F8,$9D5DD7,$B17FDF,$826EF3,$4A4AFF,$000000,$000000,$000000,$000000,$0000ED,$843EC4,$853FC6,$873FC8,$873FC8,$853FC6,$853FC6,$873FC8,$873FC8,$853FC6,$843EC4,$0000ED,$000000,$000000,$000000,$000000,$4646FF,$7E6AF3,$AF7BDE,$9A5AD6,$0000F4,$000000
  Data.l $0000ED,$0000F1,$777777,$5756AE,$696691,$797979,$4E4ED2,$0000F3,$0000FB,$0000CA,$6B6BCA,$929292,$8584A3,$6965C6,$615DC4,$5D5AC4,$5D5AC4,$615DC4,$6965C6,$8584A3,$929292,$7272C2,$0000C0,$0000F9,$0000F4,$4D4DD7,$77777B,$696691,$5756AE,$777777,$0000D9,$0000F6,$000073,$0000B7,$AAAAAA,$957B85,$B2B2B2,$8E8ECE,$0000D2,$0000DE,$00006B,$CCCCCC,$B59EA7,$915871,$8C516C,$864B66,$814460,$7F405B,$7F405B,$814460,$864B66,$8C516C,$915871,$B59EA7,$CCCCCC,$00006B,$0000DE,$0000D2,$8E8ECE,$B2B2B2,$957B85,$AAAAAA,$0000B7,$000073,$000000,$0101FF,$5640EF,$6956F1,$3838FF,$000000,$000000,$000000,$0000D4,$0000D3,$2F1ACA,$7842BD,$7F46C7,$8348CE,$8449D0,$8549D1,$8549D1,$8449D0,$8348CE,$7F46C7,$7842BD,$2F1ACA,$0000D3,$0000D4,$000000,$000000,$000000,$3434FF,$6754F1,$9662D7,$0000FC,$000000
  Data.l $0000ED,$0000F1,$727272,$5D5AB2,$5D5AB2,$5A58A8,$636188,$676777,$4D4DD3,$0000F4,$0000FB,$0000C4,$6B6B9D,$6963C6,$6963C6,$6963C6,$6963C6,$6963C6,$6963C6,$727294,$0000C0,$0000F8,$0000F4,$4B4BD7,$66667D,$636188,$5A58A8,$5D5AB2,$5D5AB2,$727272,$0000D9,$0000F6,$000025,$0000ED,$9B9BCA,$A28391,$7E3D59,$A0828F,$B3B3B3,$8989CB,$0000D2,$0000DE,$8383DA,$C4C4C4,$AC909D,$894964,$864661,$84425E,$84425E,$864661,$894964,$AC909D,$C4C4C4,$8383DA,$0000DE,$0000D2,$8989CB,$B3B3B3,$A0828F,$7E3D59,$A28391,$9B9BCA,$0000ED,$000025,$000000,$002E00,$0909FF,$0E0EFF,$000000,$000000,$0000CF,$0000C2,$2719B2,$6340A4,$6A44B0,$7249BD,$784DC7,$7C50CE,$7E51D0,$7E51D1,$7E51D1,$7E51D0,$7C50CE,$784DC7,$7249BD,$6A44B0,$6340A4,$2719B2,$0000C2,$0000CF,$000000,$000000,$1313FF,$412FED,$0000FE,$000000
  Data.l $0000ED,$0000F1,$6F6F6F,$6763B6,$6966B7,$6661AE,$605DA6,$5D5AA1,$636185,$636381,$4C4CD3,$0000F7,$5A5AA7,$6D6BC2,$726CC6,$776DCA,$776DCA,$726CC6,$6D6BC2,$60609B,$0000F6,$4A4AD6,$606083,$636185,$5D5AA1,$605DA6,$6661AE,$6966B7,$6763B6,$6F6F6F,$0000D9,$0000F6,$000000,$000077,$0000B7,$C3C3C3,$86425E,$83405C,$7E3F59,$977B86,$A9A9A9,$8484C6,$0000D6,$0000DE,$A7A7C8,$86425E,$86425E,$884360,$884360,$86425E,$86425E,$A7A7C8,$0000DE,$0000D2,$8484C6,$A9A9A9,$977B86,$7E3F59,$83405C,$86425E,$C3C3C3,$0000B7,$000077,$000000,$000000,$000E00,$0000ED,$000000,$0000DE,$0000CD,$241BAF,$553F97,$57419B,$5D45A5,$644BB3,$6C50C0,$7154C9,$7457CF,$7658D1,$7658D2,$7658D2,$7658D1,$7457CF,$7154C9,$6C50C0,$644BB3,$5D45A5,$57419B,$553F97,$251BB0,$0000CF,$0000E3,$000000,$0000F4,$000E00,$000000
  Data.l $0000ED,$0000F1,$727272,$776FBC,$7D79C2,$7D77C0,$726DB9,$6B6BAA,$6966A6,$6765A5,$6B6B89,$60608F,$726F96,$7F7BC2,$8180CC,$8381CF,$8381CF,$8180CC,$7F7BC2,$726F96,$61618B,$6B6B89,$6765A5,$6966A6,$6B6BAA,$726DB9,$7D77C0,$7D79C2,$776FBC,$727272,$0000D9,$0000F6,$000000,$000025,$0000ED,$A1A1CF,$A98A97,$894460,$83425B,$7E4059,$7B3F58,$987C86,$B0B0B0,$8E8ECE,$A58697,$8C4461,$8E4662,$8E4763,$8E4763,$8E4662,$8C4461,$A58697,$8E8ECE,$B0B0B0,$987C86,$7B3F58,$7E4059,$83425B,$894460,$A98A97,$A1A1CF,$0000ED,$000025,$000000,$000000,$000000,$000000,$0000D1,$2520BD,$5549A1,$53489D,$53489E,$564BA4,$5C50AF,$6255BA,$685AC6,$6C5DCC,$6E5FD1,$6F60D2,$6F60D3,$6F60D3,$6F60D2,$6E5FD1,$6C5DCC,$685AC6,$6255BA,$5C50AF,$564BA4,$53489E,$53489E,$564BA4,$2520C0,$0000D6,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$727272,$8381C2,$8784CC,$8885D1,$8784CC,$8482C4,$8280BE,$807DB9,$7F7BB6,$817DBA,$8381C1,$8683CA,$8885D1,$8987D3,$8987D3,$8885D1,$8683CA,$8381C1,$817DBA,$7F7BB6,$807DB9,$8280BE,$8482C4,$8784CC,$8885D1,$8784CC,$8381C2,$727272,$0000D9,$0000F6,$000000,$000000,$00007B,$0000B7,$BBBBBB,$8B4862,$8A4762,$864660,$85465E,$884761,$8E4863,$904A66,$934C69,$944F6A,$944E69,$934C69,$934C69,$944E69,$944F6A,$934C69,$904A66,$8E4863,$884761,$85465E,$864660,$8A4762,$8B4862,$BBBBBB,$0000BD,$00007B,$000000,$000000,$000000,$000000,$000000,$0000BC,$4E4D9E,$5050A3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$6564CD,$6766D1,$6867D2,$6867D3,$6867D3,$6867D3,$6867D3,$6867D2,$6766D1,$6564CD,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$5251A5,$504FA1,$0000C0,$000000,$000000,$000000
  Data.l $0000ED,$0000F1,$727272,$8A88C6,$8F8CD2,$9290D7,$9290D7,$918FD5,$8F8CD2,$8C8ACE,$8B89CA,$8B89CA,$8D8ACF,$8F8CD2,$918FD5,$9290D7,$9290D7,$918FD5,$8F8CD2,$8D8ACF,$8B89CA,$8B89CA,$8C8ACE,$8F8CD2,$918FD5,$9290D7,$9290D7,$8F8CD2,$8A88C6,$727272,$0000D9,$0000F6,$000000,$000000,$000025,$0000ED,$9999C7,$A98B97,$974F69,$9A536D,$9A536C,$9D566F,$A15C75,$A36077,$A15D75,$9F5972,$9D566F,$9A536C,$9A536C,$9D566F,$9F5972,$A15D75,$A36077,$A15C75,$9D566F,$9A536C,$9A536D,$974F69,$A98B97,$9999C7,$0000ED,$000025,$000000,$000000,$000000,$000000,$0000A9,$1C1FA5,$48529F,$4F5AAE,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$606ED3,$606ED4,$606ED4,$606ED4,$606ED4,$606ED4,$606ED4,$606ED4,$606ED4,$606ED3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$4F5BAF,$4954A2,$1D20A9,$0000AE,$000000,$000000
  Data.l $0000ED,$0000F1,$727272,$9291CC,$9696D3,$9897DA,$9A98DB,$9A98DB,$9A98DB,$9B98DB,$9D9ADB,$9D9BDB,$9D9BDB,$9D9BDB,$9D9ADB,$9B98DB,$9B98DB,$9D9ADB,$9D9BDB,$9D9BDB,$9D9BDB,$9D9ADB,$9B98DB,$9A98DB,$9A98DB,$9A98DB,$9897DA,$9696D3,$9291CC,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$00007F,$0000A0,$B9B9B9,$A25D73,$AF7586,$B87E90,$B87F91,$CBB2BB,$B3B3DB,$BFA5B0,$A96B7D,$A66679,$A56477,$A56477,$A66679,$A96B7D,$BFA5B0,$B3B3DB,$CBB2BB,$B87F91,$B87E90,$AF7586,$A25D73,$B9B9B9,$0000A4,$00007B,$000000,$000000,$000000,$000000,$000000,$0000B1,$445AA2,$4C65B5,$536FC7,$5874D1,$FFFFFF,$FFFFFF,$FFFFFF,$5A77D4,$5976D4,$5976D4,$5976D4,$5976D4,$5976D4,$5976D4,$5976D4,$5976D4,$5976D4,$5976D4,$5A77D4,$FFFFFF,$FFFFFF,$FFFFFF,$5875D2,$536FC7,$4C65B6,$455BA4,$0000B4,$000000,$000000
  Data.l $0000ED,$0000F1,$727272,$9897CF,$A09FD7,$A3A1DD,$A4A2DF,$A5A3DF,$A6A4DF,$A9A7E0,$B2ACE2,$B6B4E2,$B7B4E3,$B4AEE2,$ACA9E1,$A9A6E0,$A9A6E0,$ACA9E1,$B4AEE2,$B7B4E3,$B6B4E2,$B2ACE2,$A9A7E0,$A6A4DF,$A5A3DF,$A4A2DF,$A3A1DD,$A09FD7,$9897CF,$727272,$0000D9,$0000F6,$000000,$000000,$000000,$000070,$0000BD,$B2B2B2,$A66677,$BE8596,$C796A4,$D4C3C8,$B5B5E3,$0000F5,$9090E3,$B77B8C,$B57989,$B57A8A,$B57A8A,$B57989,$B77B8C,$9090E3,$0000F5,$B9B9E2,$D4C3C8,$C796A4,$BE8596,$A66677,$B2B2B2,$0000BD,$000070,$000000,$000000,$000000,$000000,$0000C4,$1C2AC4,$4B72C3,$537ED5,$6C91DB,$7396DD,$FFFFFF,$0000D3,$FFFFFF,$5580D6,$537ED5,$527DD5,$527DD5,$527DD5,$527DD5,$527DD5,$527DD5,$527DD5,$527DD5,$537ED5,$5580D6,$FFFFFF,$0000D3,$FFFFFF,$7396DD,$6C91DB,$537ED5,$4B72C3,$1C2AC4,$0000C4,$000000
  Data.l $0000ED,$0000F1,$777777,$A3A1D3,$A9A7DD,$AEAAE2,$B2ACE2,$B4AEE2,$B7B6E3,$BEBCE4,$C4C2E5,$CAC6E7,$CCC8E7,$C6C4E6,$C2BEE4,$BEBAE4,$BEBAE4,$C2BEE4,$C6C4E6,$CCC8E7,$CAC6E7,$C4C2E5,$BEBCE4,$B7B6E3,$B4AEE2,$B2ACE2,$AEAAE2,$A9A7DD,$A3A1D3,$777777,$0000D9,$0000F6,$000000,$000000,$000000,$0000C0,$7171C6,$A88E94,$AE707C,$C48F9B,$D5C3C7,$B8B8E2,$0000F5,$0000ED,$CFCFD3,$BF8693,$C38E99,$C6949F,$C6949F,$C38E99,$BF8693,$CFCFD3,$0000ED,$0000F5,$B8B8E2,$D5C3C7,$C48F9B,$AE707C,$A88E94,$7171C6,$0000C0,$000000,$000000,$000000,$000000,$0000E3,$4980CE,$6092DA,$7CA6E1,$88ADE3,$84ABE2,$E5E5FF,$E5E5FF,$E5E5FF,$5389D7,$4E86D6,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$4E86D6,$5389D7,$E5E5FF,$E5E5FF,$E5E5FF,$84ABE2,$88ADE3,$7CA6E1,$6092DA,$4980CE,$0000E3,$000000
  Data.l $0000F3,$0000EB,$7B7B7B,$AEACDB,$BAB7E2,$BEBCE4,$BEBCE4,$C0BEE4,$C4C2E6,$CCCAE7,$B6B6C2,$AAAAAA,$AEAEAE,$BCBCC6,$D1D1E8,$CFCCE8,$CFCCE8,$D1D1E8,$BCBCC6,$AEAEAE,$AAAAAA,$B6B6C2,$CCCAE7,$C4C2E6,$C0BEE4,$BEBCE4,$BEBCE4,$BAB7E2,$AEACDB,$7B7B7B,$0000D1,$0000F7,$000000,$000000,$00002B,$0000F8,$9A9AA7,$A2666F,$B77A82,$CEB9BD,$B2B2DE,$0000F2,$0000FB,$8484E2,$CBB2B6,$CA98A0,$D2A9AE,$D8B5BC,$D8B5BC,$D2A9AE,$CA98A0,$CBB2B6,$8888E1,$0000FB,$0000F2,$B2B2DE,$CEB9BD,$B77A82,$A2666F,$9A9AA7,$0000F8,$00002B,$000000,$000000,$0000F8,$2A45EF,$6FA6DF,$88B5E4,$98BFE8,$9AC0E8,$90BAE6,$81B1E3,$6FA6DF,$5F9CDB,$5395D8,$4B90D7,$FAE3B9,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FAE3B9,$4B90D7,$5395D8,$5F9CDB,$6FA6DF,$81B1E3,$90BAE6,$9AC0E8,$98BFE8,$88B5E4,$6FA6DF,$2A45EF,$0000F8
  Data.l $0000A3,$0000F8,$7F7F7F,$C1C0E2,$C6C6E6,$CACAE7,$CCCAE7,$CCCCE7,$D1CFE8,$D3D3E9,$A1A1A1,$0000A9,$0000F5,$A1A1B6,$BABAC2,$DAD9EA,$DAD9EA,$BABAC2,$A2A2B4,$0000F4,$0000BD,$A1A1A1,$D3D3E9,$D1CFE8,$CCCCE7,$CCCAE7,$CACAE7,$C6C6E6,$C1C0E2,$7F7F7F,$0000F7,$0000D6,$000000,$000000,$00006B,$0000BD,$AAAAAA,$AF7276,$CCB5B7,$B6B6DD,$0000F2,$000063,$0000ED,$C8C8CD,$CA989D,$D8B0B6,$E3DADB,$D0D0EF,$D0D0EF,$E3DADB,$D8B0B6,$CA989D,$C8C8CD,$0000ED,$000063,$0000F2,$B6B6DD,$CCB5B7,$AF7276,$AAAAAA,$0000BD,$00006B,$000000,$000000,$3D3DFF,$5F5FFF,$7979FF,$8888FF,$8E8EFF,$8888FF,$7676FF,$7086F4,$75B1E2,$65A9DF,$5AA2DC,$559FDB,$FAE3B9,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FFFFFF,$FAE3B9,$559FDB,$5AA2DC,$65A9DF,$75B1E2,$7086F4,$7676FF,$8888FF,$8E8EFF,$8888FF,$7979FF,$5F5FFF,$3D3DFF
  Data.l $00003D,$0000FF,$5B5BAE,$9D9DA6,$D3D3EA,$D6D5EA,$D6D5EA,$D7D6EA,$D7D7EA,$A9A9B7,$8787BD,$0000F8,$0000FD,$00009D,$9F9FA4,$E1E1ED,$E1E1ED,$9F9FA4,$000097,$0000FD,$0000F8,$8686BE,$A9A9B7,$D7D7EA,$D7D6EA,$D6D5EA,$D6D5EA,$D3D3EA,$9D9DA6,$5D5DAA,$0000FE,$000045,$000000,$000000,$0000C0,$7777CE,$BBA1A1,$CFBCBC,$BCBCE1,$0000F2,$000063,$0000CA,$8989E2,$CEBBBB,$D5ACAC,$E0C4C4,$E7E7EB,$0000E5,$0000E5,$E7E7EB,$E0C4C4,$D5ACAC,$CEBBBB,$8989E2,$0000CA,$000063,$0000F2,$BCBCE1,$CFBCBC,$BBA1A1,$7777CE,$0000C0,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$5252FF,$6FB5E1,$6CB3E1,$6DB4E1,$73B7E2,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$0000D3,$73B7E2,$6DB4E1,$6CB3E1,$6FB5E1,$5252FF,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $000037,$0000DF,$0000F4,$858585,$DDDDEB,$DFDFED,$DFDFED,$DFDFED,$DFDDEB,$8D8D8D,$0000C0,$0000F4,$0000C0,$0000FC,$9F9FA5,$C8C8D1,$C8C8D1,$9F9FA4,$0000FA,$0000DB,$0000E9,$0000D2,$8D8D8D,$DFDDEB,$DFDFED,$DFDFED,$DFDFED,$DDDDEB,$858585,$0000F3,$0000F4,$000038,$000000,$00002B,$0000F5,$B7B7C5,$D3C1C0,$C1C1E6,$0000F2,$000063,$000000,$0000ED,$D5D5D9,$DAB6B3,$DFC3C0,$E5DCDB,$9F9FF5,$0000CA,$0000CA,$9F9FF5,$E5DCDB,$DFC3C0,$DAB6B3,$D5D5D9,$0000ED,$000000,$000063,$0000F2,$C1C1E6,$D3C1C0,$B7B7C5,$0000F5,$00002B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$3A3AFF,$4A6DF3,$4A4AFF,$6B87F5,$8CC9E9,$97CEEB,$A0D2ED,$A7D6EE,$ABD8EF,$AFD9EF,$AFD9EF,$ABD8EF,$A7D6EE,$A0D2ED,$97CEEB,$8CC9E9,$6B87F5,$4A4AFF,$4A6DF3,$3A3AFF,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000043,$0000FE,$6363BA,$ACACB6,$E5E5EF,$E7E7F0,$E5E5EF,$AEAEB7,$7979A6,$0000FA,$000084,$00003A,$0000FC,$00009B,$AEAEB4,$AEAEB4,$000096,$0000FC,$00003B,$00006D,$0000FC,$7777A8,$AEAEB7,$E5E5EF,$E7E7F0,$E5E5EF,$ACACB6,$6666B7,$0000FF,$00004D,$000000,$000000,$00006B,$0000BD,$D3D3D3,$C3C3E7,$0000F2,$000063,$000000,$0000CA,$9999F0,$E4DBDA,$E7D2CE,$E7DEDD,$E3E3E8,$0000E1,$000051,$000051,$0000E1,$E3E3E8,$E7DEDD,$E7D2CE,$E4DBDA,$9999F0,$0000CA,$000000,$000063,$0000F2,$C3C3E7,$D3D3D3,$0000BD,$00006B,$000000,$000000,$000000,$000000,$000000,$000000,$2828FF,$2B2BFF,$4242FF,$000000,$8484FF,$A9DAEF,$B2DEF0,$B8E0F2,$BCE2F2,$BFE4F3,$C1E5F3,$C1E5F3,$BFE4F3,$BCE2F2,$B8E0F2,$B2DEF0,$A9DAEF,$8484FF,$000000,$4242FF,$2B2BFF,$2828FF,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000039,$0000E1,$0000F4,$949494,$EBEAF1,$EBEBF1,$EBEAF1,$949494,$0000B2,$0000F8,$000048,$000000,$000096,$0000FD,$AEAEAE,$AEAEAE,$0000FB,$0000BD,$000000,$000042,$0000F4,$0000C2,$949494,$EBEAF1,$EBEBF1,$EBEAF1,$949494,$0000EB,$0000F4,$00003A,$000000,$000000,$0000BD,$00006B,$BFBFE4,$0000ED,$000063,$000000,$000000,$0000F2,$E4E4EC,$EFE7E4,$EFDFDB,$E9E9E9,$000070,$0000CA,$000000,$000000,$0000CA,$000070,$E9E9E9,$EFDFDB,$EFE7E4,$E4E4EC,$0000F2,$000000,$000000,$000063,$0000ED,$BFBFE4,$00006B,$0000BD,$000000,$000000,$000000,$000000,$000000,$1A1AFF,$1C1CFF,$000000,$000000,$8282FF,$A6BAF9,$B8E3F2,$B7C7FA,$B5B5FF,$BABAFF,$BCBCFF,$BEBEFF,$BEBEFF,$BCBCFF,$BABAFF,$B5B5FF,$B7C7FA,$B8E3F2,$A6BAF9,$8282FF,$000000,$000000,$1C1CFF,$1A1AFF,$000000,$000000,$000000,$000000
  Data.l $000000,$000036,$00004B,$0000FF,$7B7BCE,$CECED1,$F0F0F3,$CECED1,$8787BA,$0000F9,$000088,$000038,$000000,$000039,$0000FD,$000096,$000091,$0000FD,$000039,$000000,$000037,$000086,$0000FA,$8585BD,$CECED1,$F0F0F3,$CECED1,$7F7FCA,$0000FE,$00004D,$000036,$000000,$00002B,$0000F5,$AFAFE4,$0000ED,$000063,$000000,$000000,$000025,$0000C5,$0000B0,$ECECF1,$F2EBE9,$E8E8EC,$0000DE,$000056,$000000,$000000,$000056,$0000DE,$E8E8EC,$F2EBE9,$ECECF1,$0000B0,$0000C5,$000025,$000000,$000000,$000063,$0000ED,$AFAFE4,$0000F5,$00002B,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$7070FF,$9FB7F9,$B2C5FA,$B2B2FF,$B3B3FF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$B3B3FF,$B2B2FF,$B2C5FA,$9FB7F9,$7070FF,$000000,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000000,$00003A,$0000E3,$0000F3,$B2B2B2,$BABABA,$B2B2B2,$0000A2,$0000F8,$00004E,$000000,$000000,$000000,$000096,$0000FC,$0000F9,$0000C0,$000000,$000000,$000000,$000045,$0000F7,$0000AE,$B2B2B2,$BABABA,$B2B2B2,$0000E5,$0000F4,$00003C,$000000,$000000,$000067,$0000E1,$0000ED,$000067,$000000,$000000,$000000,$000000,$000025,$0000C5,$0000B0,$ECECF1,$000070,$0000CA,$000000,$000000,$000000,$000000,$0000CA,$000070,$ECECF1,$0000B0,$0000C5,$000025,$000000,$000000,$000000,$000000,$000067,$0000ED,$0000E1,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$5C5CFF,$93AFF8,$AAAAFF,$B0B0FF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$B0B0FF,$AAAAFF,$93AFF8,$5C5CFF,$000000,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000000,$000000,$00004F,$0000FE,$0000E2,$0000C8,$0000DD,$0000FE,$00008D,$000036,$000000,$000000,$000000,$000037,$0000FD,$0000FD,$000038,$000000,$000000,$000000,$000036,$00008D,$0000FE,$0000DD,$0000C8,$0000E2,$0000FE,$000050,$000000,$000000,$000000,$0000BD,$0000FD,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$0000C5,$0000B0,$0000DE,$00005A,$000000,$000000,$000000,$000000,$00005A,$0000DE,$0000B0,$0000C5,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000067,$0000FD,$0000BD,$000000,$000000,$000000,$000000,$000000,$5959FF,$8686FF,$A3A3FF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$A3A3FF,$8686FF,$5959FF,$000000,$000000,$000000,$000000,$000000
  Data.l $000000,$000000,$000000,$000037,$00007B,$0000FB,$0000F7,$0000F9,$0000A0,$000037,$000000,$000000,$000000,$000000,$000000,$000045,$000045,$000000,$000000,$000000,$000000,$000000,$000037,$0000A0,$0000F9,$0000F7,$0000FB,$00007B,$000037,$000000,$000000,$000000,$0000C0,$000067,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000025,$0000C0,$0000A8,$000000,$000000,$000000,$000000,$000000,$000000,$0000A8,$0000C0,$000025,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000067,$0000C0,$000000,$000000,$000000,$000000,$5252FF,$7878FF,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$000000,$7878FF,$5252FF,$000000,$000000,$000000,$000000

EndDataSection

Dernière modification par beauregard le sam. 21/juin/2008 19:59, modifié 1 fois.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

image

Message par beauregard »

enregister l'image png suivante sous le nom de

Code : Tout sélectionner

infiniship
Image
Avatar de l’utilisateur
Ouaf-Ouaf
Messages : 212
Inscription : dim. 11/juil./2004 9:07

Message par Ouaf-Ouaf »

Lut'

Sympatique ton ptit jeu, ainsi que les sprites.
Pour le redimenssionement y me semble que c'est en fonction de la carte graphique.
Ce pourrait être pire que le resultat que t'as là, avec un resultat sans anti-crenelage :cry: ( Mon laptop me fait ça ).

Il me semble que ça marche mieux quand la fenetre est homothétique à l'ecran. Parfaitement proportionelle quoi.

Difficile de contourner ça simplement. Prevoir eventuellment des bandes noires là un peu comme au ciné ? :p

J'ai ptet mal capté le prob en mm temps
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

RedimensionnementAuto pas net

Message par beauregard »

Ouaf-Ouaf a écrit :Lut'Sympatique ton ptit jeu, ainsi que les sprites.
Pour le redimenssionement y me semble que c'est en fonction de la carte graphique.
merci Ouaf-Ouaf. il te suffit de désactiver la ligne 97, et de rendre active la 95. Tu appui sur F5, et le jeu est... flou, avant même de toucher à quoi que ce soit.

test rigolo: enregister 2 versions différentes( l'une avec RedimensionnementAuto à 0, et l'autre avec RedimensionnementAuto à 1). Tu lance les 2 jeux, et l'on se retrouve avec 2 fenêtres, la première est net et l'autre est flouuuuubouhouhou ! pardon... bouhouhou !

Image
Avatar de l’utilisateur
Ouaf-Ouaf
Messages : 212
Inscription : dim. 11/juil./2004 9:07

Message par Ouaf-Ouaf »

Sans changement de dimension ?

Chez moi en Autostretch 0 ou 1 le rendu est le même.
beauregard
Messages : 1307
Inscription : dim. 08/juil./2007 18:32
Localisation : Toulouse

Message par beauregard »

Ouaf-Ouaf a écrit :Sans changement de dimension ?
Chez moi en Autostretch 0 ou 1 le rendu est le même.
Ah ! Tu m'avais pourtant bien prévenu que cela dépendais de la carte vidéo. Bien, alors, j'ai une geforce 7600GS qui a presque 2 ans. Qu'elle carte vidéo équipe ta machine( que j'imagine récente) ?
Répondre