» codelab : http://codelab.fr/accueil » Forum : Processing : http://codelab.fr/processing » texte/nombre aléatoire : http://codelab.fr/5625 Ceci est la version imprimable d'un sujet du forum, pour retourner à la version complète : texte/nombre aléatoire |
grsblfx — 2015-02-22 22:37:43 |
Bonjour, je tente en vain de créer deux petits programmes, qui pourraient paraître simples à l'énoncé, mais n'étant qu'un simple débutant, certaines subtilités que je ne saisis pas me donnent du fil à retordre. Code (langage) :String[] base = { "1","2","3","4","5","6"}; PFont police; void setup() { size(600,600); background(0); } void draw() { if (keyPressed) { background(0); police = loadFont("OratorStd-48.vlw"); textFont(police, 42); textAlign(CENTER); float alea=random(0,base.length); int labase=int(alea); String reponse=base[labase]; text(reponse, width/2, 100); } } mais là je veux un chiffre entre 1 et 1000, je suis donc obligé de trouver une autre manière d'obtenir un nombre aléatoire sans avoir à les référencer un par un ("1","2","3","4"...). J'ai essayé différents trucs comme remplacer cette base de nombre par random(1,1000); mais bien entendu ça ne marche pas, je suppose donc qu'il doit y avoir un truc tout con pour faire ça. |
Nicolas Lhommet — 2015-02-23 05:57:09 |
Salut, tu as aussi le droit d'afficher des nombres sans être obligé de les transformer préalablement en chaînes de caractères : void setup() { size(300, 300); background(0); } void draw() { if (keyPressed) { background(0); textSize(width/3); textAlign(CENTER, CENTER); int alea=int(random(1, 1000)); text(alea, width/2, height/2); } } Par contre la méthode que tu as employée est la bonne pour effectuer un tirage au sort dans un tableau de chaînes de caractères (nommé "base" dans ton exemple), et si tu veux en créer un à partir d'un fichier texte type dictionnaire (avec un mot par ligne), pour ça il y a la méthode loadStrings() : https://processing.org/reference/loadStrings_.html . D'ailleurs, si tu débutes en programmation, tu devrais commencer par t'attarder sur un maximum d'exemples de la documentation... |
grsblfx — 2015-02-23 18:03:39 |
Merci beaucoup pour ton aide ! j'ai effectivement encore pas mal de progrès à faire pour saisir les int strings etc... je vais potasser tout ça. |
grsblfx — 2015-03-04 23:35:18 |
Du coup j'ai essayé la méthode loadstring et je suis parvenu à faire sortir les mots d'une liste partant d'un fichier .txt de façon aléatoire, cependant je ne parviens pas à "actualiser" le mot affiché lorsque j'appuie sur une touche, et en retournant sur mon code j'ai un message d'erreur dans la console qui me dit que le fichier .txt que j'utilise est manquant ou inaccessible, or il vient pourtant de m'afficher un mot tiré de ce fameux fichier .txt, alors je me suis demandé si ce n'était pas la quantité de mots contenue dedans qui posait problème mais après avoir remplacé la longue liste par une courte liste le problème reste le même, je ne comprends pas d'où peut venir le problème, j'ai creusé sur le net mais impossible d'en trouver plus sur les loadstrings et comment les utiliser en random. String[] words = loadStrings("blabla.txt"); PFont police; void setup() { size(600,600); background(0); String[] words = loadStrings("blabla.txt"); police = loadFont("OratorStd-48.vlw"); textFont(police, 42); textAlign(CENTER,CENTER); float alea=random(0,words.length); int thewords=int(alea); String reponse=words[thewords]; text(reponse, width/2, height/2); } void draw() { if (keyPressed) { police = loadFont("OratorStd-48.vlw"); textFont(police, 42); textAlign(CENTER,CENTER); float alea=random(0,words.length); int thewords=int(alea); String reponse=words[thewords]; text(reponse, width/2, height/2); } } auriez-vous une idée de la raison pour laquelle ce code ne fonctionne pas ? |
Mushussu — 2015-03-05 08:10:16 |
Bonjour, String[] words; PFont police; String reponse; void setup() { size(600, 600); words = loadStrings("blabla.txt"); police = loadFont("ArialMT-48.vlw"); textFont(police, 42); textAlign(CENTER, CENTER); reponse = words[int(random(0, words.length))]; } void draw() { background(0); text(reponse, width/2, height/2); } void keyPressed() { reponse = words[int(random(0, words.length))]; } |