Snowball (source non punché)

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Snowball (source non punché)

Message par majikeyric »

Voici le source de Snowball,

Y a très peu de commentaires, si vous avez une question n'hésitez pas.

Téléchargeable avec les exécutables ici : http://majikeyric.free.fr/wordpress/?wp ... 90bGluaw==

Code : Tout sélectionner

;*****************************************************************************
;*
;* XMas 2014 PurePunch contest
;* PureBasic 5.31
;* 64 lines of 80 chars of code + 78 (only!) lines of data
;*
;* Name     : Snowball
;* Author   : Majikeyric (http://majikeyric.free.fr)
;* Date     : 08/12/2014
;*
;* Are you ready for a snow battle with your friends ?
;* 
;* Your are the blue player,
;* When you shoot another player you gain 1 point.
;* When your are shot you lost 1 point.
;* The first with 10 points wins the game !
;* 
;* Controls:
;* 
;* Cursor Left and Cursor Right to move
;*
;* Cursor Down to pick up snow + Space to throw it
;*
;* Credits  : original C64 graphics by Ashley Routledge (from Snowball sunday)
;*
;*****************************************************************************
EnableExplicit

#P=2920					; taille des data packées
#U=13431				; taille des data non packées
#SS=8135				; taille du fichier .mid
#L=640					; largeur de l'écran
#H=480					; hauteur de l'écran
#NS=13					; nombre de sprites par joueur (dans une seule direction)
#NbFlocons=200			; Nombre de flocons de neige sur la totalité du décor
#Y=380					; position vertivale des persos
#Tempo=90				; Nombre de balayages écrans pendant lesquels un perso "se replie" après avoir tiré
#DistanceTir=194		; distance à laquelle les perso se mettent de leur cible pour tirer

Macro M:Macro:EndMacro
Macro E:End:EndMacro
Macro _:Data:EndMacro
Macro SD(a):st#a#drawing:EndMacro

Macro MakeSprite2(v)

	j=CreateSprite(#PB_Any,24,21,#PB_Sprite_PixelCollision)
	sprites(i+#NS*(v))=j
	SD(art)(SpriteOutput(j))
	For k=0 To 20
		For l=0 To 23
			Plot(l,k,s2\b[k*24+l])
		Next
	Next
	SD(op)()
	ZoomSprite(j,48,42)

EndMacro

Macro MakeSprite(c,v)

	s\p[2]=c
	ConvertitSpriteC64EnSprite256Coul(@s,@s2)
	MakeSprite2(v)
	InverseSprite256Coul(@s2)
	MakeSprite2(v+1)

EndMacro

Macro Init
ClearList(Acteur())
For i=0 To 2
	AddElement(Acteur())
	Acteur()\Direction=0
	Acteur()\Numero=i
	Acteur()\Y=#Y
	Acteur()\X=Random(320) & $fffe
	Acteur()\BouleDeNeige=0
	Acteur()\Phase=#ChoixCible
	Acteur()\Cible=0
	Acteur()\Etat=0
	Acteur()\CompteurAnim=1
	Acteur()\IndiceAnim=1
	Score(i)=0
	op(i)=Acteur()
Next
ClearList(BouleDeNeige())
d=""
*op1=op(0)
EndMacro

Enumeration PhaseDesPersonnages
	#ChoixCible
	#RamassageNeige
	#MiseaDistance
	#Tir
	#Repli
EndEnumeration

Enumeration EtatDesPersonnages
	#Immobile
	#Marche
	#RamasseBouleDeNeige
	#LanceBouleDeNeige
	#ChuteAvant
	#ChuteArriere
EndEnumeration

Enumeration Direction
	#DirDroite
	#DirGauche
EndEnumeration

Structure _Map
	m.a[25*81]
EndStructure

Structure _Anim
	a.a[6*16]
EndStructure

Structure car64
	b.a[8]
	p.l[4]
EndStructure

Structure car256
	b.l[8*8]
EndStructure

Structure sp64
	b.a[64]
	p.l[4]
EndStructure

Structure sp256
	b.l[24*21]
EndStructure

Structure Flocon
	X.i
	Y.f
	V.f
EndStructure

Structure Acteur
	Numero.i
	Direction.i
	X.i
	Y.i
	Etat.i
	Phase.i
	*Cible.Acteur
	Tempo.i
	BouleDeNeige.i
	CompteurAnim.i
	IndiceAnim.i
	Sprite.i
EndStructure

Structure BouleDeNeige
	Tireur.i
	X.f
	Y.f
	VX.f
	VY.f
EndStructure

Define *s,*d,*p
Define.i i, j, k, l, x, ox, dx, SpriteFlocon
Define.Acteur *op1,*op2
Define.s d, o
Define s.sp64, s2.sp256, c.Car64, c2.Car256
Define.i ActeurDroite, ActeurGauche, ActeurBas, ActeurTir
Define.f Gravite

NewList Flocon.Flocon()
NewList Acteur.Acteur()
NewList BouleDeNeige.BouleDeNeige()

Dim op.i(3)
Dim TileSet.i(256)
Dim p.l(16)
Dim Score.i(3)

Global Dim sprites.i(#NS*2*3+1)
Global *m._Map,*a._Anim

Gravite=0.2

Procedure Anime(*acteur.Acteur, anim.i)
	
	Protected.i f
	
	f=0
	*acteur\CompteurAnim-1
	
	If *acteur\CompteurAnim=0
		*acteur\CompteurAnim=*a\a[anim<<4]
		If *a\a[anim<<4+*acteur\IndiceAnim]=0
			f=1
			*acteur\IndiceAnim=1
		EndIf
		*acteur\Sprite=sprites(*a\a[anim<<4+*acteur\IndiceAnim] + *acteur\Numero*#NS*2 + *acteur\Direction*#NS)
		*acteur\IndiceAnim+1		
		
	EndIf
	ProcedureReturn f
	
EndProcedure

Procedure ChangeEtat(*acteur.Acteur,s)
	*acteur\Etat=s
	*acteur\CompteurAnim=1
	*acteur\IndiceAnim=1
EndProcedure

Procedure ConvertitSpriteC64EnSprite256Coul(*s.sp64,*d.sp256)
	
	Protected.i i,j,k,l,z,d
	Protected.l c
	
	l=0
	For k=0 To 20
		For i=0 To 2
			d=6
			For j=0 To 3
				c=*s\p[*s\b[l]>>d&3]
				z=k*24+i*8+j*2
				*d\b[z]=c
				*d\b[z+1]=c
				d-2
			Next
			l+1
		Next
	Next
	
EndProcedure

Procedure ConvertitCaractereC64EnCaractere256Coul(*s.car64,*d.car256)
	
	Protected.i j,k,l,z,d
	Protected.l c
	
	l=0
	For k=0 To 7
		d=6
		For j=0 To 3
			c=*s\p[*s\b[l]>>d&3]
			z=k*8+j*2
			*d\b[z]=c
			*d\b[z+1]=c
			d-2
		Next
		l+1
	Next
EndProcedure

Procedure InverseSprite256Coul(*s.sp256)
	
	Protected.i i,j,z,z2
	Protected.l p1
	
	For i=0 To 20
		For j=0 To 11
			z=i*24+j
			z2=i*24+(23-j)
			p1=*s\b[z]
			*s\b[z]=*s\b[z2]
			*s\b[z2]=p1
		Next
	Next
	
EndProcedure

UseLZMAPacker()

*s=AllocateMemory(#P)
*d=AllocateMemory(#U)
Restore a
*p=*s
i=#P
Read.s d
While i
	o=Left(d,2)
	d=Mid(d,3)
	If o="" And i;>0 ;OPTI
		Read.s d
	ElseIf o;<>"" ;OPTI
		PokeA(*p,Val("$"+o))
		*p+1
		i-1
	EndIf
Wend

If UncompressMemory(*s,#P,*d,#U,#PB_PackerPlugin_LZMA)=-1
	Debug "erreur decompression !"
EndIf

FreeMemory(*s)

InitKeyboard()
InitSprite()
InitMovie()

OpenWindow(0,0,0,#L,#H,"Snowball by Majikeyric",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0),0,0,#L,#H)

TransparentSpriteColor(#PB_Default,$ff00ff) ; Magenta

; traitement des données

*s=*d
CopyMemory(*s,@p(0),64)
*s+64

s\p[0]=$ff00ff
s\p[1]=0
s\p[3]=p(10)
i=1
Repeat
	CopyMemory(*s,@s\b[0],64)
	MakeSprite(p(6),0)
	MakeSprite(p(2),2)
	MakeSprite(p(12),4)
	*s+64
	i+1
Until i=#NS+1

c\p[0]=$ff00ff
c\p[1]=p(1)
c\p[2]=p(15)

*p=*s
i=0
Repeat
	CopyMemory(*s,@c\b[0],8)
	c\p[3]=p(PeekA(*p+2048+i)-8)
	ConvertitCaractereC64EnCaractere256Coul(@c,@c2)
	j=CreateSprite(#PB_Any,8,8)
	TileSet(i)=j
	SD(art)(SpriteOutput(j))
	For k=0 To 7
		For l=0 To 7
			Plot(l,k,c2\b[k*8+l])
		Next
	Next
	SD(op)()
	ZoomSprite(j,16,16)
	*s+8
	i+1
Until i=256

*s+256
*m=*s

*s+2000
i=CreateFile(#PB_Any,"1.mid")
WriteData(i,*s,#SS)
CloseFile(i)
*s+#SS
*a=*s

For i=0 To #NbFlocons-1
	AddElement(Flocon())
	Flocon()\Y=Random(479)
	Flocon()\X=Random(1279)
	Flocon()\V=Random(2,1)+Random(9,1)/10
Next

SpriteFlocon=CreateSprite(#PB_Any,2,2)
StartDrawing(SpriteOutput(SpriteFlocon))
Box(0,0,2,2,#White)
StopDrawing()

LoadMovie(0,"1.mid")

Init

Repeat
	
	Repeat
	Until WindowEvent()=0
	
	If MovieStatus(0)=0
		PlayMovie(0,WindowID(0))
	EndIf
	
	ExamineKeyboard()
	
	If d=""
		
		ForEach Acteur()
			
			If Acteur()\Numero
				
				ActeurTir=0
				ActeurGauche=0
				ActeurDroite=0
				ActeurBas=0
				*op2=op(Acteur()\Numero!3)
				
				Select Acteur()\Phase
						
					Case #ChoixCible
						If Random(1)=1
							Acteur()\Cible=*op1
						Else
							Acteur()\Cible=*op2
						EndIf
						
						Acteur()\Phase=#RamassageNeige
						
					Case #RamassageNeige
						
						If Acteur()\BouleDeNeige=0
							ActeurBas=1
						Else
							Acteur()\Phase=#MiseaDistance
						EndIf
						
					Case #MiseaDistance
						
						i=Acteur()\X - Acteur()\Cible\X
						
						If Abs(i)>#DistanceTir
							; on se rapproche
							If i<0
								ActeurDroite=1
							Else
								ActeurGauche=1
							EndIf
						ElseIf Abs(i)<#DistanceTir
							; on s'éloigne
							If i<0
								ActeurGauche=1
							Else
								ActeurDroite=1
							EndIf
						Else
							If i<0
								Acteur()\Direction=#DirDroite
							Else
								Acteur()\Direction=#DirGauche
							EndIf
							Acteur()\Phase=#Tir
						EndIf
						
					Case #Tir
						If Acteur()\BouleDeNeige=1
							ActeurTir=1
						Else
							Acteur()\Phase=#Repli
							Acteur()\Tempo=#Tempo
							Acteur()\Direction!1
						EndIf
						
					Case #Repli
						Acteur()\Tempo-1
						If Acteur()\Direction=#DirGauche
							ActeurGauche=1
						Else
							ActeurDroite=1
						EndIf
						If Acteur()\Tempo=0
							Acteur()\Phase=#ChoixCible
						EndIf
						
				EndSelect
				
			Else
				ActeurTir=KeyboardPushed(#PB_Key_Space)
				ActeurGauche=KeyboardPushed(#PB_Key_Left)
				ActeurDroite=KeyboardPushed(#PB_Key_Right)
				ActeurBas=KeyboardPushed(#PB_Key_Down)
			EndIf
			
			Select Acteur()\Etat
					
				Case #ChuteAvant
					If Anime(Acteur(),#ChuteAvant)
						ChangeEtat(Acteur(),#Immobile)
						;Anime(Acteur(),Acteur()\Etat);
					EndIf
				Case #ChuteArriere
					If Anime(Acteur(),#ChuteArriere)
						ChangeEtat(Acteur(),#Immobile)
						;Anime(Acteur(),Acteur()\Etat);
					EndIf
				Case #RamasseBouleDeNeige
					If Anime(Acteur(),#RamasseBouleDeNeige)
						Acteur()\BouleDeNeige=1
						ChangeEtat(Acteur(),#Immobile)
						;Anime(Acteur(),Acteur()\Etat);
					EndIf
				Case #LanceBouleDeNeige
					If Acteur()\IndiceAnim=2 And Acteur()\CompteurAnim=1
						Acteur()\BouleDeNeige=0
						AddElement(BouleDeNeige())
						BouleDeNeige()\Tireur=Acteur()\Numero
						BouleDeNeige()\Y=Acteur()\Y+10
						BouleDeNeige()\VY=-2.5
						If Acteur()\Direction=#DirDroite
							BouleDeNeige()\X=Acteur()\X+45
							BouleDeNeige()\VX=7
						Else
							BouleDeNeige()\X=Acteur()\X-5
							BouleDeNeige()\VX=-7
						EndIf
					EndIf
					If Anime(Acteur(),#LanceBouleDeNeige)
						ChangeEtat(Acteur(),#Immobile)
						;Anime(Acteur(),Acteur()\Etat);
					EndIf
				Default
					If ActeurBas
						ChangeEtat(Acteur(),#RamasseBouleDeNeige)
					ElseIf ActeurTir And Acteur()\BouleDeNeige=1
						ChangeEtat(Acteur(),#LanceBouleDeNeige)
					ElseIf ActeurDroite
						Acteur()\Direction=#DirDroite
						If Acteur()\Etat<>#Marche
							ChangeEtat(Acteur(),#Marche)
						EndIf
						Acteur()\X+2
					ElseIf ActeurGauche
						Acteur()\Direction=#DirGauche
						If Acteur()\Etat<>#Marche
							ChangeEtat(Acteur(),#Marche)
						EndIf
						Acteur()\X-2
					Else
						ChangeEtat(Acteur(),#Immobile)
					EndIf
					
					Anime(Acteur(),Acteur()\Etat)
					
			EndSelect
		Next
	EndIf
	
	ClearScreen(p(14))
	
	StartDrawing(ScreenOutput())
	Box(0,400,640,80,#White)
	StopDrawing()
	
	; Centrage horizontal de la fenêtre sur le joueur
	
	ox=*op1\X+24-320
	
	If ox<0
		ox=0
	ElseIf ox>640
		ox=640
	EndIf
	
	; Affichage du décor
	
	x=ox/16:dx=ox%16
	
	For i=0 To 24
		For j=0 To 40
			l=*m\m[i*80+x+j]
			If l
				DisplayTransparentSprite(TileSet(l),j*16-dx,i*16)
			EndIf
		Next
	Next
	
	If d=""
		ForEach Acteur()
			DisplayTransparentSprite(Acteur()\Sprite,Acteur()\X-ox,Acteur()\Y)
		Next
		
		ForEach BouleDeNeige()
			BouleDeNeige()\X+BouleDeNeige()\VX
			BouleDeNeige()\Y+BouleDeNeige()\VY
			BouleDeNeige()\VY+Gravite
			
			If BouleDeNeige()\Y>420
				DeleteElement(BouleDeNeige())
			Else
				DisplayTransparentSprite(sprites(#NS+4*#NS),BouleDeNeige()\X-ox,BouleDeNeige()\Y)
				If BouleDeNeige()\Y<410
					ForEach Acteur()
						If SpritePixelCollision(sprites(#NS+4*#NS),BouleDeNeige()\X,BouleDeNeige()\Y,Acteur()\Sprite,Acteur()\X,Acteur()\Y) And
						   Acteur()\Etat<>#ChuteArriere And
						   Acteur()\Etat<>#ChuteAvant
							Score(Acteur()\Numero)-1
							Score(BouleDeNeige()\Tireur)+1
							If (Acteur()\Direction=#DirDroite And BouleDeNeige()\VX<0) Or
							   (Acteur()\Direction=#DirGauche And BouleDeNeige()\VX>0)
								ChangeEtat(Acteur(),#ChuteArriere)
							Else
								ChangeEtat(Acteur(),#ChuteAvant)
							EndIf
							DeleteElement(BouleDeNeige())
							Break
						EndIf
					Next
				EndIf
			EndIf
		Next
	EndIf
	
	ForEach Flocon()
		If Flocon()\X>ox And Flocon()\X<ox+640
			DisplaySprite(SpriteFlocon,Flocon()\X-ox,Flocon()\y)
			Flocon()\Y+Flocon()\V
			If Flocon()\Y>420
				Flocon()\Y=0
			EndIf
		EndIf
	Next
	
	For k=0 To 2
		DisplayTransparentSprite(sprites(1+#NS*2*k),580,k*42)
		StartDrawing(ScreenOutput())
		DrawText(620,k*42+18,Str(Score(k)))
		StopDrawing()
	Next
	
	If Score(1)=10 Or Score(2)=10
		d="loose"
	ElseIf Score(0)=10
		d="win"
	EndIf
	
	If d
		SD(art)(ScreenOutput())
		DrawText(280,220,"You "+d+" !")
		SD(op)()
		If KeyboardPushed(#PB_Key_Space)
			Init
		EndIf
	EndIf
	
	FlipBuffers()
	
Until KeyboardPushed(#PB_Key_Escape)

DeleteFile("1.mid")
FreeMemory(*d)

_#Section:a: :_.s"5D00000001000068BE5100372D947F456664499A252B19095F5D99422F6A",;1
"564DC1180EA39182B5994FE60F566CF97F5423C7315C8BA305145FEB5DA1C6C01C703F870154",;2
"5A77D3B6DBF5C5FEFE4E14C70AB1D5D2489689657E08BF864BBB41842CF7F973BBC4F8098C67",;3
"49BD036D048D1A5FC2B841323830A0BC2775687DA7952197BF69D340FF0F259CCEC7990849B0",;4
"500F5F984D9A8C9B03F481FC7A896CAA7A38E90602EC3E281D402AB8EB1B8DBA44A9FB7EA3E5",;5
"06D3BFBA7D5FCE4EDC06FA06A555187BB8DF10927FB95E3F7F9AFA087A4A35EAFCB8F7FD0A1D",;6
"A1D71E2E14503F579213B55F925AF4AF1A234F2B978985F4F6C74271738975431FAE00A5366D",;7
"A44EE4EC63482A7C87CE03BD683134E153DB4899979448C57952535A178EB3CA0085247C4264",;8
"92877A4BE8E3BA922344E394B6096C8C0D4E6E32AB089376356ED3489881BAD37EF73378F147",;9
"EE154E2D6CC98BEEE0E568653AFAACB3DBB696E71348AA1E88103F9A741917B0E612F31652AE",;10
"F0A3D14505889F9A24575B15E743542F62CE1F849DBECEB046103212D5260ECB8BC0FA08E336",;11
"AFEBBEE6635B805A9A2CE0C6D6640323777ECF6DB16CC0CB3F536B8A9B49B668B178548B0BB4",;12
"D91FF2A8DDD30742A10522C11F4B2D3CED244D413947FD86C3911AFF559153CA85E74ACDBE51",;13
"5B926E204AEA64238446054CEF2923936CC8B2016327D04A89EEA1DE81ED458393D207DFBDA2",;14
"731E6AAD21014D73E722CAF6B1D57F7245F03C56E6EADED6A7FEBEA69DAB93E134BCFDEF692C",;15
"18859ED3D7812C289F649A32BCF85EE3A01C5319352F9AF4E6C1ECE4354423C0AABFEB08359E",;16
"59871EE521B70B4D4F32155E353452721F639F01CF1288ADE9C1AE8438DB3330276F9FD13B65",;17
"6C31C30B471D9D86FE26B0D9A5D7F7C51C89ABE99E521EAAA3B16AFF2263449524D3C050A4B9",;18
"4A03E6CB9433C85EDAFD28FAC385CDF3D1A31F34098823D7402335AEDBAFE73F160CCEA68900",;19
"F8D715E32B6C1ADBA65450C1206C6FC16E4C81D5642D0C4FE60220B4817BC6EF885D3E87FFDE",;20
"66F99998EB3D9D4AF2335FD35A4CB7B12E71393878FEC6BE9153C2DAB1FEE3E109E34ACFC9D8",;21
"83CA42F4D576A9AA4AEF6ABE67EB8D0071F8E9C29FC90AEB3663231716B663BCD1CB95E07743",;22
"DC4ECAF07F2E73FEA256C98885CB576306A9F2B40496046F2BFDFCDDA99FA3A786D7D892FA3B",;23
"42C533D0880AD365EFD09A615E2D7D92A1F9DAE6CBDCC6E11385B900913853095328C85B9CBD",;24
"C2599CA6C73E8DCAE9D732BDB73FD2F6D48581F66CCA12040B691802571808A5A75421CF2061",;25
"745484BCEE1D41C55B3B9A872A88027C6BB93088C04795344F0C4DF58D9D4C23BFB56BF010D5",;26
"10963B6F18FAAA57CA90A46B205295B786A8A5B3E26EB8A80C5284BB0BB4151B0BB3194AB8EB",;27
"9ED87A5C5475C086A5FF8ED206BB1575B02195BCECEFEDA14A3CEF9BCF38B7A6446A869BC2D8",;28
"2CF149B1F882BDFEB69E6BCD6456E4FF21326F4C12C9A6576EDE5BDB1581F38061F13EE8B1FF",;29
"23E63571569A3725CF2F0384150D32A4385612C4019E83E9DC30608617AF1421BA5CC7554036",;30
"50BFF9680F7014AC4BD6AA7639F48DFE10488D4D839EB77C4C9B01877F977E60D726D8EF5A3A",;31
"09AB4F5F5F593EC5AFBC87C13469D92CB2ED157F07A75927446D7708E2C9E7A29482D0C07257",;32
"8F6777A6D4DB32269AFD9CEA2265C70792B07DEA52E4987BB3F3DFEAB047EA467529715A5436",;33
"81178061B587E49F3D807AA915C06CC83109B8DD6D3BBDF0AE44C9D27AF64EA3D08DF351114D",;34
"2BAD9D50CEC0039AA25F15E339C412A3D482A22DEC48687D3929DD1CB863B74F26CCC40D3124",;35
"8C3AE0F48FAF004062368910E211D3C4B6C76FAF4B93FA8D61EC9E95020D87795C2DDCB8AC0E",;36
"331444E710FB1CCF74A1F91020B59B24623F0ECBB8E4FA42051292E3FFF8239C99B2C358A92A",;37
"178219699D0538620066539E612FD69940F84784C32970F97789F5FEB513CFA65402E0350044",;38
"6DB862EFD926654EF519E75434823CE9316292DBA3BEB96F43E1916CBAFEDD5176D548A4A61E",;39
"03E9FB89D1EB5BD3CC79054317E06190031BB54F62CC77A6971F6D241225C64A367E5504B8A4",;40
"AA78682246F0375CBDC44A69285F3B9FEBCEA02C65757D914E891125582E90DECA8CE96C84BA",;41
"C600C03AA33175A1FF42F350FBE2D867FECDF36B48B3BAEB5F31D3D0660E7CC2428602BE14A5",;42
"812EAA62B09A465EF1C71E28AD7DD5C75D4EF8C67B18A7EC3DB13742C1E3E0CB9DB86FF44F7F",;43
"59F0593FB8382359DEF70CA94C0B917B5CF1E76F84E1F07D096C132941380D5836F699B8F219",;44
"0A24008BA30A8B46D8AD1B0A3F027FB335323166005592E05B8E77FA4190EE75513C618A9875",;45
"A2DC66652AB61F65ACD25587C6E54047AE9644E302FA7565B36EADAF8079A65DAF6A509DCE4E",;46
"659A3259257DD20FB77020F2180D87356EA91B5B97DA92DDEEECF20CA7A96CC017B965525A0F",;47
"60C34FEA4704F3BB3EB53556E576B6BEECE400F16481A5B727D7BCF9344EF5E68C1233EAD4B6",;48
"01D9178B8ACC74ABD11E981FD8B309AEC41F998E777DC4939222DE89BB06E4EC6674A3801AD4",;49
"5ACE6C65E6AA5256B830F7FD4C3D7A1E81AB7577F22153DAFAD65FB91CF90FC478A46A881605",;50
"124D312A633950E8733F4073B0F449D403ACC4BC1F1628B9F7F9CABA855850E4B3FEFED6599C",;51
"985D5E7231E19A2AA7B084EF3B04D3DB438FDB9E08A29F354EA15326EB3A789CC66C77F23151",;52
"C235CB6CCA7C9AEFB759C8BA9E91CD2C3DB7882B148CDB0ED4F7D5F05118B2AC0B297F63D6A2",;53
"A776C9FC3AA42356A06ECF72F32C2D3431B70EC87F03F5E26F9C57F96D6904556EA4DD84A815",;54
"93B9909BE8509DFCFE6691B98BB0808A83EF0F795EC6425781D317598ED46D9E629979357773",;55
"3AA605EC8D9EE5A890DA4CF777DF06D0B32501E44E4A57013EAFA20F94D826B437930689C72F",;56
"89CA74EA95DFC4E1F9A48E9BEBF47D8827CF844873FB15D1CF36C30D00A0D5966D1710A83500",;57
"D31DD8A7A2478F00D55B1F1215692A8A51382EEBF647CCBFFDDA23818FAC3B3B301865B7481F",;58
"6EA2C7E3BF7F111FFA41D38F689E31848B69C07688045FE25D5EE040F5228A0C4D23C02995D2",;59
"DE3DB97F89ABB5A85307C72A3742F1D5EF492B858C77804E7B4BE82105A70E466C937E9DA8AC",;60
"402917C7CFA9B348CE380C01ACC46921FEC9853510554BBD4986DBB78FBFDF355F428F235EF0",;61
"8C322F3A946865326C3E2D5C40C6F181B7A36A70F40552E9DEB509AFE068DAF2B4373BC47DF8",;62
"F40982CBD8CDD837AE8D2920779E330F4FDE7EAF226F53E819DD7AF0AB8A09D30A77A99B516D",;63
"1C75C6E1A5A1FC140083DB946D5BC8FB1B747A4F36A986346535222C1ED55357D438D5648F78",;64
"819DEACA94EB139D6F1E910D41AFC12649D2A1FC3B6988BBFD798049B1A2D6ADA54AB88B571F",;65
"85F2DCA1CBC8501981054E5B784E53FBCC61BD234D4CCD573220400996C2FBA3C82F590EE2C2",;66
"D2C998AC03BE27085E3A743F2F5347E5DE81D6F55CC7AA3D5D1A245145D806DAC4D695471316",;67
"2550B21980C717AB8DD810345446EF8DFAEDD66B3EE2FB19F7BFD6B461468C86FBAC288F64FF",;68
"DA08B37E825C9B1A9B36B6EE4C7D7AB6F34B8299D125B656F2BADE50B42316A7B8A001ED85FF",;69
"9ECE5509D553835862606D0E957548507EAE1B0EFAE642BC06248194981E55D1B8A7C324FC7E",;70
"A41CDD27309D8716C09C4B3F2155421BD0600329BBA9337B1BCA4DE139C6CE01B4540137BDE7",;71
"8E68DECA68DA1A77D43297520F65FBEACED063977395898D1A8F9F674F8CC361C56F12184CFB",;72
"6F49B9A42486A78DE1FB36C7E717A3ADC73B0EA7A6773309AC43397F4C6AF234E06A27E055F7",;73
"0DF121E97C1BC5E0C618338B4CDC84223FBDFD5360BB4A73621D6A1C87A1499B4836B82EA227",;74
"3260083A7A452BDC18B31A1FBDF5CD900835ECFE22D33FBCCAAA35353073B4E8A21808340C88",;75
"1B32D60ADDB4AEE9AA46D0B8F718DCAE8439B19F158A82A5AC9F3012D2A8767B7D5A4C3E6A2C",;76
"425C65DFA86FE814243877424A2E1C72FB988DD4F6A572BED6469B098EE15F7AA9ECFC10AF1D",;77
"0D00":E#_#Section;78
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Snowball (source non punché)

Message par djes »

Si tu permets, je l'intégrerai à l'archive demain
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: Snowball (source non punché)

Message par majikeyric »

pas de problème.
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Re: Snowball (source non punché)

Message par Huitbit »

Merci pour le partage,

C'est bô !

Un jour, j'arriverai à faire des codes aussi propres :mrgreen:

Hasta la vista !
Elevé au MSX !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Snowball (source non punché)

Message par falsam »

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4944
Inscription : mer. 09/nov./2005 9:53

Re: Snowball (source non punché)

Message par SPH »

falsam a écrit :Extrait de ce post
:arrow: viewtopic.php?p=168163&sid=b1e5ad14fb1d ... 94#p168163
Je l'ai signalé comme bot ce matin :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre