| | [RÉSOLU] Dessine moi un mouton (ou pas). | |
| | Auteur | Message |
---|
Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: [RÉSOLU] Dessine moi un mouton (ou pas). Mer 28 Sep 2011 - 12:39 | |
| Bonjour, je ne pensais pas avoir besoin d'aide pour ce que je voulais faire mais en fait si :° NB: je n'ai pas fait d'études scientifiques. Je voudrais juste créer une jauge ronde basée sur un pourcentage. Je voudrais que ce sois le plus précis possible donc j'ai pensé passé par des - Code:
-
draw_line(); . Ce que j'ai réussi à faire avec : - Code:
-
var centre_x, centre_y, longeur, i, j; centre_x=160; centre_y=160; longueur = 100;
draw_set_color(0);
for( {i=longueur; j=0; }; j <= longueur; {i-=1; j+=1;} ) draw_line( centre_x, centre_y, centre_x+i, centre_y-j );
for( {i=longueur; j=0; }; j <= longueur; {i-=1; j+=1;} ) draw_line( centre_x, centre_y, centre_x+i, centre_y+j); for( {i=longueur; j=0; }; j <= longueur; {i-=1; j+=1;} ) draw_line( centre_x, centre_y, centre_x-i, centre_y+j); for( {i=longueur; j=0; }; j <= longueur; {i-=1; j+=1;} ) draw_line(centre_x, centre_y, centre_x-i, centre_y-j); Voilà ce que ça me donne: Que ce ne sois pas rond ne me gêne pas trop car j'ai une image qui va par dessus. Mais ce que je ne comprend pas c'est pourquoi ça me fait un genre de dégradé blanc? Dans la logique (dans la mienne en tout cas) ça devrais être entièrement noir. Quelqu'un à une réponse et surtout une solution?
Dernière édition par Caly le Mer 28 Sep 2011 - 21:03, édité 1 fois |
| | | arthuro Utilisateur confirmé: Rang ****
Messages : 1483 Localisation : Paris Projet Actuel : Diagon https://arthursonzogni.com/Diagon
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). Mer 28 Sep 2011 - 15:40 | |
| j'ai la solution.
Alors au lieu de dessiner des ligne je te conseil vivement de dessiner des triangles et pour que sa paraisse bien linéaire, l'avancement de la jauge dans la partie en anneau, tu devra utiliser les fonction trigonométrique Sur Gm, tu as: length_xdir( longueur, angle) length_ydir( longueur, angle)
(je ne me souviens plus des nom, il se peux que les x et y se place après ou avant)
si tu veux, le point de coordonnée (X,Y) où X= x + length_xdir( longueur, angle) Y= y + length_ydir( longueur, angle) sera le point (x,y) plus un déplacement de longueur <longueur> et d'angle <angle>
donc on va dessiner des triangles pour remplir ta jauge: (centré en (x,y), de rayon)
for( angle=0 ; angle<=angle_max; angle+=20) { draw_triangle( x,y, x+length_xdir(100,angle) , y+length_xdir(100,angle), x+length_xdir(100,angle+20) , y+length_xdir(100,angle+20), false) }
En fait on dessine un secteur ( portion de pizza dans l'idée) , angle_max est l'angle d'ouverture de ce secteur.
|
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). Mer 28 Sep 2011 - 15:57 | |
| primitives4ever - Code:
-
// spriteRadial(sprite, subimage, x, y, partsNumber, partsVisibles, angle) var tex, wid, hei, i, s, c; draw_set_color(c_white) tex = sprite_get_texture(argument0, argument1) wid = sprite_get_width(argument0) hei = sprite_get_height(argument0)
draw_primitive_begin_texture(pr_trianglefan, tex) draw_vertex_texture(argument2, argument3, 0.5, 0.5) for(i=0; i<=360-360/argument4*argument5; i+=360/argument4) { c = lengthdir_x(0.5, i+argument6) s = lengthdir_y(0.5, i+argument6) draw_vertex_texture(argument2+c*wid, argument3+s*hei, 0.5+c, 0.5+s) } draw_primitive_end() par exemple pour ton image : spriteRadial(sprite0, 0, x, y, 6, 5) // faut mettre une variable a la place de 5 aussi :p |
| | | Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). Mer 28 Sep 2011 - 21:01 | |
| Bonsoir, Merci arthuro pour ta réponse. Enfait j'y avais pensé aux triangles, mais pas à "length_xdir();" et "length_ydir();" qui sont des fonctions géniales. Le pourquoi que je n'ai pas utilisé les triangles c'est par ce que ce n'est pas précis. - Citation :
- Je voudrais que ce sois le plus précis possible[...]
C'est pour ça que j'ai utilisé les lignes. Je pense que "length_x/ydir" aurais résolu mon problème et je te remercie vraiment pour ta participation. Mais c'est sans compter la fonction extra que onilink_ nous a partagé. Ça marche vraiment bien et c'est très précis si on met 101 dans "partsNumber". Je partage le tout pour ceux qui sont intéressé pour un système similaire. ___ Création d'un sprite nommé "img_jauge": en image 0 : et en image 1: et centrer l'origine. Créer un script (écrit par onilink_) nommé "spriteRadial": - Code:
-
// spriteRadial(sprite, subimage, x, y, partsNumber, partsVisibles, angle) var tex, wid, hei, i, s, c; draw_set_color(c_white) tex = sprite_get_texture(argument0, argument1) wid = sprite_get_width(argument0) hei = sprite_get_height(argument0)
draw_primitive_begin_texture(pr_trianglefan, tex) draw_vertex_texture(argument2, argument3, 0.5, 0.5) for(i=0; i<=360-360/argument4*argument5; i+=360/argument4) { c = lengthdir_x(0.5, i+argument6) s = lengthdir_y(0.5, i+argument6) draw_vertex_texture(argument2+c*wid, argument3+s*hei, 0.5+c, 0.5+s) } draw_primitive_end() Créer un objet nommé "obj_jauge" : Dans ev_draw: - Code:
-
draw_sprite(img_jauge, 0, view_xview+sprite_get_width(img_jauge)/2, view_yview+sprite_get_height(img_jauge)/2); val_actuel = 700; val_max = 1000;
val_pc= (val_actuel*100)/val_max;
spriteRadial(img_jauge, 1, view_xview+sprite_get_width(img_jauge)/2, view_yview+sprite_get_height(img_jauge)/2, 101, val_pc); Il suffis de changer "val_actuel" et "val_max" pour voir la jauge se modifier. __ Merci arthuro et onilink_! |
| | | Caly Utilisateur confirmé: Rang ****
Messages : 1285 Localisation : Haute Normandie Projet Actuel : Capturer, apprivoiser et dresser des Pokémons sauvages pour faire des spectacles de rue et en faire mon métier.
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). Ven 30 Sep 2011 - 13:29 | |
| Bonjour, je reviens sur le sujet car je me pose une question.
Enfait onilink_ ta fonction va executer le calcule a tout les step, il n'est pas possible de mettre en memoire l'image et de ne faire le calcule que si la jauge change?
Et es ce que ca vaux le coup? |
| | | Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). Ven 30 Sep 2011 - 14:26 | |
| mouarf, a 3 million de calcul par seconde c'est pas ca le problème |
| | | onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). Ven 30 Sep 2011 - 15:09 | |
| Non mais tait toi Qual, optimiser cay le bien Ce que tu peut faire c'est dessiner ta jauge dans une surface a chaque changement de valeur. Et tu affiche chaque step la surface, ce qui équivaux a un seul draw (go la doc pour les surfaces) |
| | | Contenu sponsorisé
| Sujet: Re: [RÉSOLU] Dessine moi un mouton (ou pas). | |
| |
| | | | [RÉSOLU] Dessine moi un mouton (ou pas). | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |