Colorer aléatoirement les images dans une grille

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
simonini_thomas
Messages : 48
Inscription : 02 Mai 2015 15:53

Colorer aléatoirement les images dans une grille

Message par simonini_thomas » 11 Mai 2015 12:12

Bonjour à tous !

Voila voila, je m'entrainais à faire un petit exercice qui consistait à créer une grille (merci à l'inventeur de Grid Layout Group :lol: ) et j'aimerai que toutes les images présentes sur la grille aient une couleur choisi aléatoirement entre 4 couleurs.
Pour faire simple : par exemple image1 : bleue, image2: vert ect ect.

Voila l'image et le début de mon script

Code : Tout sélectionner

using System.Collections;

public class random_color : MonoBehaviour {
	
	public Image panel;
	public Image image;
	public Image image1;
	public Image image2;
	public Color color_green = new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public int color_green_choice = 1;
	public Color color_red= new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public int color_red_choice = 2;
	public Color color_blue = new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public int color_blue_choice = 3;
	public Color color_yellow = new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public int color_yellow_choice = 4;
	private int color_chosen = 0;
	
	void Start(){
		//Right here. Make sure there's an image component attached,
		//or it will throw an error in Update()
		panel = GetComponent<Image>();
		GetRandomColor();
	}
	
	public void GetRandomColor(){
		
		color_chosen = Random.Range(1,4);
		
		if(color_chosen == 1)
		{
			image.color = color_green;
		}
		else if (color_chosen == 2)
		{
			image.color = color_red;
		}
		else if (color_chosen == 3)
		{
			image.color = color_blue;
		}
		else if (color_chosen == 4)
		{
			image.color = color_yellow;
		}
		
	}
	
}
questionss.png
questionss.png (214.07 Kio) Consulté 2422 fois
Le problème : et bien cela ne s'applique qu'à la première image. Sauriez vous comment faire ? Ou du moins avez vous des conseils concernant mon script ?

Voila voila merci à tous passez une bonne journée :D

Avatar de l’utilisateur
Montmorency
Messages : 55
Inscription : 01 Mai 2015 15:28

Re: Colorer aléatoirement les images dans une grille

Message par Montmorency » 11 Mai 2015 12:38

Bonjour,

Pour ton problème c'est normal que ça soit juste ta première image qui change car tu exécute

Code : Tout sélectionner

image.color = color_green;
qui correspond à ta première image.

Pour changer aussi les autre images il faut que tu les renseigne dans ton script.

Moi je ferrais quelques chose comme ça :

Code : Tout sélectionner

	public Color color_green = new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public Color color_red= new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public Color color_blue = new Color(0.2F, 0.3F, 0.4F, 0.5F);
	public Color color_yellow = new Color(0.2F, 0.3F, 0.4F, 0.5F);
	
	void Start(){
		GetRandomColor();
	}
	
	public void GetRandomColor() {
		// recherche le nombre d'enfant que ton object contient donc la Panel
		// ensuite applique une boucle for
		for (int i = 0; i < transform.childCount; i++) {
			//on applique la valeur random
			int color_chosen = Random.Range(1,4);
			//on crée une variable tampo
			Color couleur = new Color();
			
			if(color_chosen == 1)
			{
				couleur = color_green;
			}
			else if (color_chosen == 2)
			{
				couleur = color_red;
			}
			else if (color_chosen == 3)
			{
				couleur = color_blue;
			}
			else if (color_chosen == 4)
			{
				couleur = color_yellow;
			}
			//enfin on applique la nouvelle couleur au gameObject enfant qui porte le nom "Image " (ne pas oublier l'espace) + i 
			//et on change ça couleur pas "couleur"
			transform.FindChild ("Image " + i).GetComponent<Image> ().color = couleur;
		}
	}
Je pense que c'est le plus facile car comme ça tu peux rajouter autant d'image que tu veux à condition qu'elle porte le nom "Image " et un chiffre après
Donc n'oublie pas de mettre "0" à ta première image;

Autre point c'est tu que color à ces propres couleur de base donc pour faire le rouge, tu peut simplement faire Color.red

Cordialement !

simonini_thomas
Messages : 48
Inscription : 02 Mai 2015 15:53

Re: Colorer aléatoirement les images dans une grille

Message par simonini_thomas » 11 Mai 2015 22:30

Merci beaucoup ça marche parfaitement ! :)

Avatar de l’utilisateur
Montmorency
Messages : 55
Inscription : 01 Mai 2015 15:28

Re: Colorer aléatoirement les images dans une grille

Message par Montmorency » 12 Mai 2015 18:06

De rien ! :D

Répondre

Revenir vers « (C#) CSharp »