Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Roue pour jeu | |
| | Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Roue pour jeu Lun 28 Mai 2018 - 15:37 | |
| Bonjour à tous ! Une roue ! Cette roue est réalisée à partir d'instructions 3D. Visuellement, elle n'a aucun effet 3D. J'en profite pour remercier Jack d'avoir inclus dans Panoramic ce moteur 3D. C'est le style de roue que l'on voit dans certains jeux télévisés. Le principe : vous cliquez sur la roue. Lorsque vous relâchez le bouton de la souris, la roue s'élance pour s'arrêter quelques secondes plus tard. Vous ne pouvez pas relancer la roue tant qu'elle n'est pas à l'arrêt. Plus vous cliquez longuement, plus la roue fera de tours (limité à 5 secondes). Dans le source, lignes 21 à 23 pour changer la couleur de fond. 21 BackColor_r% = 242 22 BackColor_v% = 236 23 BackColor_b% = 223 Ligne 24 pour supprimer le centre de la roue. 24 CenterOption% = 1 => mettre 0 pour supprimer le disque central. ...et toutes les autres lignes pour personnaliser sa propre roue. Pour ceux qui le souhaitent, servez-vous ! - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ ' main Init() Skin() Wheel() Index() Instructions() ON_MOUSE_DOWN 100,Action END ' ------------------------------------------------------------------------------ SUB Init() LABEL Action,result,Quit DIM c,x,y,t,alea DIM BackColor_r%,BackColor_v%,BackColor_b% DIM CenterOption% BackColor_r% = 242 BackColor_v% = 236 BackColor_b% = 223 CenterOption% = 1 DEGREES c=1 HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0) WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0) LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 PICTURE 1 WIDTH 1,500 HEIGHT 1,500 ON_CLOSE 0, Quit END_SUB ' ------------------------------------------------------------------------------ SUB Wheel() DIM_LOCAL i% SCENE3D 100 HEIGHT 100,500 WIDTH 100,500 COLOR 100,BackColor_r%,BackColor_v%,BackColor_b% CAM_MOVE -2.6 3D_PLANE 1 3D_V_TILE 1,1 3D_U_TILE 1,1 3D_IMAGE_TEXTURE 1,10 3D_X_ROTATE 1,0 END_SUB ' ------------------------------------------------------------------------------ SUB Index() SCENE2D 200 HEIGHT 200,40 WIDTH 200,31 COLOR 200,BackColor_r%,BackColor_v%,BackColor_b% LEFT 200,235 PICTURE 201 HEIGHT 201,40 WIDTH 201,31 COLOR 201,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS 201 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,50,50,50 IMAGE 202 2D_IMAGE_COPY 202,0,0,31,40 SPRITE 1 SPRITE_IMAGE_LOAD 1,202 END_SUB ' ------------------------------------------------------------------------------ SUB Skin() DIM_LOCAL i%,x,y,r%,v%,b% 2D_TARGET_IS 1 COLOR 1,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP 24 x = COS(i%)*210+250 y = SIN(i%)*210+250 2D_LINE 250,250,x,y NEXT i% FOR i% = 12 to 354 STEP 24 x = COS(i%)*190+250 y = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD x,y,r%,v%,b% NEXT i% Center(CenterOption%) IMAGE 10 2D_IMAGE_COPY 10,0,0,500,500 END_SUB ' ------------------------------------------------------------------------------ SUB Center(a) IF a = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% 2D_CIRCLE 250,250,40 PRINT_TARGET_IS 1 FONT_NAME 1,"Times New Roman" FONT_SIZE 1,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE 1,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB ' ------------------------------------------------------------------------------ SUB Instructions() PICTURE 50 HEIGHT 50,40 WIDTH 50,500 TOP 50,500 COLOR 50,200,200,200 2D_TARGET_IS 50 2D_FILL_COLOR 200,200,200 PRINT_TARGET_IS 50 FONT_NAME 50,"Times New Roman" FONT_SIZE 50,18 FONT_ITALIC 50 PRINT_LOCATE 55,8 PRINT "Click on the wheel / Cliquez sur la roue" END_SUB ' ------------------------------------------------------------------------------ Action: OFF_MOUSE_DOWN 100 ON_MOUSE_UP 100, Result c = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ Result: OFF_MOUSE_UP 100 alea = NUMBER_TICKS - c + RND(360) IF alea > 5000 alea = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN 100,Action RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE alea > 5 c=alea/100 3D_Z_ROTATE 1,WRAP_VALUE((c+t)*-1) t=c+t DISPLAY PAUSE 20 alea=alea-c c = c*.95 END_WHILE END_SUB ' ------------------------------------------------------------------------------ DATA 0,255,255 DATA 0,0,0 DATA 0,0,255 DATA 255,0,255 DATA 0,128,0 DATA 128,128,128 DATA 0,255,0 DATA 128,0,0 DATA 0,0,128 DATA 255,255,255 DATA 128,128,0 DATA 128,0,128 DATA 255,0,0 DATA 0,128,128 DATA 255,255,0 ' ------------------------------------------------------------------------------ Quit: TERMINATE RETURN
- Spoiler:
EDIT : mise à jour du source : suppression des variables devenues inutiles et de quelques parenthèses.
Dernière édition par Marc le Lun 28 Mai 2018 - 21:17, édité 4 fois | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 16:49 | |
| Bravo et merci Marc ! C'est super ! Il faudra qu'un jour je refasse mon jeu "La roue de la fortune" et cette roue pourrait bien servir. Est-il possible d'avoir la possibilité de connaître dans une variable "résultat" le numéro de la section sur laquelle s'arrête la roue (entre 1 et 15). Ceci permettrait de l'utiliser pour le jeu. Heu.... j'abuse.... A+ | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 17:25 | |
| Merci Jean-Claude ! - Citation :
- Est-il possible d'avoir la possibilité de connaître dans une variable "résultat" le numéro de la section sur laquelle s'arrête la roue
Oui, on connait le positionnement de la roue au degré près en sortie de boucle WHILE ligne 159. Une simple calcul permet de savoir avec précision dans quelle section est arrêtée la roue, en fonction de la position de ton index et du nombre de sections que tu souhaites dessiner. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 18:47 | |
| J'ai réussi avec difficulté, mais c'est bon ! Dans le code ci-dessous la section en rouge vif est la section numéro 15/15. Il suffit de compter les sections, dans l'ordre des aiguilles d'une montre, pour vérifier. Après 15 on repart à 1. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ ' main Init() Skin() Wheel() Index() Instructions() ON_MOUSE_DOWN 100,Action END ' ------------------------------------------------------------------------------ SUB Init() LABEL Action,result,Quit DIM on,c,x,y,t,d,alea,section% DIM BackColor_r%,BackColor_v%,BackColor_b% DIM CenterOption% BackColor_r% = 0 BackColor_v% = 50 BackColor_b% = 50 CenterOption% = 0 DEGREES c=1 HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0) WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0) LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 PICTURE 1 WIDTH 1,500 HEIGHT 1,500 ON_CLOSE 0, Quit END_SUB ' ------------------------------------------------------------------------------ SUB Wheel() DIM_LOCAL i% SCENE3D 100 HEIGHT 100,500 WIDTH 100,500 COLOR 100,BackColor_r%,BackColor_v%,BackColor_b% CAM_MOVE -2.6 3D_PLANE 1 3D_V_TILE 1,1 3D_U_TILE 1,1 3D_IMAGE_TEXTURE 1,10 3D_X_ROTATE 1,0 END_SUB ' ------------------------------------------------------------------------------ SUB Index() SCENE2D 200 HEIGHT 200,40 WIDTH 200,31 COLOR 200,BackColor_r%,BackColor_v%,BackColor_b% LEFT 200,235 PICTURE 201 HEIGHT 201,40 WIDTH 201,31 COLOR 201,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS 201 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,150,150,150 IMAGE 202 2D_IMAGE_COPY 202,0,0,31,40 SPRITE 1 SPRITE_IMAGE_LOAD 1,202 END_SUB ' ------------------------------------------------------------------------------ SUB Skin() DIM_LOCAL i%,x,y,r%,v%,b% 2D_TARGET_IS 1 COLOR 1,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP 24 x = COS(i%)*210+250 y = SIN(i%)*210+250 2D_LINE 250,250,x,y NEXT i% FOR i% = 12 to 354 STEP 24 x = COS(i%)*190+250 y = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD x,y,r%,v%,b% NEXT i% Center(CenterOption%) IMAGE 10 2D_IMAGE_COPY 10,0,0,500,500 END_SUB ' ------------------------------------------------------------------------------ SUB Center(a) IF a = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% 2D_CIRCLE 250,250,40 PRINT_TARGET_IS 1 FONT_NAME 1,"Times New Roman" FONT_SIZE 1,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE 1,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB ' ------------------------------------------------------------------------------ SUB Instructions() PICTURE 50 HEIGHT 50,40 WIDTH 50,500 TOP 50,500 COLOR 50,200,200,200 2D_TARGET_IS 50 2D_FILL_COLOR 200,200,200 PRINT_TARGET_IS 50 FONT_NAME 50,"Times New Roman" FONT_SIZE 50,18 FONT_ITALIC 50 PRINT_LOCATE 55,8 PRINT "Cliquez sur la roue" END_SUB ' ------------------------------------------------------------------------------ Action: OFF_MOUSE_DOWN 100 ON_MOUSE_UP 100, Result c = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ Result: OFF_MOUSE_UP 100 alea = NUMBER_TICKS - c + RND(360) IF alea > 5000 alea = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN 100,Action RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE alea > 5 c=alea/100 3D_Z_ROTATE 1,WRAP_VALUE((c+t)*(-1)) t=c+t DISPLAY PAUSE 20 alea=alea-c c = c*.95 END_WHILE section%=int(WRAP_VALUE(t*-1)/24)-1 if section%=-1 then section%=14 if section%=0 then section%=15 message str$(section%) END_SUB ' ------------------------------------------------------------------------------ DATA 0,255,255 DATA 0,0,0 DATA 0,0,255 DATA 255,0,255 DATA 0,128,0 DATA 128,128,128 DATA 0,255,0 DATA 128,0,0 DATA 0,0,128 DATA 255,255,255 DATA 128,128,0 DATA 128,0,128 DATA 255,0,0 DATA 0,128,128 DATA 255,255,0 ' ------------------------------------------------------------------------------ Quit: on=0 TERMINATE RETURN
A+ PS: il doit y avoir une erreur de calcul, car ce n'est pas tout à fait juste J'ai été obligé d'ajouter if section%=-1 then section%=14 pour avoir un résultat plus fiable. | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 20:29 | |
| @Jean-Claude: Tu peux remplacer la SUB Animation par celle-ci : - Code:
-
SUB Animation() WHILE alea > 5 c=alea/100 3D_Z_ROTATE 1,WRAP_VALUE((c+t)*(-1)) CAPTION 0, INT((WRAP_VALUE(c+t+90)/24)+1) t=c+t DISPLAY PAUSE 20 alea=alea-c c = c*.95 END_WHILE END_SUB Tu y trouveras la formule et le résultat qui s'affiche dans le CAPTION 0. Pour l'exemple, j'ai considéré que le jaune était le 1. J'ai mis le calcul dans la boucle WHILE juste pour tester en temps réel la cohérence du résultat. Il faudra donc déplacer ce calcul juste après la boucle, comme tu l'avais fait.
Dernière édition par Marc le Lun 28 Mai 2018 - 20:33, édité 1 fois | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 20:33 | |
| Devancé d'un chouïa par Marc J'ai obtenu le résultat comme ça, avec cyan=1, pour suivre l'ordre des datas: - Code:
-
caption 0,str$(int(wrap_value(o3d_z_rotate(1)+270)/24)+1) et cette ligne: - Code:
-
if section%=0 then section%=15 est devenu inutile | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 20:51 | |
| Merci à vous deux, Je ne suis pas doué en en math et ça se voit Nous voilà avec une roue exploitable pour un jeu. A+ | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Roue pour jeu Lun 28 Mai 2018 - 21:05 | |
| Dans le source, j'ai oublié de supprimer des variables qui n'ont plus lieu d'être : Ligne 18, les variables d et on à supprimer. Quelques parenthèses en trop aussi : Ligne 151 : le -1 à la fin de la ligne n'a pas besoin d'être entouré de parenthèses. Pour être plus clair : Ancienne ligne 151 : 3D_Z_ROTATE 1,WRAP_VALUE((c+t)*(-1)) Nouvelle ligne 151 : 3D_Z_ROTATE 1,WRAP_VALUE((c+t)*-1) Pour info, ce " *-1 " sert à faire tourner la roue dans le sens des aiguilles d'une montre. Ligne 177 à supprimer (on=0) --------------------------------------------------------------------------------------------------------------------- Je viens de modifier le source pour y charger un fichier BMP externe : - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ ' main Init() Skin() Wheel() Index() Instructions() ON_MOUSE_DOWN 100,Action END ' ------------------------------------------------------------------------------ SUB Init() LABEL Action,result,Quit DIM c,x,y,t,alea DIM BackColor_r%,BackColor_v%,BackColor_b% DIM CenterOption% BackColor_r% = 0 BackColor_v% = 0 BackColor_b% = 0 CenterOption% = 1 DEGREES c=1 HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0) WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0) LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 PICTURE 1 WIDTH 1,500 HEIGHT 1,500 ON_CLOSE 0, Quit END_SUB ' ------------------------------------------------------------------------------ SUB Wheel() DIM_LOCAL i% SCENE3D 100 HEIGHT 100,500 WIDTH 100,500 COLOR 100,BackColor_r%,BackColor_v%,BackColor_b% CAM_MOVE -2.5 3D_PLANE 1 3D_V_TILE 1,1 3D_U_TILE 1,1 3D_IMAGE_TEXTURE 1,10 3D_X_ROTATE 1,0 END_SUB ' ------------------------------------------------------------------------------ SUB Index() SCENE2D 200 HEIGHT 200,40 WIDTH 200,31 COLOR 200,BackColor_r%,BackColor_v%,BackColor_b% LEFT 200,235 PICTURE 201 HEIGHT 201,40 WIDTH 201,31 COLOR 201,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS 201 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,250,250,50 IMAGE 202 2D_IMAGE_COPY 202,0,0,31,40 SPRITE 1 SPRITE_IMAGE_LOAD 1,202 END_SUB ' ------------------------------------------------------------------------------ SUB Skin() FILE_LOAD 1,"roue2.bmp" IMAGE 10 2D_IMAGE_COPY 10,0,0,500,500 END_SUB ' ------------------------------------------------------------------------------ SUB Center(a) IF a = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% 2D_CIRCLE 250,250,40 PRINT_TARGET_IS 1 FONT_NAME 1,"Times New Roman" FONT_SIZE 1,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE 1,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB ' ------------------------------------------------------------------------------ SUB Instructions() PICTURE 50 HEIGHT 50,40 WIDTH 50,500 TOP 50,500 COLOR 50,200,200,200 2D_TARGET_IS 50 2D_FILL_COLOR 200,200,200 PRINT_TARGET_IS 50 FONT_NAME 50,"Times New Roman" FONT_SIZE 50,18 FONT_ITALIC 50 PRINT_LOCATE 55,8 PRINT "Click on the wheel / Cliquez sur la roue" END_SUB ' ------------------------------------------------------------------------------ Action: OFF_MOUSE_DOWN 100 ON_MOUSE_UP 100, Result c = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ Result: OFF_MOUSE_UP 100 alea = NUMBER_TICKS - c + RND(360) IF alea > 5000 alea = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN 100,Action RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE alea > 5 c=alea/100 3D_Z_ROTATE 1,WRAP_VALUE((c+t)*-1) t=c+t DISPLAY PAUSE 20 alea=alea-c c = c*.95 END_WHILE END_SUB ' ------------------------------------------------------------------------------ DATA 0,255,255 DATA 0,0,0 DATA 0,0,255 DATA 255,0,255 DATA 0,128,0 DATA 128,128,128 DATA 0,255,0 DATA 128,0,0 DATA 0,0,128 DATA 255,255,255 DATA 128,128,0 DATA 128,0,128 DATA 255,0,0 DATA 0,128,128 DATA 255,255,0 ' ------------------------------------------------------------------------------ Quit: TERMINATE RETURN
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Mar 29 Mai 2018 - 8:32 | |
| bonjour à tous, - Marc a écrit:
- Pour info, ce " *-1 " sert à faire tourner la roue dans le sens des aiguilles d'une montre.
J'ai testé en supprimant " *-1 ", effectivement la roue tourne dans l'autre sens, mais l'index n'est plus calé avec les bords des sections. Il y a un petit décalage. Par contre, en utilisant la solution de Silverman, ce problème disparaît. Dans le code ci-dessous tu peux tester les 2 exemples en shuntant les lignes 153 et 161 OU 152 et 160 et tu constateras la différence. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' http://panoramic-language.pagesperso-orange.fr/French/index.html ' http://panoramic.top-forum.net ' ------------------------------------------------------------------------------ ' main Init() Skin() Wheel() Index() Instructions() ON_MOUSE_DOWN 100,Action END ' ------------------------------------------------------------------------------ SUB Init() LABEL Action,result,Quit DIM c,x,y,t,alea,section% DIM BackColor_r%,BackColor_v%,BackColor_b% DIM CenterOption% BackColor_r% = 0 BackColor_v% = 50 BackColor_b% = 50 CenterOption% = 0 DEGREES c=1 HEIGHT 0,540 + HEIGHT(0)-HEIGHT_CLIENT(0) WIDTH 0,500 + WIDTH(0)-WIDTH_CLIENT(0) LEFT 0,(SCREEN_X-WIDTH(0))/2 TOP 0,(SCREEN_Y-HEIGHT(0))/2 PICTURE 1 WIDTH 1,500 HEIGHT 1,500 ON_CLOSE 0, Quit END_SUB ' ------------------------------------------------------------------------------ SUB Wheel() DIM_LOCAL i% SCENE3D 100 HEIGHT 100,500 WIDTH 100,500 COLOR 100,BackColor_r%,BackColor_v%,BackColor_b% CAM_MOVE -2.6 3D_PLANE 1 3D_V_TILE 1,1 3D_U_TILE 1,1 3D_IMAGE_TEXTURE 1,10 3D_X_ROTATE 1,0 END_SUB ' ------------------------------------------------------------------------------ SUB Index() SCENE2D 200 HEIGHT 200,40 WIDTH 200,31 COLOR 200,BackColor_r%,BackColor_v%,BackColor_b% LEFT 200,235 PICTURE 201 HEIGHT 201,40 WIDTH 201,31 COLOR 201,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS 201 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,150,150,150 IMAGE 202 2D_IMAGE_COPY 202,0,0,31,40 SPRITE 1 SPRITE_IMAGE_LOAD 1,202 END_SUB ' ------------------------------------------------------------------------------ SUB Skin() DIM_LOCAL i%,x,y,r%,v%,b% 2D_TARGET_IS 1 COLOR 1,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP 24 x = COS(i%)*210+250 y = SIN(i%)*210+250 2D_LINE 250,250,x,y NEXT i% FOR i% = 12 to 354 STEP 24 x = COS(i%)*190+250 y = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD x,y,r%,v%,b% NEXT i% Center(CenterOption%) IMAGE 10 2D_IMAGE_COPY 10,0,0,500,500 END_SUB ' ------------------------------------------------------------------------------ SUB Center(a) IF a = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% 2D_CIRCLE 250,250,40 PRINT_TARGET_IS 1 FONT_NAME 1,"Times New Roman" FONT_SIZE 1,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE 1,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB ' ------------------------------------------------------------------------------ SUB Instructions() PICTURE 50 HEIGHT 50,40 WIDTH 50,500 TOP 50,500 COLOR 50,200,200,200 2D_TARGET_IS 50 2D_FILL_COLOR 200,200,200 PRINT_TARGET_IS 50 FONT_NAME 50,"Times New Roman" FONT_SIZE 50,18 FONT_ITALIC 50 PRINT_LOCATE 55,8 PRINT "Cliquez sur la roue" END_SUB ' ------------------------------------------------------------------------------ Action: OFF_MOUSE_DOWN 100 ON_MOUSE_UP 100, Result c = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ Result: OFF_MOUSE_UP 100 alea = NUMBER_TICKS - c + RND(360) IF alea > 5000 alea = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN 100,Action RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE alea > 5 c=alea/100 3D_Z_ROTATE 1,WRAP_VALUE((c+t)) caption 0,str$(int(wrap_value(o3d_z_rotate(1)+270)/24)+1):' solution Silverman ' CAPTION 0, INT((WRAP_VALUE(c+t+90)/24)+1):' solution Marc t=c+t DISPLAY PAUSE 20 alea=alea-c c = c*.95 END_WHILE section%=int(wrap_value(o3d_z_rotate(1)+270)/24)+1 :' solution Silverman ' section%=INT((WRAP_VALUE(c+t+90)/24)+1):' solution Marc MESSAGE STR$(section%) END_SUB ' ------------------------------------------------------------------------------ DATA 0,255,255 DATA 0,0,0 DATA 0,0,255 DATA 255,0,255 DATA 0,128,0 DATA 128,128,128 DATA 0,255,0 DATA 128,0,0 DATA 0,0,128 DATA 255,255,255 DATA 128,128,0 DATA 128,0,128 DATA 255,0,0 DATA 0,128,128 DATA 255,255,0 ' ------------------------------------------------------------------------------ Quit: TERMINATE RETURN
A+ | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Mar 29 Mai 2018 - 15:31 | |
| Superbe, cette roue ! Pour un futur jeu de la fortune (ou autre) magnifique ! Bravo ! | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Roue pour jeu Mer 30 Mai 2018 - 0:10 | |
| Merci à tous ! - Jean-Claude a écrit:
- J'ai testé en supprimant " *-1 ", effectivement la roue tourne dans l'autre sens, mais l'index n'est plus calé avec les bords des sections. Il y a un petit décalage.
Oui, si tu fais tourner la roue dans l'autre sens, il faut modifier l'offset dans la formule. Mets par exemple -90 au lieu de +90. La position zéro est plein Est. Dans mon source, j'ai dessiné l'index tout en haut (plein Nord), soit un décalage de 90°. Ce nombre 90, tu le retrouves dans la formule. C'est ce nombre que tu dois adapter en fonction de tes désires : sens de rotation, position de l'index, zone de départ du comptage... Tu peux aussi modifier le nombre de parts, j'ai partagé en 15 mais tu peux en faire plus ou moins. Je pense que tu as compris le rôle des lignes DATA. Ce sont les couleurs R,V,B de chaque part. Pour plus de lisibilité, je n'ai pas mis tous les datas bout à bout. Bonne continuation ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Mer 30 Mai 2018 - 20:17 | |
| J'ai, je pense, avoir assez bien compris le code et j'en ai fait une version pour insérer dans un programme sans se préoccuper des numéro d'objets. Ce n'est pas encore parfait, mais j'y reviendrai. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' Adapté par Jean Claude pour utilisation dans un code. ' ------------------------------------------------------------------------------ DIM No%,No3d%,NoSprite% DIM NumFormRoue%:' Si besoin d'un autre FORM que 0 pour la roue ' Ici on reste avec FORM 0 No%=-1 No%=No%+1 if No%<>0 ' création du form pour la roue NumFormRoue%=No% : FORM NumFormRoue% else NumFormRoue%=0 end_if
' Variable nécessaires pour la roue:
' BackColor_r% : BackColor_v% : BackColor_b% Les 3 Couleurs derrière la roue DIM BackColor_r%,BackColor_v%,BackColor_b% : BackColor_r%=0 : BackColor_v%=0 : BackColor_b%=0
' SensRtation%: -1 => sens des aiguilles d'une montre : 0 => pas de rotation : 1 => sens inverse des aiguilles d'une montre DIM SensRtation% : SensRtation%=1 ' StepNbPart% : 20 => 18 Parts : 15 => 24 parts : 24 => 15 parts : 30 => 12 parts ' Attention le nombre de lignes de data doit correspondre au nombre de parts (ici 18 parts mais 24 prévues au maxi) DIM StepNbPart% : StepNbPart%=15
' Explications pour l'appel de la SUB: rem SUB InitRoue(CenterOption%,OptionBorderFormRoue$) ' CenterOption%: 1 avec le centre OU 0 sans le centre ' OptionBorderFormRoue$: "N" => Normal - "S" => Small - "H" => Hide ' (Si hide prévoir une sortie et HIDE NumFormRoue%)
' Appel de la SUB InitRoue(1,"S")
' Gestion des Instructions ChangeInstructionsRoue("Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue
END rem ============================================================' SORTIE ROUE 3D ResultatRoue: OFF_MOUSE_DOWN Scene3dRoue% ' Résultat ChangeInstructionsRoue(string$(10," ")+"Résultat") MESSAGE STR$(ResultatTirage%) ' Réactiver la roue ChangeInstructionsRoue("Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue ' OU autres possibilités ' ... ' ... RETURN
rem ========================================================' 3D Wheel / Roue 3D ' 24 data(s) disponibles pour 24 parts DATA 255,255,255 DATA 000,000,255 DATA 000,255,000 DATA 255,000,000 DATA 000,255,255 DATA 255,255,000 DATA 255,000,255 DATA 130,130,130 DATA 100,000,000 DATA 000,150,000 DATA 000,000,150 DATA 000,150,150 DATA 150,150,000 DATA 150,000,150 DATA 255,128,128 DATA 205,150,255 DATA 255,050,000 DATA 005,100,000 DATA 000,000,000 DATA 100,205,255 DATA 255,180,100 DATA 100,100,200 DATA 100,255,000 DATA 000,150,150 ' ------------------------------------------------------------------------------ SUB InitRoue(CenterOption%,OptionBorderFormRoue$) DIM_LOCAL i%,Xroue,Yroue,r%,v%,b% IF LABEL("ResultatRoue")=0 then LABEL ResultatRoue IF LABEL("LanceRoue")=0 then LABEL LanceRoue IF LABEL("LanceRoueSuite")=0 then LABEL LanceRoueSuite IF VARIABLE("PictureInstructions%")=0 then DIM PictureInstructions% IF VARIABLE("Tanime")=0 then DIM Tanime IF VARIABLE("NbTic")=0 then DIM NbTic : NbTic=1 IF VARIABLE("AleaNbTic")=0 then DIM AleaNbTic IF VARIABLE("ResultatTirage%")=0 then DIM ResultatTirage% IF VARIABLE("PictureRoue%")=0 then DIM PictureRoue% IF VARIABLE("PictureImage%")=0 then DIM PictureImage% IF VARIABLE("Scene3dRoue%")=0 then DIM Scene3dRoue% IF VARIABLE("TdPlane%")=0 then DIM TdPlane% IF VARIABLE("Scene2dRoue%")=0 then DIM Scene2dRoue% IF VARIABLE("PictureRoue2d%")=0 then DIM PictureRoue2d% IF VARIABLE("PictureImageRoue2d%")=0 then DIM PictureImageRoue2d% IF VARIABLE("SpriteRoue2d%")=0 then DIM SpriteRoue2d% DEGREES ' NumFormRoue% IF OptionBorderFormRoue$="N" THEN BORDER_NORMAL NumFormRoue% IF OptionBorderFormRoue$="S" THEN BORDER_SMALL NumFormRoue% IF OptionBorderFormRoue$="H" THEN BORDER_HIDE NumFormRoue% HEIGHT NumFormRoue%,540 + HEIGHT(NumFormRoue%)-HEIGHT_CLIENT(NumFormRoue%) WIDTH NumFormRoue%,500 + WIDTH(0)-WIDTH_CLIENT(NumFormRoue%) LEFT NumFormRoue%,(SCREEN_X-WIDTH(NumFormRoue%))/2 : TOP NumFormRoue%,(SCREEN_Y-HEIGHT(NumFormRoue%))/2 ' PictureRoue% No%=NumFormRoue%+1 : PictureRoue%=No% PICTURE No% : WIDTH No%,500 : HEIGHT No%,500 No%=No%+1 : PictureImage%=No% IMAGE PictureImage% 2D_TARGET_IS PictureRoue% COLOR PictureRoue%,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP StepNbPart% Xroue = COS(i%)*210+250 Yroue = SIN(i%)*210+250 2D_LINE 250,250,Xroue,Yroue NEXT i% FOR i% = 12 to 354 STEP StepNbPart% Xroue = COS(i%)*190+250 Yroue = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD Xroue,Yroue,r%,v%,b% NEXT i% Center(CenterOption%) 2D_IMAGE_COPY PictureImage%,0,0,500,500 ' Scene3dRoue% No%=No%+1 : Scene3dRoue%=No% SCENE3D Scene3dRoue% : HEIGHT Scene3dRoue%,500 : WIDTH Scene3dRoue%,500 COLOR Scene3dRoue%,BackColor_r%,BackColor_v%,BackColor_b% ' TdPlane% No3d%=No3d%+1 : TdPlane%=No3d% CAM_MOVE -2.6 3D_PLANE TdPlane% 3D_V_TILE TdPlane%,1 3D_U_TILE TdPlane%,1 3D_IMAGE_TEXTURE No3d%,PictureImage% 3D_X_ROTATE TdPlane%,0 ' Scene2dRoue% No%=No%+1 : Scene2dRoue%=No% SCENE2D Scene2dRoue% : HEIGHT Scene2dRoue%,40 : WIDTH Scene2dRoue%,31 COLOR Scene2dRoue%,BackColor_r%,BackColor_v%,BackColor_b% : LEFT Scene2dRoue%,235 ' PictureRoue2d% No%=No%+1 : PictureRoue2d%=No% PICTURE PictureRoue2d% : HEIGHT PictureRoue2d%,40 : WIDTH PictureRoue2d%,31 COLOR PictureRoue2d%,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS PictureRoue2d% 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,150,150,150 ' PictureImageRoue2d% No%=No%+1 : PictureImageRoue2d%=No% IMAGE PictureImageRoue2d% 2D_IMAGE_COPY PictureImageRoue2d%,0,0,31,40 ' SpriteRoue2d% NoSprite%=NoSprite%+1 : SpriteRoue2d%=NoSprite% SPRITE SpriteRoue2d% : SPRITE_IMAGE_LOAD SpriteRoue2d%,PictureImageRoue2d% ' Bandeau instruction No%=No%+1 : PictureInstructions%=No% PICTURE No% : HEIGHT No%,40 : WIDTH No%,500 : TOP No%,500 : COLOR No%,200,200,200 2D_TARGET_IS No% : 2D_FILL_COLOR 200,200,200 FONT_NAME No%,"Times New Roman" : FONT_SIZE No%,18 : FONT_ITALIC No% END_SUB ' ------------------------------------------------------------------------------ SUB ChangeInstructionsRoue(TexteRoue$) CLS : 2D_TARGET_IS PictureInstructions% : COLOR PictureInstructions%,200,200,200 : 2D_FILL_COLOR 200,200,200 FONT_NAME PictureInstructions%,"Times New Roman" : FONT_SIZE PictureInstructions%,18 : FONT_ITALIC PictureInstructions% PRINT_TARGET_IS PictureInstructions% : PRINT_LOCATE 155,8 : PRINT TexteRoue$ END_SUB ' ------------------------------------------------------------------------------ LanceRoue: ChangeInstructionsRoue(string$(10," ")+"Patientez ...") OFF_MOUSE_DOWN Scene3dRoue% ON_MOUSE_UP Scene3dRoue%, LanceRoueSuite NbTic = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ LanceRoueSuite: OFF_MOUSE_UP Scene3dRoue% AleaNbTic = NUMBER_TICKS - NbTic + RND(360) IF AleaNbTic > 5000 AleaNbTic = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN Scene3dRoue%,LanceRoue RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE AleaNbTic > 5 NbTic=AleaNbTic/100 3D_Z_ROTATE TdPlane%,WRAP_VALUE((NbTic+Tanime)*SensRtation%) caption NumFormRoue%,str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1):' solution Silverman ' CAPTION NumFormRoue%, INT((WRAP_VALUE(NbTic+Tanime+90)/StepNbPart%)+1):' solution Marc Tanime=NbTic+Tanime DISPLAY PAUSE 20 AleaNbTic=AleaNbTic-NbTic NbTic = NbTic*.95 END_WHILE ResultatTirage%=int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1 :' solution Silverman ' ResultatTirage%=INT((WRAP_VALUE(NbTic+Tanime+90)/StepNbPart%)+1):' solution Marc gosub ResultatRoue : return END_SUB ' ------------------------------------------------------------------------------ SUB Center(La) IF La = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% FONT_COLOR PictureRoue%,255,255,255 2D_PEN_COLOR 255,255,255 2D_CIRCLE 250,250,40 PRINT_TARGET_IS PictureRoue% FONT_NAME PictureRoue%,"Times New Roman" FONT_SIZE PictureRoue%,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE PictureRoue%,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB
A+ | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Roue pour jeu Mer 30 Mai 2018 - 21:33 | |
| C'est super Jean-Claude ! Tu as travaillé beaucoup sur le source. Bravo ! J'aime bien ta roue sur fond noir : les couleurs ressortent beaucoup mieux. Je vois que tu as partagé sans problème le gâteau en 24 parts en y ajoutant des couleurs.
J'ai mis une décélération finale très lente pour accentuer le suspense... Là aussi, tu peux personnaliser cette décélération. Tout est dans la SUB Animation. La PAUSE 20, toujours dans la SUB Animation, est importante. C'est elle qui m'a permis d'avoir la même décélération de la roue sur différents ordinateurs. Peu importe si l'ordinateur est lent ou rapide, le résultat final reste identique.
Je suis très content que cette roue puisse te servir.
Bonne continuation !
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Jeu 31 Mai 2018 - 14:07 | |
| Bonjour à tous, - Marc a écrit:
- J'ai mis une décélération finale très lente pour accentuer le suspense... Là aussi, tu peux personnaliser cette décélération.
Tout est dans la SUB Animation. La PAUSE 20, toujours dans la SUB Animation, est importante. C'est elle qui m'a permis d'avoir la même décélération de la roue sur différents ordinateurs. Peu importe si l'ordinateur est lent ou rapide, le résultat final reste identique.
Dans la version ci-dessous, j'ai donné la possibilité de changer cette valeur au programmeur. C'est l'avant dernier paramètre de la SUB InitRoue(TopRoue%,LeftRoue%,TitleRoue$,CenterOption%,inertie%,OptionBorderFormRoue$), nommé inertie%. Mais tu as raison la valeur de inertie%=20 est la meilleure, surtout pour la fluidité. J'ai adapté cette nouvelle version pour utilisation de la roue sur FORM 0 ou sur un autre FORM. J'ai donné un exemple d' utilisation (voir le label GestionRoue:) Il faut lire les commentaires pour voir toute les possibiltés de positionnement, réglages, etc... A vous tous de découvrir. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' Adapté par Jean Claude pour utilisation dans un code avec gestion des n° d'objets. ' ------------------------------------------------------------------------------ HEIGHT 0,65 : COLOR 0,0,0,0 : FONT_COLOR 0,255,255,0 : FONT_SIZE 0,14 FONT_NAME 0,"Consolas" : FONT_BOLD 0 : PRINT " Patientez ... " TOP 0,(screen_y-height(0))/2 : LEFT 0,(screen_x-width(0))/2 ' ------------------------------------------------------------------------------ DIM No%,No3d%,NoSprite% :' Variables de gestion des n° d'objets DIM NumFormRoue%:' Si besoin d'un autre FORM que 0 pour la roue ' Attribution (ou pas) d'un n° d'objet <>0 à NumFormRoue% No%=No%+1 :' Si vous souhaitez que la roue soit sur FORM 0 shuntez cette ligne NumFormRoue%=No%
' Autres variables (constantes) nécessaires pour le fontionnement la roue: DIM BackColor_r%,BackColor_v%,BackColor_b% ' BackColor_r% : BackColor_v% : BackColor_b% Les 3 Couleurs derrière la roue DIM ResistanceRoue ' ResistanceRoue: Plus le chiffre est éloigné de zéro plus la vitesse initiale de la roue sera grande ' Sens de Rotation: Si ResistanceRoue est négative (-0.5) => sens des aiguilles d'une montre : positive (0.5) => sens inverse des aiguilles d'une montre DIM StepNbPart% :' définition du nombre sections de la roue (Voir exemple ci-dessous) ' StepNbPart% : 20 => 18 Parts : 15 => 24 parts : 24 => 15 parts : 30 => 12 parts ' Attention le nombre de lignes de data doit correspondre au nombre de parts (ici 18 parts mais 24 prévues au maxi)
' Règlages de la roue (valeurs des constantes) à votre goût. BackColor_r%=0 : BackColor_v%=0 : BackColor_b%=0 ResistanceRoue = -0.99 : StepNbPart%=20 ' Mise en place de la Roue ' Les explications des paramètres de la SUB InitRoue(,,) sont dans la SUB ' dimensions de la fenêtre de la roue sont 500x540 InitRoue((screen_y-540)/2,(screen_x-500)/2,"La roue de la fortune",1,20,"H")
' redonner la main à form 0 COMMAND_TARGET_IS 0 : PRINT_TARGET_IS 0
' nouveau message Form 0 PRINT_LOCATE 0,0 : PRINT "Fermeture ici "+string$(41,"-")+" ^"
' GO ChangeInstructionsRoue(string$(25," ")+"Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue : SHOW NumFormRoue%
' Déplacement de Form 0 TOP 0,0 : LEFT 0,0
message "INFO: la durée, avant le relâchement, du clic influe sur la vitesse initiale de la roue." END rem ============================================================' SORTIE ROUE 3D GestionRoue: OFF_MOUSE_DOWN Scene3dRoue% ' Résultat ChangeInstructionsRoue(string$(35," ")+"Résultat") MESSAGE STR$(ResultatTirage%) ' Désactiver provisoirement la roue IF NumFormRoue%<>0 then HIDE NumFormRoue% IF NumFormRoue%<>0 then SET_FOCUS 0 PAUSE 2000 ' Réactiver la roue ChangeInstructionsRoue(string$(25," ")+"Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue IF NumFormRoue%<>0 then SHOW NumFormRoue% ' OU autres possibilités ' ... ' ... RETURN
rem ========================================================' 3D Wheel / Roue 3D ' 24 data(s) disponibles pour 24 parts DATA 255,255,255 DATA 000,000,255 DATA 000,255,000 DATA 255,000,000 DATA 000,255,255 DATA 255,255,000 DATA 255,000,255 DATA 130,130,130 DATA 100,000,000 DATA 000,150,000 DATA 000,000,150 DATA 000,150,150 DATA 150,150,000 DATA 150,000,150 DATA 255,128,128 DATA 205,150,255 DATA 255,050,000 DATA 005,100,000 DATA 000,000,000 DATA 100,205,255 DATA 255,180,100 DATA 100,100,200 DATA 100,255,000 DATA 000,150,150 ' ------------------------------------------------------------------------------ SUB InitRoue(TopRoue%,LeftRoue%,TitleRoue$,CenterOption%,inertie%,OptionBorderFormRoue$) ' Explications des paramètres de la SUB ' TopRoue%,LeftRoue%: position de la roue ' TitleRoue$ = CAPTION NumFormRoue% ' CenterOption%: 1 avec le centre OU 0 sans le centre ' inertie%: il s'agit de la vitesse de ralentissement de la roue (Minimum 1) Au moins 20 pour une bonne fluidité ' OptionBorderFormRoue$: "N" => Normal - "S" ou "" => Small - "H" => Hide ' (Si hide prévoir une sortie et HIDE NumFormRoue%) create_hide IF NumFormRoue%<>0 FORM NumFormRoue% : ' HIDE NumFormRoue% COMMAND_TARGET_IS NumFormRoue% ELSE COMMAND_TARGET_IS 0 OptionBorderFormRoue$="S" END_IF IF ResistanceRoue=0 then ResistanceRoue=1 DIM_LOCAL i%,Xroue,Yroue,r%,v%,b% IF LABEL("GestionRoue")=0 then LABEL GestionRoue IF LABEL("LanceRoue")=0 then LABEL LanceRoue IF LABEL("LanceRoueSuite")=0 then LABEL LanceRoueSuite IF VARIABLE("PictureInstructions%")=0 then DIM PictureInstructions% IF VARIABLE("Tanime")=0 then DIM Tanime IF VARIABLE("NbTic")=0 then DIM NbTic : NbTic=1 IF VARIABLE("AleaNbTic")=0 then DIM AleaNbTic IF VARIABLE("ResultatTirage%")=0 then DIM ResultatTirage% IF VARIABLE("PictureRoue%")=0 then DIM PictureRoue% IF VARIABLE("PictureImage%")=0 then DIM PictureImage% IF VARIABLE("Scene3dRoue%")=0 then DIM Scene3dRoue% IF VARIABLE("TdPlane%")=0 then DIM TdPlane% IF VARIABLE("Scene2dRoue%")=0 then DIM Scene2dRoue% IF VARIABLE("PictureRoue2d%")=0 then DIM PictureRoue2d% IF VARIABLE("PictureImageRoue2d%")=0 then DIM PictureImageRoue2d% IF VARIABLE("SpriteRoue2d%")=0 then DIM SpriteRoue2d% IF VARIABLE("InertieRoue%")=0 then DIM InertieRoue% IF OptionBorderFormRoue$="" then OptionBorderFormRoue$="S" IF inertie%<1 then inertie%=20 InertieRoue%=inertie% DEGREES ' NumFormRoue% IF OptionBorderFormRoue$="N" THEN BORDER_NORMAL NumFormRoue% IF OptionBorderFormRoue$="S" THEN BORDER_SMALL NumFormRoue% IF OptionBorderFormRoue$="H" THEN BORDER_HIDE NumFormRoue% HEIGHT NumFormRoue%,540 + HEIGHT(NumFormRoue%)-HEIGHT_CLIENT(NumFormRoue%) WIDTH NumFormRoue%,500 + WIDTH(NumFormRoue%)-WIDTH_CLIENT(NumFormRoue%) TOP NumFormRoue%,TopRoue% : LEFT NumFormRoue%,LeftRoue% CAPTION NumFormRoue%,TitleRoue$ ' PictureRoue% No%=NumFormRoue%+1 : PictureRoue%=No% PICTURE No% : WIDTH No%,500 : HEIGHT No%,500 No%=No%+1 : PictureImage%=No% IMAGE PictureImage% 2D_TARGET_IS PictureRoue% COLOR PictureRoue%,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP StepNbPart% Xroue = COS(i%)*210+250 Yroue = SIN(i%)*210+250 2D_LINE 250,250,Xroue,Yroue NEXT i% FOR i% = 12 to 354 STEP StepNbPart% Xroue = COS(i%)*190+250 Yroue = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD Xroue,Yroue,r%,v%,b% NEXT i% Center(CenterOption%) 2D_IMAGE_COPY PictureImage%,0,0,500,500 ' Scene3dRoue% No%=No%+1 : Scene3dRoue%=No% SCENE3D Scene3dRoue% : HEIGHT Scene3dRoue%,500 : WIDTH Scene3dRoue%,500 COLOR Scene3dRoue%,BackColor_r%,BackColor_v%,BackColor_b% ' TdPlane% No3d%=No3d%+1 : TdPlane%=No3d% CAM_MOVE -2.6 3D_PLANE TdPlane% 3D_V_TILE TdPlane%,1 3D_U_TILE TdPlane%,1 3D_IMAGE_TEXTURE No3d%,PictureImage% 3D_X_ROTATE TdPlane%,0 ' Scene2dRoue% No%=No%+1 : Scene2dRoue%=No% SCENE2D Scene2dRoue% : HEIGHT Scene2dRoue%,40 : WIDTH Scene2dRoue%,31 COLOR Scene2dRoue%,BackColor_r%,BackColor_v%,BackColor_b% : LEFT Scene2dRoue%,235 ' PictureRoue2d% No%=No%+1 : PictureRoue2d%=No% PICTURE PictureRoue2d% : HEIGHT PictureRoue2d%,40 : WIDTH PictureRoue2d%,31 COLOR PictureRoue2d%,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS PictureRoue2d% 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,150,150,150 ' PictureImageRoue2d% No%=No%+1 : PictureImageRoue2d%=No% IMAGE PictureImageRoue2d% 2D_IMAGE_COPY PictureImageRoue2d%,0,0,31,40 ' SpriteRoue2d% NoSprite%=NoSprite%+1 : SpriteRoue2d%=NoSprite% SPRITE SpriteRoue2d% : SPRITE_IMAGE_LOAD SpriteRoue2d%,PictureImageRoue2d% ' Bandeau instruction No%=No%+1 : PictureInstructions%=No% PICTURE No% : HEIGHT No%,40 : WIDTH No%,500 : TOP No%,500 : COLOR No%,200,200,200 2D_TARGET_IS No% : 2D_FILL_COLOR 200,200,200 FONT_NAME No%,"Times New Roman" : FONT_SIZE No%,18 : FONT_ITALIC No% show_all HIDE NumFormRoue% COMMAND_TARGET_IS 0 END_SUB ' ------------------------------------------------------------------------------ SUB ChangeInstructionsRoue(TexteRoue$) CLS : 2D_TARGET_IS PictureInstructions% : COLOR PictureInstructions%,200,200,200 : 2D_FILL_COLOR 200,200,200 FONT_NAME PictureInstructions%,"Times New Roman" : FONT_SIZE PictureInstructions%,18 : FONT_ITALIC PictureInstructions% PRINT_TARGET_IS PictureInstructions% : PRINT_LOCATE 5,8 : PRINT TexteRoue$ END_SUB ' ------------------------------------------------------------------------------ LanceRoue: ChangeInstructionsRoue("Patientez ...") OFF_MOUSE_DOWN Scene3dRoue% ON_MOUSE_UP Scene3dRoue%, LanceRoueSuite NbTic = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ LanceRoueSuite: OFF_MOUSE_UP Scene3dRoue% AleaNbTic = NUMBER_TICKS - NbTic + RND(360) IF AleaNbTic > 5000 AleaNbTic = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN Scene3dRoue%,LanceRoue RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE AleaNbTic > 5 NbTic=AleaNbTic/100 3D_Z_ROTATE TdPlane%,WRAP_VALUE((NbTic+Tanime)*ResistanceRoue) ChangeInstructionsRoue(string$(40," ")+str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1)) ' caption NumFormRoue%,str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1) Tanime=NbTic+Tanime DISPLAY PAUSE InertieRoue% AleaNbTic=AleaNbTic-NbTic NbTic = NbTic*.95 END_WHILE ResultatTirage%=int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1 gosub GestionRoue : return END_SUB ' ------------------------------------------------------------------------------ SUB Center(La) IF La = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% FONT_COLOR PictureRoue%,255,255,255 2D_PEN_COLOR 255,255,255 2D_CIRCLE 250,250,40 PRINT_TARGET_IS PictureRoue% FONT_NAME PictureRoue%,"Times New Roman" FONT_SIZE PictureRoue%,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE PictureRoue%,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB
A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Roue pour jeu Jeu 31 Mai 2018 - 15:47 | |
| Je veux bien patienter, mais jusqu'à quand ? Bon, je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... je patiente ... Mon stock de la patience est à zéro. Que dois-je faire, ensuite ? Bon, j'ai compris : je fais le tueur et je tue le process ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Jeu 31 Mai 2018 - 17:21 | |
| @Papydall, Oui, il y a un problème de délai qui n'est pas toujours présent. Au maximum j'ai eu une dizaine de secondes. Le plus souvent 2 à 3 secondes. Ce problème disparaît si on utilise Form 0 comme fenêtre pour la roue en shuntant la ligne 13. Je ne comprends pas pourquoi c'est ainsi A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Jeu 31 Mai 2018 - 17:26 | |
| Bon ! Je n'ai pas résolu le problème de délai de chargement qui est trop long, mais j'ai apporté un +: La remise au point de départ de la roue sur la case blanche. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' Adapté par Jean Claude pour utilisation dans un code avec gestion des n° d'objets. ' ------------------------------------------------------------------------------ HEIGHT 0,65 : COLOR 0,0,0,0 : FONT_COLOR 0,255,255,0 : FONT_SIZE 0,14 FONT_NAME 0,"Consolas" : FONT_BOLD 0 : PRINT " Patientez ... " TOP 0,(screen_y-height(0))/2 : LEFT 0,(screen_x-width(0))/2 ' ------------------------------------------------------------------------------ DIM No%,No3d%,NoSprite% :' Variables de gestion des n° d'objets DIM NumFormRoue%:' Si besoin d'un autre FORM que 0 pour la roue ' Attribution (ou pas) d'un n° d'objet <>0 à NumFormRoue% No%=No%+1 :' Si vous souhaitez que la roue soit sur FORM 0 shuntez cette ligne NumFormRoue%=No% if No%<>0 then FORM NumFormRoue% : HIDE NumFormRoue% ' Autres variables (constantes) nécessaires pour le fontionnement la roue: DIM BackColor_r%,BackColor_v%,BackColor_b% ' BackColor_r% : BackColor_v% : BackColor_b% Les 3 Couleurs derrière la roue DIM ResistanceRoue ' ResistanceRoue: Plus le chiffre est éloigné de zéro plus la vitesse initiale de la roue sera grande ' Sens de Rotation: Si ResistanceRoue est négative (-0.5) => sens des aiguilles d'une montre : positive (0.5) => sens inverse des aiguilles d'une montre DIM StepNbPart% :' définition du nombre sections de la roue (Voir exemple ci-dessous) ' StepNbPart% : 20 => 18 Parts : 15 => 24 parts : 24 => 15 parts : 30 => 12 parts ' Attention le nombre de lignes de data doit correspondre au nombre de parts (ici 18 parts mais 24 prévues au maxi)
' Règlages de la roue (valeurs des constantes) à votre goût. BackColor_r%=0 : BackColor_v%=0 : BackColor_b%=0 ResistanceRoue = -0.99 : StepNbPart%=20 ' Mise en place de la Roue ' Les explications des paramètres de la SUB InitRoue(,,) sont dans la SUB ' dimensions de la fenêtre de la roue sont 500x540 InitRoue((screen_y-540)/2,(screen_x-500)/2,"La roue de la fortune",1,20,"H")
' redonner la main à form 0 COMMAND_TARGET_IS 0 : PRINT_TARGET_IS 0
' nouveau message Form 0 PRINT_LOCATE 0,0 : PRINT "Fermeture ici "+string$(41,"-")+" ^"
' GO ChangeInstructionsRoue(string$(25," ")+"Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue : SHOW NumFormRoue%
' Déplacement de Form 0 TOP 0,0 : LEFT 0,0
' message "INFO: la durée, avant le relâchement, du clic influe sur la vitesse initiale de la roue." END rem ============================================================' SORTIE ROUE 3D GestionRoue: OFF_MOUSE_DOWN Scene3dRoue% ' Résultat ChangeInstructionsRoue(string$(35," ")+"Résultat") MESSAGE STR$(ResultatTirage%) ' Désactiver provisoirement la roue IF NumFormRoue%<>0 then HIDE NumFormRoue% IF NumFormRoue%<>0 then SET_FOCUS 0 PAUSE 2000
' Retour de la roue case dépard 3D_Z_ROTATE TdPlane%,1
' Réactiver la roue ChangeInstructionsRoue(string$(25," ")+"Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue IF NumFormRoue%<>0 then SHOW NumFormRoue% ' OU autres possibilités ' ... ' ... RETURN
rem ========================================================' 3D Wheel / Roue 3D ' 24 data(s) disponibles pour 24 parts DATA 255,155,100 DATA 000,000,255 DATA 000,255,000 DATA 255,000,000 DATA 000,255,255 DATA 255,255,000 DATA 255,000,255 DATA 130,130,130 DATA 100,000,000 DATA 000,150,000 DATA 000,000,150 DATA 000,150,150 DATA 150,150,000 DATA 255,255,255 DATA 255,128,128 DATA 205,150,255 DATA 255,050,000 DATA 005,100,000 DATA 000,000,000 DATA 100,205,255 DATA 255,180,100 DATA 100,100,200 DATA 100,255,000 DATA 000,150,150 ' ------------------------------------------------------------------------------ SUB InitRoue(TopRoue%,LeftRoue%,TitleRoue$,CenterOption%,inertie%,OptionBorderFormRoue$) ' Explications des paramètres de la SUB ' TopRoue%,LeftRoue%: position de la roue ' TitleRoue$ = CAPTION NumFormRoue% ' CenterOption%: 1 avec le centre OU 0 sans le centre ' inertie%: il s'agit de la vitesse de ralentissement de la roue (Minimum 1) Au moins 20 pour une bonne fluidité ' OptionBorderFormRoue$: "N" => Normal - "S" ou "" => Small - "H" => Hide ' (Si hide prévoir une sortie et HIDE NumFormRoue%) create_hide IF NumFormRoue%<>0 COMMAND_TARGET_IS NumFormRoue% ELSE COMMAND_TARGET_IS 0 if OptionBorderFormRoue$<>"N" then OptionBorderFormRoue$="S" END_IF IF ResistanceRoue=0 then ResistanceRoue=1 DIM_LOCAL i%,Xroue,Yroue,r%,v%,b% IF LABEL("GestionRoue")=0 then LABEL GestionRoue IF LABEL("LanceRoue")=0 then LABEL LanceRoue IF LABEL("LanceRoueSuite")=0 then LABEL LanceRoueSuite IF VARIABLE("PictureInstructions%")=0 then DIM PictureInstructions% IF VARIABLE("Tanime")=0 then DIM Tanime IF VARIABLE("NbTic")=0 then DIM NbTic : NbTic=1 IF VARIABLE("AleaNbTic")=0 then DIM AleaNbTic IF VARIABLE("ResultatTirage%")=0 then DIM ResultatTirage% IF VARIABLE("PictureRoue%")=0 then DIM PictureRoue% IF VARIABLE("PictureImage%")=0 then DIM PictureImage% IF VARIABLE("Scene3dRoue%")=0 then DIM Scene3dRoue% IF VARIABLE("TdPlane%")=0 then DIM TdPlane% IF VARIABLE("Scene2dRoue%")=0 then DIM Scene2dRoue% IF VARIABLE("PictureRoue2d%")=0 then DIM PictureRoue2d% IF VARIABLE("PictureImageRoue2d%")=0 then DIM PictureImageRoue2d% IF VARIABLE("SpriteRoue2d%")=0 then DIM SpriteRoue2d% IF VARIABLE("InertieRoue%")=0 then DIM InertieRoue% IF OptionBorderFormRoue$="" then OptionBorderFormRoue$="S" IF inertie%<1 then inertie%=20 InertieRoue%=inertie% DEGREES ' NumFormRoue% IF OptionBorderFormRoue$="N" THEN BORDER_NORMAL NumFormRoue% IF OptionBorderFormRoue$="S" THEN BORDER_SMALL NumFormRoue% IF OptionBorderFormRoue$="H" THEN BORDER_HIDE NumFormRoue% HEIGHT NumFormRoue%,540 + HEIGHT(NumFormRoue%)-HEIGHT_CLIENT(NumFormRoue%) WIDTH NumFormRoue%,500 + WIDTH(NumFormRoue%)-WIDTH_CLIENT(NumFormRoue%) TOP NumFormRoue%,TopRoue% : LEFT NumFormRoue%,LeftRoue% CAPTION NumFormRoue%,TitleRoue$ ' PictureRoue% No%=NumFormRoue%+1 : PictureRoue%=No% PICTURE No% : WIDTH No%,500 : HEIGHT No%,500 No%=No%+1 : PictureImage%=No% IMAGE PictureImage% 2D_TARGET_IS PictureRoue% COLOR PictureRoue%,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP StepNbPart% Xroue = COS(i%)*210+250 Yroue = SIN(i%)*210+250 2D_LINE 250,250,Xroue,Yroue NEXT i% FOR i% = 12 to 354 STEP StepNbPart% Xroue = COS(i%)*190+250 Yroue = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD Xroue,Yroue,r%,v%,b% NEXT i% Center(CenterOption%) 2D_IMAGE_COPY PictureImage%,0,0,500,500 ' Scene3dRoue% No%=No%+1 : Scene3dRoue%=No% SCENE3D Scene3dRoue% : HEIGHT Scene3dRoue%,500 : WIDTH Scene3dRoue%,500 COLOR Scene3dRoue%,BackColor_r%,BackColor_v%,BackColor_b% ' TdPlane% No3d%=No3d%+1 : TdPlane%=No3d% CAM_MOVE -2.6 3D_PLANE TdPlane% 3D_V_TILE TdPlane%,1 3D_U_TILE TdPlane%,1 3D_IMAGE_TEXTURE No3d%,PictureImage% 3D_X_ROTATE TdPlane%,1 ' Scene2dRoue% No%=No%+1 : Scene2dRoue%=No% SCENE2D Scene2dRoue% : HEIGHT Scene2dRoue%,40 : WIDTH Scene2dRoue%,31 COLOR Scene2dRoue%,BackColor_r%,BackColor_v%,BackColor_b% : LEFT Scene2dRoue%,235 ' PictureRoue2d% No%=No%+1 : PictureRoue2d%=No% PICTURE PictureRoue2d% : HEIGHT PictureRoue2d%,40 : WIDTH PictureRoue2d%,31 COLOR PictureRoue2d%,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS PictureRoue2d% 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,150,150,150 ' PictureImageRoue2d% No%=No%+1 : PictureImageRoue2d%=No% IMAGE PictureImageRoue2d% 2D_IMAGE_COPY PictureImageRoue2d%,0,0,31,40 ' SpriteRoue2d% NoSprite%=NoSprite%+1 : SpriteRoue2d%=NoSprite% SPRITE SpriteRoue2d% : SPRITE_IMAGE_LOAD SpriteRoue2d%,PictureImageRoue2d% ' Bandeau instruction No%=No%+1 : PictureInstructions%=No% PICTURE No% : HEIGHT No%,40 : WIDTH No%,500 : TOP No%,500 : COLOR No%,200,200,200 2D_TARGET_IS No% : 2D_FILL_COLOR 200,200,200 FONT_NAME No%,"Times New Roman" : FONT_SIZE No%,18 : FONT_ITALIC No% show_all HIDE NumFormRoue% COMMAND_TARGET_IS 0 END_SUB ' ------------------------------------------------------------------------------ SUB ChangeInstructionsRoue(TexteRoue$) CLS : 2D_TARGET_IS PictureInstructions% : COLOR PictureInstructions%,200,200,200 : 2D_FILL_COLOR 200,200,200 FONT_NAME PictureInstructions%,"Times New Roman" : FONT_SIZE PictureInstructions%,18 : FONT_ITALIC PictureInstructions% PRINT_TARGET_IS PictureInstructions% : PRINT_LOCATE 5,8 : PRINT TexteRoue$ END_SUB ' ------------------------------------------------------------------------------ LanceRoue: ChangeInstructionsRoue("Patientez ...") OFF_MOUSE_DOWN Scene3dRoue% ON_MOUSE_UP Scene3dRoue%, LanceRoueSuite NbTic = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ LanceRoueSuite: OFF_MOUSE_UP Scene3dRoue% AleaNbTic = NUMBER_TICKS - NbTic + RND(360) IF AleaNbTic > 5000 AleaNbTic = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN Scene3dRoue%,LanceRoue RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE AleaNbTic > 5 NbTic=AleaNbTic/100 3D_Z_ROTATE TdPlane%,WRAP_VALUE((NbTic+Tanime)*ResistanceRoue) ChangeInstructionsRoue(string$(40," ")+str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1)) ' caption NumFormRoue%,str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1) Tanime=NbTic+Tanime DISPLAY PAUSE InertieRoue% AleaNbTic=AleaNbTic-NbTic NbTic = NbTic*.95 END_WHILE ResultatTirage%=int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1 gosub GestionRoue : return END_SUB ' ------------------------------------------------------------------------------ SUB Center(La) IF La = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% FONT_COLOR PictureRoue%,255,255,255 2D_PEN_COLOR 255,255,255 2D_CIRCLE 250,250,40 PRINT_TARGET_IS PictureRoue% FONT_NAME PictureRoue%,"Times New Roman" FONT_SIZE PictureRoue%,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE PictureRoue%,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB
A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Jeu 31 Mai 2018 - 20:42 | |
| Une autre version qui se charge plus rapidement. - Code:
-
' ------------------------------------------------------------------------------ ' PANORAMIC 3D Wheel / Roue 3D ' Marc - May 2018 - Panoramic v0.9.28.i18 ' Adapté par Jean Claude pour utilisation dans un code avec gestion des n° d'objets. ' ------------------------------------------------------------------------------ HEIGHT 0,65 : COLOR 0,0,0,0 : FONT_COLOR 0,255,255,0 : FONT_SIZE 0,14 FONT_NAME 0,"Consolas" : FONT_BOLD 0 : PRINT " Patientez ... " TOP 0,(screen_y-height(0))/2 : LEFT 0,(screen_x-width(0))/2 ' ------------------------------------------------------------------------------ DIM No%,No3d%,NoSprite% :' Variables de gestion des n° d'objets DIM NumFormRoue%:' Si besoin d'un autre FORM que 0 pour la roue ' Attribution (ou pas) d'un n° d'objet <>0 à NumFormRoue% No%=No%+1 :' Si vous souhaitez que la roue soit sur FORM 0 shuntez cette ligne NumFormRoue%=No% if No%<>0 then FORM NumFormRoue% : HIDE NumFormRoue%
' Variables et label pour la roue ' voir commentaire dans la SUB InitVariableLabelRoue() InitVariableLabelRoue()
' Règlages de la roue (valeurs des constantes) à votre goût. BackColor_r%=0 : BackColor_v%=0 : BackColor_b%=0 ResistanceRoue = -0.99 : StepNbPart%=20 ' Mise en place de la Roue ' Les explications des paramètres de la SUB InitRoue(,,) sont dans la SUB ' dimensions de la fenêtre de la roue sont 500x540 InitRoue((screen_y-540)/2,(screen_x-500)/2,"La roue de la fortune",1,20,"H")
' redonner la main à form 0 COMMAND_TARGET_IS 0 : PRINT_TARGET_IS 0
' nouveau message Form 0 PRINT_LOCATE 0,0 : PRINT "Fermeture ici "+string$(41,"-")+" ^"
' GO ChangeInstructionsRoue(string$(25," ")+"Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue : SHOW NumFormRoue%
' Déplacement de Form 0 TOP 0,0 : LEFT 0,0
' message "INFO: la durée, avant le relâchement, du clic influe sur la vitesse initiale de la roue." END rem ============================================================' SORTIE ROUE 3D GestionRoue: OFF_MOUSE_DOWN Scene3dRoue% ' Résultat ChangeInstructionsRoue(string$(35," ")+"Résultat") MESSAGE STR$(ResultatTirage%) ' Désactiver provisoirement la roue IF NumFormRoue%<>0 then HIDE NumFormRoue% IF NumFormRoue%<>0 then SET_FOCUS 0 PAUSE 1000
' Retour de la roue case dépard (Facultatif) 3D_Z_ROTATE TdPlane%,1
' Réactiver la roue ChangeInstructionsRoue(string$(25," ")+"Cliquez sur la roue") ON_MOUSE_DOWN Scene3dRoue%,LanceRoue IF NumFormRoue%<>0 then SHOW NumFormRoue% ' OU autres possibilités ' ... ' ... RETURN
rem ========================================================' 3D Wheel / Roue 3D ' 24 data(s) disponibles pour 24 parts DATA 255,155,100 DATA 000,000,255 DATA 000,255,000 DATA 255,000,000 DATA 000,255,255 DATA 255,255,000 DATA 255,000,255 DATA 130,130,130 DATA 100,000,000 DATA 000,150,000 DATA 000,000,150 DATA 000,150,150 DATA 150,150,000 DATA 255,255,255 DATA 255,128,128 DATA 205,150,255 DATA 255,050,000 DATA 005,100,000 DATA 000,000,000 DATA 100,205,255 DATA 255,180,100 DATA 100,100,200 DATA 100,255,000 DATA 000,150,150 ' ------------------------------------------------------------------------------ SUB InitVariableLabelRoue() ' Variables et labels pour la roue LABEL GestionRoue,LanceRoue,LanceRoueSuite DIM PictureInstructions%,Tanime,NbTic,AleaNbTic,ResultatTirage%,PictureRoue% DIM PictureImage%,Scene3dRoue%,TdPlane%,Scene2dRoue%,PictureRoue2d% DIM PictureImageRoue2d%,SpriteRoue2d%,InertieRoue% NbTic=1 ' Autres variables (constantes) nécessaires pour le fontionnement la roue: DIM BackColor_r%,BackColor_v%,BackColor_b% ' BackColor_r% : BackColor_v% : BackColor_b% Les 3 Couleurs derrière la roue DIM ResistanceRoue ' ResistanceRoue: Plus le chiffre est éloigné de zéro plus la vitesse initiale de la roue sera grande ' Sens de Rotation: Si ResistanceRoue est négative (-0.5) => sens des aiguilles d'une montre : positive (0.5) => sens inverse des aiguilles d'une montre DIM StepNbPart% :' définition du nombre sections de la roue (Voir exemple ci-dessous) ' StepNbPart% : 20 => 18 Parts : 15 => 24 parts : 24 => 15 parts : 30 => 12 parts ' Attention le nombre de lignes de data doit correspondre au nombre de parts (ici 18 parts mais 24 prévues au maxi) END_SUB ' ------------------------------------------------------------------------------ SUB InitRoue(TopRoue%,LeftRoue%,TitleRoue$,CenterOption%,inertie%,OptionBorderFormRoue$) ' Explications des paramètres de la SUB ' TopRoue%,LeftRoue%: position de la roue ' TitleRoue$ = CAPTION NumFormRoue% ' CenterOption%: 1 avec le centre OU 0 sans le centre ' inertie%: il s'agit de la vitesse de ralentissement de la roue (Minimum 1) Au moins 20 pour une bonne fluidité ' OptionBorderFormRoue$: "N" => Normal - "S" ou "" => Small - "H" => Hide ' (Si hide prévoir une sortie et HIDE NumFormRoue%) IF NumFormRoue%<>0 COMMAND_TARGET_IS NumFormRoue% ELSE COMMAND_TARGET_IS 0 if OptionBorderFormRoue$<>"N" then OptionBorderFormRoue$="S" END_IF IF ResistanceRoue=0 then ResistanceRoue=1 DIM_LOCAL i%,Xroue,Yroue,r%,v%,b% IF OptionBorderFormRoue$="" then OptionBorderFormRoue$="S" IF inertie%<1 then inertie%=20 InertieRoue%=inertie% DEGREES ' NumFormRoue% IF OptionBorderFormRoue$="N" THEN BORDER_NORMAL NumFormRoue% IF OptionBorderFormRoue$="S" THEN BORDER_SMALL NumFormRoue% IF OptionBorderFormRoue$="H" THEN BORDER_HIDE NumFormRoue% HEIGHT NumFormRoue%,540 + HEIGHT(NumFormRoue%)-HEIGHT_CLIENT(NumFormRoue%) WIDTH NumFormRoue%,500 + WIDTH(NumFormRoue%)-WIDTH_CLIENT(NumFormRoue%) TOP NumFormRoue%,TopRoue% : LEFT NumFormRoue%,LeftRoue% CAPTION NumFormRoue%,TitleRoue$ ' PictureRoue% No%=NumFormRoue%+1 : PictureRoue%=No% PICTURE No% : WIDTH No%,500 : HEIGHT No%,500 No%=No%+1 : PictureImage%=No% IMAGE PictureImage% 2D_TARGET_IS PictureRoue% COLOR PictureRoue%,BackColor_r%,BackColor_v%,BackColor_b% 2D_PEN_COLOR 100,100,100 2D_CIRCLE 250,250,210 FOR i% = 0 to 360 STEP StepNbPart% Xroue = COS(i%)*210+250 Yroue = SIN(i%)*210+250 2D_LINE 250,250,Xroue,Yroue NEXT i% FOR i% = 12 to 354 STEP StepNbPart% Xroue = COS(i%)*190+250 Yroue = SIN(i%)*190 +250 READ r% READ v% READ b% 2D_FLOOD Xroue,Yroue,r%,v%,b% NEXT i% Center(CenterOption%) 2D_IMAGE_COPY PictureImage%,0,0,500,500 ' Scene3dRoue% No%=No%+1 : Scene3dRoue%=No% SCENE3D Scene3dRoue% : HEIGHT Scene3dRoue%,500 : WIDTH Scene3dRoue%,500 COLOR Scene3dRoue%,BackColor_r%,BackColor_v%,BackColor_b% ' TdPlane% No3d%=No3d%+1 : TdPlane%=No3d% CAM_MOVE -2.6 3D_PLANE TdPlane% 3D_V_TILE TdPlane%,1 3D_U_TILE TdPlane%,1 3D_IMAGE_TEXTURE No3d%,PictureImage% 3D_X_ROTATE TdPlane%,1 ' Scene2dRoue% No%=No%+1 : Scene2dRoue%=No% SCENE2D Scene2dRoue% : HEIGHT Scene2dRoue%,40 : WIDTH Scene2dRoue%,31 COLOR Scene2dRoue%,BackColor_r%,BackColor_v%,BackColor_b% : LEFT Scene2dRoue%,235 ' PictureRoue2d% No%=No%+1 : PictureRoue2d%=No% PICTURE PictureRoue2d% : HEIGHT PictureRoue2d%,40 : WIDTH PictureRoue2d%,31 COLOR PictureRoue2d%,BackColor_r%,BackColor_v%,BackColor_b% 2D_TARGET_IS PictureRoue2d% 2D_PEN_COLOR 50,50,50 2D_POLY_FROM 0,0 2D_POLY_TO 15,39 2D_POLY_TO 30,0 2D_POLY_TO 15,10 2D_POLY_TO 0,0 2D_FLOOD 15,20,150,150,150 ' PictureImageRoue2d% No%=No%+1 : PictureImageRoue2d%=No% IMAGE PictureImageRoue2d% 2D_IMAGE_COPY PictureImageRoue2d%,0,0,31,40 ' SpriteRoue2d% NoSprite%=NoSprite%+1 : SpriteRoue2d%=NoSprite% SPRITE SpriteRoue2d% : SPRITE_IMAGE_LOAD SpriteRoue2d%,PictureImageRoue2d% ' Bandeau instruction No%=No%+1 : PictureInstructions%=No% PICTURE No% : HEIGHT No%,40 : WIDTH No%,500 : TOP No%,500 : COLOR No%,200,200,200 2D_TARGET_IS No% : 2D_FILL_COLOR 200,200,200 FONT_NAME No%,"Times New Roman" : FONT_SIZE No%,18 : FONT_ITALIC No% HIDE NumFormRoue% COMMAND_TARGET_IS 0 END_SUB ' ------------------------------------------------------------------------------ SUB ChangeInstructionsRoue(TexteRoue$) CLS : 2D_TARGET_IS PictureInstructions% : COLOR PictureInstructions%,200,200,200 : 2D_FILL_COLOR 200,200,200 FONT_NAME PictureInstructions%,"Times New Roman" : FONT_SIZE PictureInstructions%,18 : FONT_ITALIC PictureInstructions% PRINT_TARGET_IS PictureInstructions% : PRINT_LOCATE 5,8 : PRINT TexteRoue$ END_SUB ' ------------------------------------------------------------------------------ LanceRoue: ChangeInstructionsRoue("Patientez ...") OFF_MOUSE_DOWN Scene3dRoue% ON_MOUSE_UP Scene3dRoue%, LanceRoueSuite NbTic = NUMBER_TICKS RETURN ' ------------------------------------------------------------------------------ LanceRoueSuite: OFF_MOUSE_UP Scene3dRoue% AleaNbTic = NUMBER_TICKS - NbTic + RND(360) IF AleaNbTic > 5000 AleaNbTic = 4000 + RND(360) + RND(180) END_IF Animation() ON_MOUSE_DOWN Scene3dRoue%,LanceRoue RETURN ' ------------------------------------------------------------------------------ SUB Animation() WHILE AleaNbTic > 5 NbTic=AleaNbTic/100 3D_Z_ROTATE TdPlane%,WRAP_VALUE((NbTic+Tanime)*ResistanceRoue) ChangeInstructionsRoue(string$(40," ")+str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1)) ' caption NumFormRoue%,str$(int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1) Tanime=NbTic+Tanime DISPLAY PAUSE InertieRoue% AleaNbTic=AleaNbTic-NbTic NbTic = NbTic*.95 END_WHILE ResultatTirage%=int(wrap_value(o3d_z_rotate(TdPlane%)+270)/StepNbPart%)+1 gosub GestionRoue : return END_SUB ' ------------------------------------------------------------------------------ SUB Center(La) IF La = 1 2D_FILL_COLOR BackColor_r%,BackColor_v%,BackColor_b% FONT_COLOR PictureRoue%,255,255,255 2D_PEN_COLOR 255,255,255 2D_CIRCLE 250,250,40 PRINT_TARGET_IS PictureRoue% FONT_NAME PictureRoue%,"Times New Roman" FONT_SIZE PictureRoue%,22 PRINT_LOCATE 233,215 PRINT "3D" FONT_SIZE PictureRoue%,12 PRINT_LOCATE 218,245 PRINT "Panoramic" PRINT_LOCATE 230,265 PRINT "Wheel" END_IF END_SUB
A+ | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Roue pour jeu Jeu 31 Mai 2018 - 22:33 | |
| C'est vraiment bien | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Roue pour jeu Ven 1 Juin 2018 - 7:34 | |
| Merci Silverman Le plus gros du travail est celui de Marc car j'aurais été incapable de faire cette roue en 3D. Je me suis contenté d'adapter son code pour pouvoir s'en servir dans un jeu. Ce sera pour plus tard... Donc merci à Marc @Papydall, as-tu toujours le problème de délai de chargement Et si oui, combien de temps faut-il A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Roue pour jeu | |
| |
| | | | Roue pour jeu | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |