La guirlande enchantée dépunchée

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

La guirlande enchantée dépunchée

Message par Huitbit »

Joyeux Noël à tous et bonne année 2015,
Après quelques petits bonhommes de sable :P :

Image

Je suis de retour, avant tout merci à djes d'avoir organisé le punch de Noël !
Merci à falsam pour son astuce, les musiques auraient été un peu moins musicales :roll: sans lui !
Bravo aux participants, dommage qu'il y en ait eu si peu.

Je n'ai pas encore voté mais ça va venir, en attendant, voici le code de mon punch.
http://www.purebasic.fr/english/viewtop ... 47#p458247

La partie qui va être utile pour mes futurs codes, c'est la procédure subdivision et la partie normalisation de la courbe,
le reste, c'est un exemple d'utilisation avec les listes chaînées qui mérite d'être améliorée car vu les délais du punch, j'ai fait au mieux mais je ne cache pas que j'ai vu plusieurs fois le message d'erreur du compilateur :
cet élément n'existe pas et donc je plante , na !
J'espère que cela sera utile à quelqu'un !
Il n'y a pas trop de maths, juste différentes utilisations un peu originales du théorème de Pythagore (sauce Huitbit :mrgreen: )

(ne pas oublier de sauvegarder avant d'exécuter à cause du fichier midi !)
Clic droit pour quitter en cours de partie
A la fin taper Entrée pour le MessageRequester()

Code : Tout sélectionner

; PurePunch Noël 2014
; Huitbit
lEcran = 800
hEcran = 600
longueurCourbe.l
cosinus.f
sinus.f
hypothenuse.f
Enumeration
	#EN_ATTENTE
	#BOULE_TOUCHEE
	#VERIFICATION
	#etoile = 7 ; car les boules sont les sprites de 1 à 6 , (0 non utilisé, valeur de boule()\spr à l'initialisation)
	#sapin
EndEnumeration
r = 12 ; rayon d'une boule
d = 2 * r + 1 ; diamètre d'une boule
Structure pt
	x.l
	y.l ; y  =  a  *  x  + b
	s.l ; abscisse curviligne
	a.f ; pente
	b.f ; ordonnée à l'origine
EndStructure

Structure courbe
	x.f
	y.f ; y  =  a  *  x  + b
	attente.l ; indique si la voie est libre ou pas
EndStructure

Structure boule
	x.f
	y.f
	s.l ; abscisse curviligne de la boule
	ds.f ; déplacement positif ou négatif
	spr.l
	retour.l ; indique si la boule est en marche  arrière
EndStructure

;- Label pour bouclage du jeu
jeu:

NewList boule.boule()

nbrSubdv = 4 ; nombre de subdivisions pour le chemin des boules
nPtCtrl = 12 ; nombre de points de contrôle
rapportSubdv.f = 0.25 ; rapport utilisé pour les subdivisions de la courbe
Dim p.pt(nPtCtrl) ; tableau de stockage des points de contrôle, il sera redimensionné à chaque passage
; dans la procedure subdv
P(0)\x = 362
P(0)\y = 20
; création de la forme de la guirlande avec une fonction sinus "améliorée"
For n = 0 To nPtCtrl - 1
	P(n + 1)\y = P(n)\y + 480 / nPtCtrl + Random(20) * Pow(-1, n)
	P(n + 1)\x = P(n)\y * Sin(2 * #PI * P(n)\y / 200) + 400 + Random(20) * Pow(-1, n)
Next n



Macro affine(a, b, xA, yA, xB, yB) ; y = a*x+b
	If xB = xA ; interdire les portions verticales où le coefficient directeur n'est pas défini
		xB = xA + 1
	EndIf
	; prise en compte du sens de déplacement pour le calcul de la pente
	If xA < xB
		a = (yB - yA) / (xB - xA)
	Else
		a = (yB - yA) / (xA - xB)
	EndIf
	b = yB - a * xB
EndMacro

Macro creerBoule(id, couleur)
	CreateSprite(id, d, d)
	StartDrawing(SpriteOutput(id))
		Circle(r, r, r, couleur)
	StopDrawing()
EndMacro

Procedure.l subdv(Array pP.pt(1), pNptCtrl, pNbrSubdv, pRapportSubdv.f)
	Dim Ptemp.pt(pNptCtrl)
	CopyArray(pP(), Ptemp())
	
	For nSubdv = 1 To pNbrSubdv
		
		ReDim pP(2 * pNptCtrl - 1)
		
		For n = 0 To pNptCtrl - 1
			pP(2 * n)\x = Ptemp(n)\x + pRapportSubdv * (Ptemp(n + 1)\x - Ptemp(n)\x)
			pP(2 * n)\y = Ptemp(n)\y + pRapportSubdv * (Ptemp(n + 1)\y - Ptemp(n)\y)
			pP(2 * n + 1)\x = Ptemp(n)\x + (1 - pRapportSubdv) * (Ptemp(n + 1)\x - Ptemp(n)\x)
			pP(2 * n + 1)\y = Ptemp(n)\y + (1 - pRapportSubdv) * (Ptemp(n + 1)\y - Ptemp(n)\y)
		Next n
		
		pNptCtrl = 2 * pNptCtrl - 1
		ReDim Ptemp.pt(pNptCtrl)
		CopyArray(pP(), Ptemp())
		
	Next nSubdv
	
	ProcedureReturn pNptCtrl
	
EndProcedure

;- @@début génération courbe

; Subdivision courbe
nPtCtrl = subdv(P(), nPtCtrl, nbrSubdv, rapportSubdv)

;- Calculs des équations affines de chaque segment
For n = 0 To nPtCtrl - 1
	affine(P(n)\a, P(n)\b, P(n)\x, P(n)\y, P(n + 1)\x, P(n + 1)\y)
Next n

;- calcul de la longueur de la courbe L=Somme(dL) avec dL =Sqr[1+(dy/dx)²].dx et dy/dx = a
; et détermination de l'abscisse curviligne s des points de contrôle
; comparaison des triangles rectangles  (côté adj : dx ; côté opp: dy ; hyp : dL )
; et  (côté adj : 1 ;   côté opp: a    ;hyp : Sqr[1+(dy/dx)²]  )
; dL / dx = cos(angle) =  1 / Sqr[1+(dy/dx)²] )

P(0)\s = 0
longueurCourbe = 0
For n = 0 To nPtCtrl - 1
	longueurCourbe = longueurCourbe + Sqr(1 + P(n)\a * P(n)\a) * Abs(P(n + 1)\x - P(n)\x)
	P(n + 1)\s = longueurCourbe
Next n

;- Abscisse curviligne (correspondance entre la position sur la courbe de 0 à longueurCourbe et les coordonnées cartésiennes (x,y)
Dim s.courbe(longueurCourbe)
; On va graduer la courbe de 1 en 1 et récuperer les coordonnées (x,y) de chaque graduation
; on va de point de contrôle P(n) en point de contrôle P(n+1) situés à des distances quelconques

; travail dans le triangle rectangle  (côté adj : cos(angle) ; côté opp: sin(angle) ; hyp : 1 )
; avec cos(angle) =  +-1 / Sqr[1+a²] et sin(angle) =  a / Sqr[1+a²]

; cas du premier point de contrôle P(0)
; l=0
s(0)\x = P(0)\x
s(0)\y = P(0)\y
hypothenuse = Sqr(1 + P(0)\a * P(0)\a)

l = 1 ; suite des calculs à partir de la graduation 1 de la courbe
For n = 0 To nPtCtrl - 1
	
	hypothenuse = Sqr(1 + P(n)\a * P(n)\a)
	cosinus = Sign(P(n + 1)\x - P(n)\x) / hypothenuse ; prise en compte du sens des x croissants pour les calculs
	sinus = P(n)\a / hypothenuse
	
	While l < P(n + 1)\s
		
		s(l)\x = s(l - 1)\x + cosinus
		s(l)\y = s(l - 1)\y + sinus
		l = l + 1
		
	Wend
	
	; ajustement de la valeur  des coordonnées à chaque point de contrôle
	If l = P(n + 1)\s
		
		s(l)\x = P(n + 1)\x
		s(l)\y = P(n + 1)\y
		l = l + 1
		
	EndIf
	
Next n
;- @@fin génération courbe
;- -
;- musique
If CreateFile(0, "zic.mid")
	WriteData(0, ?mid_start, ?mid_end - ?mid_start)
	CloseFile(0)
EndIf ; ;;;;;;;;;;
;- PROGRAMME PRINCIPAL
;- 
InitSprite()
InitMouse()
InitMovie()
OpenWindow(0, 0, 0, lEcran, hEcran, "PunchNoël", #PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0), 0, 0, lEcran, hEcran, 1, 0, 0, #PB_Screen_SmartSynchronization)
LoadMovie(0, "zic.mid")

;- étoile
Dim pDessin.pt(11) ; 11 points de contrôle
Restore etoile
For i = 0 To 10
	Read.l pDessin(i)\x
	Read.l pDessin(i)\y
Next i

nMax = subdv(pDessin(), 10, 4, 0.10)

pDessin(nMax)\x = pDessin(0)\x
pDessin(nMax)\y = pDessin(0)\y
CreateSprite(#etoile, 88, 88)
StartDrawing(SpriteOutput(#etoile))
	For i = 0 To nMax - 1
		For j = 0 To 1
			LineXY(pDessin(i)\x + j, pDessin(i)\y + j, pDessin(i + 1)\x + j, pDessin(i + 1)\y + j, RGB(255, 255, 0))
		Next j
	Next i
	FillArea(44, 44, RGB(255, 255, 0), RGB(255, 200, 32))
	
StopDrawing()

;- sapin
Dim pDessin.pt(20) ; 11 points de contrôle
Restore sapin
For i = 0 To 19
	Read.l pDessin(i)\x
	Read.l pDessin(i)\y
Next i

nMax = subdv(pDessin(), 19, 4, 0.10)

pDessin(nMax)\x = pDessin(0)\x
pDessin(nMax)\y = pDessin(0)\y
CreateSprite(#sapin, lEcran, hEcran)
StartDrawing(SpriteOutput(#sapin))
	For n = 0 To 999 ; étoiles
		Box(Random(999), Random(999), 1, 1, RGB(255, 255, 255))
	Next n
	Ellipse(400, 600, 1000, 200, RGB(220, 255, 255))
	
	For i = 0 To nMax - 1
		For j = 0 To 2
			LineXY(pDessin(i)\x + j + 200, pDessin(i)\y + j + 60, pDessin(i + 1)\x + j + 200, pDessin(i + 1)\y + j + 60, RGB(0, 255, 0))
		Next j
	Next i
	FillArea(200 + 200, 100 + 60, RGB(0, 255, 0), RGB(0, 192, 64))
	Ellipse(P(nPtCtrl)\x, P(nPtCtrl)\y, 30, 10, RGB(64, 64, 64))
	
StopDrawing()

;- création des boules
creerBoule(1, RGB(255, 0, 0)) ; rouge
creerBoule(2, RGB(255, 255, 0)) ; jaune
creerBoule(3, RGB(0, 255, 0)) ; verte
creerBoule(4, RGB(0, 0, 255)) ; bleu
creerBoule(5, RGB(255, 0, 255)) ; magenta
creerBoule(6, RGB(64, 64, 64)) ; grise
;- 
;- BOUCLE PRINCIPALE
;- 
sprTir = Random(5, 1)
collision = #EN_ATTENTE
total = 0
MouseLocate(lEcran * 0.5, hEcran - 2 * d)
Repeat
	
	;- gestion de la musique
	If MovieStatus(0) = 0
		PlayMovie(0, WindowID(0))
		Delay(9) ; petite pause pour limiter le blocage du programme lorsque la musique reprend
	EndIf
	
	;- gestion de la souris
	ExamineMouse()
	
	If ElapsedMilliseconds() - chronoClic > 80
		chronoClic = ElapsedMilliseconds()
		If MouseButton(#PB_MouseButton_Left) And clic = 0 ; variable clic pour gérer  le relâchement du bouton gauche
			; et éviter une détection en continu du clic gauche
			clic = 1
			tir = 1
			xTir = MouseX()
		EndIf ; MouseButton(#PB_MouseButton_Left)  clic = 0
	EndIf ; ElapsedMilliseconds() - chronoClic >80
	
	If MouseButton(#PB_MouseButton_Left) = 0 ; on détecte si le bouton est relâché
		clic = 0
	EndIf ; MouseButton(#PB_MouseButton_Left) = 0
	
	If tir = 1 ; on déplace la boule tirée verticalement
		xTir = xTir
		yTir = yTir - r
		
		If yTir < d ; la boule sort de l'écran
			tir = 0
			sprTir = Random(5, 1)
		EndIf ; yTir < d
		
	Else ; on suit la souris  en bas de l'écran
		xTir = MouseX()
		yTir = hEcran - 2 * d
		
	EndIf ; tir=1
	
	;- collision
	ForEach boule()
		If SpriteCollision(sprTir, xTir, yTir, boule()\spr, boule()\x, boule()\y) And collision = #EN_ATTENTE
			; 			- insertion de la boule, décalage des autres éléments, vérification si trois boules alignées
			collision = #BOULE_TOUCHEE
			Break
		EndIf
	Next
	
	If collision = #BOULE_TOUCHEE
		; décaler toutes les propriétés de la boule vers l'avant
		Repeat
			
			sprBouleTouchee = boule()\spr
			boule()\spr = sprTir
			sprTir = sprBouleTouchee
			
		Until PreviousElement(boule()) = 0
		
		FirstElement(boule())
		sPremier = boule()\s
		
		If sPremier + d < longueurCourbe ; si la bouche d'aération n'est pas atteinte, on ajoute la boule tirée
			InsertElement(boule())
			boule()\s = sPremier + d
			boule()\spr = sprBouleTouchee
		Else ; sinon, la partie est finie
			fin = 1
		EndIf ; sPremier+d<longueurCourbe
		
		collision = #VERIFICATION ; vérification de la chaîne à faire (étape suivante)
		tir = 0
		sprTir = Random(5, 1)
		
	EndIf ; collision = #BOULE_TOUCHEE
	
	;- vérification chaîne
	
	If collision = #VERIFICATION
		ForEach boule()
			
			recommencerVerification = 0
			If ListIndex(boule()) < ListSize(boule()) - 2
				bouleA = boule()\spr
				indexA = ListIndex(boule())
				NextElement(boule())
				bouleB = boule()\spr
				
				NextElement(boule())
				bouleC = boule()\spr
				indexC = ListIndex(boule())
				
				NextElement(boule())
				bouleD = boule()\spr
				indexD = ListIndex(boule())
				
				If bouleA = bouleB And bouleA = bouleC And bouleA = bouleD
					SelectElement(boule(), indexD)
					If boule()\s > d
						sCourant = boule()\s ; on récupère l'abscisse curviligne de la quatrième boule D
					EndIf ; boule()\s>d
					total = total + 4
					DeleteElement(boule())
					DeleteElement(boule())
					DeleteElement(boule())
					DeleteElement(boule())
					
					For sC = sCourant To longueurCourbe
						s(sC)\attente = 0
					Next sC
					
					recommencerVerification = 1
					
				ElseIf bouleA = bouleB And bouleA = bouleC
					SelectElement(boule(), indexC)
					
					If boule()\s > d
						sCourant = boule()\s ; on récupère l'abscisse curviligne de la troisième boule C
					EndIf ; boule()\s>d
					total = total + 3
					
					DeleteElement(boule())
					DeleteElement(boule())
					DeleteElement(boule())
					
					For sC = sCourant To longueurCourbe
						s(sC)\attente = 0
					Next sC
					
					recommencerVerification = 1
				EndIf ; combo ABC ou ABCD
				
				If recommencerVerification = 1
					FirstElement(boule())
				Else
					SelectElement(boule(), indexA)
				EndIf
				
			EndIf ; ListIndex(boule())  < ListSize(boule())-2
			
		Next ; boule()
		
		collision = #EN_ATTENTE
		
	EndIf ; collision=#VERIFICATION
	
	LastElement(boule())
	
	
	;- temporisation du jeu
	If ElapsedMilliseconds() - chronoBoule > 30
		chronoBoule = ElapsedMilliseconds()
		
		;- entrée des boules sur la piste
		If s(0)\attente = 0
			
			AddElement(boule())
			boule()\s = 0
			boule()\x = s(boule()\s)\x
			boule()\y = s(boule()\s)\y
			
			boule()\ds = 1
			; première boule grise
			If ListIndex(boule()) = 0
				boule()\spr = 6
			Else
				boule()\spr = Random(5, 1)
				; interdire le tirage de trois boules identiques consécutives
				While boule()\spr = sprPrecedent1 And boule()\spr = sprPrecedent2
					boule()\spr = Random(5, 1)
				Wend
			EndIf
			sprPrecedent3 = sprPrecedent2 ; début du jeu à la 3ème boule
			sprPrecedent2 = sprPrecedent1
			sprPrecedent1 = boule()\spr
		EndIf ; s(0)\attente = 0
		
		
		;- gestion des déplacements
		ForEach boule()
			If boule()\s < longueurCourbe
				
				; recule si rien derrière
				If boule()\s > d + 1 ; on ne regarde pas la valeur pour s négatif
					; comparaison de la distance entre deux boules consécutives
					indexA = ListIndex(boule())
					
					sA = boule()\s
					SelectElement(boule(), indexA + 1)
					indexB = ListIndex(boule())
					sB = boule()\s
					
					If (sA - sB) > d + 1
						
						SelectElement(boule(), indexA) ; retour à la boule en cours
						boule()\ds = -4
						boule()\retour = 1
						
					Else
						SelectElement(boule(), indexA) ; retour à la boule en cours
						boule()\retour = 0
						boule()\s = sb + d ; ajustement des boules
						s(boule()\s)\attente = 0
						
					EndIf ; (sA-sB)>d
				EndIf ; boule()\s>d
				
				
				; avance si piste dégagée
				If s(boule()\s)\attente = 1
					boule()\ds = 0
				Else
					
					If boule()\retour = 0
						boule()\ds = 1
						s(boule()\s)\attente = 1
						
						If boule()\s >= d
							s(boule()\s - d)\attente = 0
						EndIf
						
					EndIf ; boule()\retour=0
					
				EndIf ; s(boule()\s+1)\attente = 1
				
				
				boule()\s = boule()\s + boule()\ds
				boule()\x = s(boule()\s)\x
				boule()\y = s(boule()\s)\y
			Else
				fin = 1
				
			EndIf ; s<longueurCourbe
			
		Next ; boule()
		
		
		FirstElement(boule())
		;- "nettoyage" de la courbe	 des résidus s()\attente=1 en aval de la première boule
		sCourant = boule()\s
		For sC = sCourant To longueurCourbe - 1
			s(sC)\attente = 0
		Next sC
	EndIf ; ElapsedMilliseconds()-chronoBoule>30
	
	;- Affichage
	DisplaySprite(#sapin, 0, 0)
	
	ForEach boule()
		If ListIndex(boule()) < ListSize(boule()) - 1
			DisplayTransparentSprite(boule()\spr, boule()\x - r, boule()\y - r)
		EndIf
	Next
	
	If sprPrecedent3 <> 0 ; début du jeu à la 3ème boule
		DisplayTransparentSprite(sprTir, xTir - r, yTir - r)
	EndIf ; sprPrecedent3<>0
	
	DisplayTransparentSprite(#etoile, 342, 0)
	
	
	If total >= 365
		MessageRequester("", "Félicitations !")
		End
		End
	EndIf
	If fin = 1
		MessageRequester("", "Argh, pauvre Santa " + total + " boules !")
		fin = 0
		total = 0
		Goto jeu
	EndIf
	
	FlipBuffers()
Until WindowEvent() = #PB_Event_RightClick
DataSection
	etoile:
		Data.l 30, 68, 66, 84, 63, 54, 87, 30, 60, 27, 45, 1, 28, 27, 2, 32, 22, 53, 13, 82, 30, 68
	sapin:
		Data.l 150, 392, 248, 424, 374, 378, 275, 255, 328, 221, 262, 182, 244, 139, 286, 120, 217, 63
		Data.l 182, 2, 140, 75, 83, 121, 110, 146, 75, 207, 27, 232, 89, 268, 49, 323, 0, 351, 38, 406, 109, 411, 150, 392
	mid_start:
		Data.q $060000006468544D, $544D780003000100, $FF00D70000006B72, $7F0303120F05397F
		Data.q $61482D0401FF007F, $656C7261702D7475, $6165522820737275, $676948206B65746C
		Data.q $696E696665442068, $647541206E6F6974, $050F7FFF00296F69, $302E353130321C0F
		Data.q $FF00030131312E31, $63694D2D0F052C7F, $532074666F736F72, $6972655320736E61
		Data.q $462C35322E382C66, $6C61462C65736C61, $FF00302C312C6573, $0000000300600554
		Data.q $7E05F000000121FF, $0121FF00F701097F, $1802040458FF0000, $0000000259FF0008
		Data.q $60834F45060351FF, $7A696C65461E06FF, $6461646976614E20, $2065736F4A202D20
		Data.q $6E616963696C6546, $72544D002FFF006F, $7FFF00B20900006B, $B9004848090F0505
		Data.q $C9000000B900400A, $7FFF007F07B90001, $656E6547060F050F, $4944494D206C6172
		Data.q $19100F05047FFF00, $03FF00000121FF00, $20646E616C6F520C, $79B900736D757244
		Data.q $0000050000010000, $2399000040007F0B, $0000381E5F38006E, $00451E55451E0023
		Data.q $451E5545005F251E, $006E231E00250000, $00381E5F38005545, $451E002300004500
		Data.q $1E6E231E00451E55, $5F38006E401E0023, $451E00400000381E, $0000401E6E400055
		Data.q $5F38006E231E0045, $451E00230000381E, $005F251E00451E55, $00250000451E5545
		Data.q $38005545006E231E, $0000450000381E5F, $00451E55451E0023, $3E1E6E3E006E231E
		Data.q $006E401E00230000, $00400000381E5F38, $401E6E400055451E, $006E231E00450000
		Data.q $00230000381E5F38, $251E00451E55451E, $0000451E5545005F, $5545006E231E0025
		Data.q $450000381E5F3800, $1E55451E00230000, $00231E6E231E0045, $381E5F38006E401E
		Data.q $0055451E00400000, $00450000401E6E40, $381E5F38006E231E, $1E55451E00230000
		Data.q $5545005F251E0045, $231E00250000451E, $1E5F38005545006E, $0023000045000038
		Data.q $231E00451E55451E, $00003E1E6E3E006E, $5F38006E401E0023, $451E00400000381E
		Data.q $0000401E6E400055, $5F38006E231E0045, $451E00230000381E, $005F251E00451E55
		Data.q $00250000451E5545, $38005545006E231E, $0000450000381E5F, $00451E55451E0023
		Data.q $401E00231E6E231E, $0000381E5F38006E, $6E400055451E0040, $231E00450000401E
		Data.q $0000381E5F38006E, $00451E55451E0023, $451E5545005F251E, $006E231E00250000
		Data.q $00381E5F38005545, $451E002300004500, $006E231E00451E55, $002300003E1E6E3E
		Data.q $381E5F38006E401E, $0055451E00400000, $00450000401E6E40, $381E5F38006E231E
		Data.q $1E55451E00230000, $5545005F251E0045, $231E00250000451E, $1E5F38005545006E
		Data.q $0023000045000038, $231E00451E55451E, $006E401E00231E6E, $00400000381E5F38
		Data.q $401E6E400055451E, $006E231E00450000, $00230000381E5F38, $251E00451E55451E
		Data.q $0000451E5545005F, $5545006E231E0025, $450000381E5F3800, $006E235A00230000
		Data.q $002300003E1E6E3E, $381E5F38006E401E, $1E6E401E00400000, $5F38006E231E0040
		Data.q $451E00230000381E, $005F251E00451E55, $00250000451E5545, $38005545006E231E
		Data.q $0000450000381E5F, $00451E55451E0023, $401E00231E6E231E, $0000381E5F38006E
		Data.q $6E400055451E0040, $231E00450000401E, $0000381E5F38006E, $00451E55451E0023
		Data.q $451E5545005F251E, $006E231E00250000, $00381E5F38005545, $451E002300004500
		Data.q $006E231E00451E55, $002300003E1E6E3E, $381E5F38006E401E, $0055451E00400000
		Data.q $00450000401E6E40, $381E5F38006E231E, $1E55451E00230000, $5545005F251E0045
		Data.q $231E00250000451E, $1E5F38005545006E, $0023000045000038, $231E00451E55451E
		Data.q $006E401E00231E6E, $00400000381E5F38, $401E6E400055451E, $006E231E00450000
		Data.q $00230000381E5F38, $251E00451E55451E, $0000451E5545005F, $5545006E231E0025
		Data.q $450000381E5F3800, $1E55451E00230000, $6E3E006E231E0045, $401E002300003E1E
		Data.q $0000381E5F38006E, $6E400055451E0040, $231E00450000401E, $0000381E5F38006E
		Data.q $00451E55451E0023, $451E5545005F251E, $006E231E00250000, $00381E5F38005545
		Data.q $451E002300004500, $1E6E231E00451E55, $5F38006E401E0023, $451E00400000381E
		Data.q $0000401E6E400055, $5F38006E231E0045, $451E00230000381E, $005F251E00451E55
		Data.q $00250000451E5545, $38005545006E231E, $0000450000381E5F, $00451E55451E0023
		Data.q $3E1E6E3E006E231E, $006E401E00230000, $00400000381E5F38, $401E6E400055451E
		Data.q $006E231E00450000, $00230000301E6430, $251E00451E55451E, $0000451E5545005F
		Data.q $5545006E231E0025, $450000291E642900, $1E55451E00230000, $642D006E231E0045
		Data.q $401E002300002D1E, $0055451E00401E6E, $00291E6429006E40, $231E004500004000
		Data.q $0000291E6429006E, $00381E5F385A0023, $2A5A002A1E7F2A5A, $006E235A002A1E7F
		Data.q $00381E5F38007F2A, $2A1E002300002A00, $0000451E5545007F, $5545007F2A1E002A
		Data.q $450000261E5F2600, $006E231E002A0000, $5F38005545007F2A, $2A0000230000381E
		Data.q $1E7F2A1E00450000, $7F2A006E231E002A, $2A00003E1E6E3E00, $007F2A1E00230000
		Data.q $5F26005F38006E40, $4000002A0000261E, $006E401E00380000, $004000002E1E782E
		Data.q $38007F2A006E231E, $00002A0000381E5F, $5545007F2A1E0023, $2A1E002A0000451E
		Data.q $1E5F26005545007F, $002A000045000026, $45007F2A006E231E, $0000381E5F380055
		Data.q $004500002A000023, $231E002A1E7F2A1E, $1E6E3E007F2A006E, $002300002A00003E
		Data.q $38006E40007F2A1E, $0000261E5F26005F, $003800004000002A, $2E1E782E006E401E
		Data.q $006E231E00400000, $00381E5F38007F2A, $2A1E002300002A00, $0000451E5545007F
		Data.q $5545007F2A1E002A, $450000261E5F2600, $006E231E002A0000, $5F38005545007F2A
		Data.q $2A0000230000381E, $1E7F2A1E00450000, $7F2A006E231E002A, $2A00003E1E6E3E00
		Data.q $007F2A1E00230000, $5F26005F38006E40, $4000002A0000261E, $006E401E00380000
		Data.q $004000002E1E782E, $38007F2A006E231E, $00002A0000381E5F, $5545007F2A1E0023
		Data.q $2A1E002A0000451E, $1E5F26005545007F, $002A000045000026, $45007F2A006E231E
		Data.q $0000381E5F380055, $004500002A000023, $231E002A1E7F2A1E, $1E6E3E007F2A006E
		Data.q $002300002A00003E, $38006E40007F2A1E, $0000261E5F26005F, $003800004000002A
		Data.q $2E1E782E006E401E, $006E231E00400000, $00381E5F38007F2A, $2A1E002300002A00
		Data.q $0000451E5545007F, $5545007F2A1E002A, $450000261E5F2600, $006E231E002A0000
		Data.q $5F38005545007F2A, $2A0000230000381E, $1E7F2A1E00450000, $7F2A006E231E002A
		Data.q $2A00003E1E6E3E00, $007F2A1E00230000, $5F26005F38006E40, $4000002A0000261E
		Data.q $006E401E00380000, $004000002E1E782E, $38007F2A006E231E, $00002A0000381E5F
		Data.q $5545007F2A1E0023, $2A1E002A0000451E, $1E5F26005545007F, $002A000045000026
		Data.q $45007F2A006E231E, $0000381E5F380055, $004500002A000023, $231E002A1E7F2A1E
		Data.q $1E6E3E007F2A006E, $002300002A00003E, $38006E40007F2A1E, $0000261E5F26005F
		Data.q $003800004000002A, $2E1E782E006E401E, $006E231E00400000, $00381E5F38007F2A
		Data.q $2A1E002300002A00, $0000451E5545007F, $5545007F2A1E002A, $450000261E5F2600
		Data.q $006E231E002A0000, $5F38005545007F2A, $2A0000230000381E, $1E7F2A1E00450000
		Data.q $7F2A006E231E002A, $2A00003E1E6E3E00, $007F2A1E00230000, $5F26005F38006E40
		Data.q $4000002A0000261E, $006E401E00380000, $004000002E1E782E, $38007F2A006E231E
		Data.q $00002A0000381E5F, $5545007F2A1E0023, $2A1E002A0000451E, $1E5F26005545007F
		Data.q $002A000045000026, $45007F2A006E231E, $0000381E5F380055, $004500002A000023
		Data.q $231E002A1E7F2A1E, $1E6E3E007F2A006E, $002300002A00003E, $38006E40007F2A1E
		Data.q $0000261E5F26005F, $003800004000002A, $2E1E782E006E401E, $037FFF1E00400000
		Data.q $4D002FFF000A0F05, $001B0300006B7254, $4008090F05057FFF, $47060F050F7FFF00
		Data.q $4D206C6172656E65, $000079B000494449, $00565BB000445DB0, $004A0AB0007F0BB0
		Data.q $FF000AC0006807B0, $206B636172540703, $E000000120FF0033, $1E68459034814000
		Data.q $216E4A901E684580, $1B684990576E4A80, $1D684A9021684980, $4D6847901F684A80
		Data.q $6347904784684780, $684C901863478024, $684A9041684C8037, $63479019684A8023
		Data.q $684590226347801A, $4590408468458055, $4A902A6845801968, $4990336E4A80396E
		Data.q $4A901D6E4980216E, $47901E634A802563, $4390526E4780576E, $45902A4D4380134D
		Data.q $47901B6845802568, $4590546E4780286E, $45904D6845802C68, $4590456845802B68
		Data.q $4390106845802D68, $4590346343804263, $4290286845801B68, $9073845F42805A5F
		Data.q $902A5A4580145A45, $90526E4A80226E4A, $90216E49801B6E49, $901E634A8021634A
		Data.q $56846847803C6847, $225647801B564790, $3B6E4C803C6E4C90, $0E6E4A802C6E4A90
		Data.q $215F47801D5F4790, $8468458061684590, $6345802A6345902F, $684A8042684A9015
		Data.q $6E4980276E499033, $6E4A80296E4A9016, $6E4780686E479015, $524380165243904B
		Data.q $6345802963459027, $6847804068479015, $6345804163459039, $6845803768459035
		Data.q $6345802663459043, $6843804368439015, $5F4380265F439036, $5F4280785F429016
		Data.q $4E80136E4E905F83, $4E8015634E902A6E, $4E8017634E902563, $4E80506E4E902763
		Data.q $4C8019684C90276E, $4A80145A4A902368, $4A80456E4A90295A, $4780105A4790316E
		Data.q $47803E6847902C5A, $4A804C6E4A903868, $8012684C9024816E, $8015684C902A684C
		Data.q $8017634C9027684C, $804D684C9029634C, $8019684A902C684C, $801156479023684A
		Data.q $80406E47902B5647, $8010494590366E47, $802E6845902D4945, $802C5A45904A6845
		Data.q $0F564E9044815A45, $12634E902B564E80, $16634E902A634E80, $216E4E9027634E80
		Data.q $125A4C901B6E4E80, $145A4C902B5A4C80, $13564A90275A4C80, $416E4A902A564A80
		Data.q $12524790356E4A80, $445F47902C524780, $0F454A90375F4780, $14564A9029454A80
		Data.q $1B634A9029564A80, $2163499022634A80, $766849901A634980, $19564A903C684980
		Data.q $81684C9023564A80, $634C9035684C8002, $4A902D634C800281, $B057684A80598168
		Data.q $FF000078B000007B
		Data.b $2F, $00
	mid_end:
EndDataSection

Hasta la vista !
Dernière modification par Huitbit le dim. 04/janv./2015 2:39, modifié 1 fois.
Elevé au MSX !
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Re: La guirlande enchantée dépunchée

Message par Frenchy Pilou »

(testé avec 5.22 x86)
Il y a la musique, il y a le sapin, le manteau neigeux, les étoiles fixes, mais c'est tout! ;)

On doit agir sur quelque chose pour faire démarrer quoi que ce soit?
Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: La guirlande enchantée dépunchée

Message par Ar-S »

Normalement de droite à gauche avec ta souris tu diriges une boule d'une couleur en bas del'ecran. Au clic gauche tu tires la boule et tu dois aligner au moins 3 boules de la même couleur pour les faire disparaitre.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: La guirlande enchantée dépunchée

Message par djes »

Super, je l'intégrerai à l'archive finale, si tu veux bien :)
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Re: La guirlande enchantée dépunchée

Message par Frenchy Pilou »

Ah, cela marche avec le code donné sur la partie anglaise! :)
Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Re: La guirlande enchantée dépunchée

Message par Huitbit »

Hello,

@djes
Pas de problème, au contraire :P , si quelqu'un veut faire une version "deluxe" ou "gold" ! :lol: :lol:
Frenchy Pilou a écrit :Ah, cela marche avec le code donné sur la partie anglaise! :)
Bizarre, vous avez dit bizarre ? :?
C'est le même code, j'espère ne pas avoir ajouté des erreurs en dépunchant car j'ai enlevé des trucs superflus que j'avais laissé par erreur lorsque je faisais des tests avant le punch final(j'aurais eu encore un peu plus de place :mrgreen: ) .

Quelqu'un a-t-il le même problème que Frenchy Pilou avec le code ci-dessus ?


Hasta la vista !
Dernière modification par Huitbit le sam. 03/janv./2015 14:21, modifié 1 fois.
Elevé au MSX !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: La guirlande enchantée dépunchée

Message par falsam »

Huitbit a écrit :Quelqu'un a-t-il le même problème avec le code ci-dessus ?
Pas de probléme: Aprés 1 seconde la balle apparaît bien centrée en bas de la fenêtre.
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
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Re: La guirlande enchantée dépunchée

Message par Huitbit »

Merci pour le retour !
Elevé au MSX !
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Re: La guirlande enchantée dépunchée

Message par Frenchy Pilou »

Aujourd'hui, cela marche aussi avec le code "francophone"! 8)
Les mystères de l'Ouest! :D
Est beau ce qui plaît sans concept :)
Speedy Galerie
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Re: La guirlande enchantée dépunchée

Message par Huitbit »

Ca ne marche que les jours impairs :mrgreen:
:lol:
Elevé au MSX !
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: La guirlande enchantée dépunchée

Message par Micheao »

Merci Huitbit pour ce partage c'est trés beau

à quoi sert tous les data présents j'ai vu écris étoile, sapin et midi start mais je comprend pas comment tu as fait pour écrire tous les datas ?

Merci
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: La guirlande enchantée dépunchée

Message par Micoute »

Huitbit a écrit :Ca ne marche que les jours impairs :mrgreen:
:lol:
C'est dommage, je m'étais dit: je l'essaierai dimanche, bon tant pis ce sera mardi !

Trêve de plaisanterie, il fonctionne très bien, punché ou dépunché et merci beaucoup pour ce partage.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
majikeyric
Messages : 602
Inscription : dim. 08/déc./2013 23:19
Contact :

Re: La guirlande enchantée dépunchée

Message par majikeyric »

Merci pour le partage Huitbit,

C'est la première fois que je vois un bonhomme de sable :lol:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: La guirlande enchantée dépunchée

Message par Ar-S »

Faut dire qu'il doit pas en voir souvent de la neige l'ami huitbit :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Huitbit
Messages : 940
Inscription : jeu. 08/déc./2005 5:19
Localisation : Guadeloupe

Re: La guirlande enchantée dépunchée

Message par Huitbit »

Hello,

Merci pour les retours.
Micheao a écrit : à quoi servent tous les data présents j'ai vu écrit étoile, sapin et midi start mais je ne comprends pas comment tu as fait pour écrire tous les data ?

Merci
Les data étoile et sapin, correspondent aux points de contrôle(comme quand on relie les points de 1 à 20 pour dessiner quelque chose) qui donneraient des formes "pointues" si ces points de contrôle ne passaient pas dans la procédure subdivision.
Les data midi start correspondent à la musique, jette un coup d'œil à l'astuce de falsam dans le purepunch de Noël !
majikeyric a écrit : C'est la première fois que je vois un bonhomme de sable :lol:
Ce sont les enfants (T-shirts bleus sur la photo) qui ont eu l'idée après avoir vu ce court métrage http://www.filmspourenfants.net/video/b ... neige.html avant d'aller à la plage.
Presque chaque jour, on faisait un bonhomme :P .
Ar-S a écrit :Faut dire qu'il doit pas en voir souvent de la neige l'ami huitbit :mrgreen:
Tout à fait exact, il y a eu des grêlons ( http://www.domactu.com/actualite/917230 ... uadeloupe/ ) mais la neige pas encore. Par contre l'eau était un peu froide, il fallait au moins 3 secondes pour s'habituer au 29°C :mrgreen:
:wink:


Hasta la vista !
Elevé au MSX !
Répondre