Modification couleur d'un caractère
Julien253
-
critou -
critou -
Bonjour,
je programme actuellement un jeu avec le langage python mais je rencontre quelques problèmes, le joueur est modélisé par un caractère "O" se déplaçant dans une grille, j'aimerais faire prendre plusieurs couleurs à mon joueur (Rouge, Jaune, Bleu), la couleur du caractère doit être incrémenté a chaque appui sur une touche par l'utilisateur mais je ne vois pas vraiment comment m'y prendre, j'avais pensé à utiliser une liste dans laquelle rentrer les codes correspondant à chacune des couleurs pouvant être prises par le joueur puis à naviguer à travers cette liste pour sélectionner la couleur prise par le joueur...j'espère n'avoir pas été trop imprécis dans ma question, j'espère que quelqu'un pourra m'éclairer un peu plus sur la manière de réaliser cette fonction, toute aide sera la bienvenue,
Merci beaucoup
je programme actuellement un jeu avec le langage python mais je rencontre quelques problèmes, le joueur est modélisé par un caractère "O" se déplaçant dans une grille, j'aimerais faire prendre plusieurs couleurs à mon joueur (Rouge, Jaune, Bleu), la couleur du caractère doit être incrémenté a chaque appui sur une touche par l'utilisateur mais je ne vois pas vraiment comment m'y prendre, j'avais pensé à utiliser une liste dans laquelle rentrer les codes correspondant à chacune des couleurs pouvant être prises par le joueur puis à naviguer à travers cette liste pour sélectionner la couleur prise par le joueur...j'espère n'avoir pas été trop imprécis dans ma question, j'espère que quelqu'un pourra m'éclairer un peu plus sur la manière de réaliser cette fonction, toute aide sera la bienvenue,
Merci beaucoup
A voir également:
- Modification couleur d'un caractère
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Suivi de modification word - Guide
- Caractere speciaux - Guide
- Caractere vide - Guide
1 réponse
Bonsoir.
La solution la plus basique est d'utiliser une simple fonction et un modulo.
Mais ce n'est pas ce qu'il y a de mieux à faire, car cela nécessite d'utiliser une variable hors de la fonction.
On peut alors fourrer tout cela dans une simple classe pour rendre cela un peu plus propre.
J'ai utilisé ici la méthode __next__ pour obtenir la couleur suivante, mais tu peux utiliser ce que tu veux comme nom de méthode, get, couleur, etc.
Mais en python, il y aussi les générateurs qui s'utilise avec le mot clef python yield.
Comme tu vois, il y a de multiples façons de procéder, la 1ère étant à éviter amha.
La solution la plus basique est d'utiliser une simple fonction et un modulo.
couleurs = ('#ff0000', '#ffff00', '#0000ff') index_couleur = 0 def generer_couleur(): global index_couleur couleur = couleurs[index_couleur%len(couleurs)] index_couleur += 1 return couleur
Mais ce n'est pas ce qu'il y a de mieux à faire, car cela nécessite d'utiliser une variable hors de la fonction.
On peut alors fourrer tout cela dans une simple classe pour rendre cela un peu plus propre.
class Couleurs: def __init__(self): self.couleurs = ('#ff0000', '#ffff00', '#0000ff') self.len = len(self.couleurs) self.index = 0 def __next__(self): couleur = self.couleurs[self.index%self.len] self.index += 1 return couleur couleurs = Couleurs() for _ in range(5): print(next(couleurs))
J'ai utilisé ici la méthode __next__ pour obtenir la couleur suivante, mais tu peux utiliser ce que tu veux comme nom de méthode, get, couleur, etc.
Mais en python, il y aussi les générateurs qui s'utilise avec le mot clef python yield.
def generer_couleurs(couleurs): i = 0 while True: try: yield couleurs[i] except IndexError: i = 0 continue i += 1 couleurs = ('#ff0000', '#ffff00', '#0000ff') couleur = generer_couleurs(couleurs) for _ in range(5): print(next(couleur))
Comme tu vois, il y a de multiples façons de procéder, la 1ère étant à éviter amha.