π
<-
Chat plein-écran
[^]

2 on.paint ?

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

2 on.paint ?

Message non lude GreenTree0 » 05 Sep 2017, 16:32

Okay just before I explain I wanna say that I'm not english so this message may get a lot of errors.

So, I'm totally starting with lua but I love it, I'm trying to do a really simple game called "Morpion", the problem is, that I have 2 on.paint function and the second remove the first, and I don't know how to have the 2 at the same time, but without my program you'll not understand anything so i'll just add it here . I need that when I press 5, it had a new gc:draw on my on.paint already existing.
If someone could help me would be cool because I searched for like 5 hours (no lying) in allll the sites but not any is speaking how to...
Thanks in advance !
Fichiers joints
tees.png
Avatar de l’utilisateur
GreenTree0
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 80%
 
Messages: 8
Inscription: 05 Sep 2017, 16:21
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Seconde

Re: 2 on.paint ?

Message non lude Adriweb » 05 Sep 2017, 17:24

Tu peux parler Français, après tout c'est la langue majoritaire sur TI-Planet ;)

Bref, je n'ai pas bien compris ton besoin d'avoir plusieurs on.paint dans ton code selon ce que tu dois dessiner.
Il me semble en fait que tu n'as pas bien intégré la façon dont se déroule le fonctionnement (événementiel) de l'appli - mais c'est relativement normal au début, c'est assez différent d'autres choses/langages.

En gros, tu n'as pas besoin de redéclarer des on.paint, un seul suffit, et en fonction de variables externes/globales (mises a jour ailleurs, par exemple dans le on.charIn), va afficher des choses différentes.

Par exemple si tu as une matrice (un tableau 2D) représentant l'état en cours de la grille du morpion, le charIn va juste modifier cette variable là selon la touche appuyée, et tout ce que fera le on.paint, c'est affichée l'état de la grille (modifiée au cours du temps donc) - aucun besoin que telle ou telle fonction aille en modifier une autre :)

Note : pour déclencher un re-paint (autrement dit, faire en sorte que le on.paint() soit appelé par le système, tu peux mettre platform.window:invalidate() à la fin du on.charIn

Au passage, si tu cherches des tutos de Lua, il y a en a des excellents sur le site de compasstech, et le wiki d'inspired-lua devrait bien t'aider aussi (en plus du PDF officiel de l'API)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: 2 on.paint ?

Message non lude GreenTree0 » 06 Sep 2017, 15:48

Alors j'ai fait ce que tu m'as dit mais maintenant ça me met une erreur et quand je clique sur 5 tout s'efface (dans le ti nspire student software) , je te met un screen, et sur calculette ca efface tout et ca me met un message : "La page 1.1 a rencontré une erreur. Veuillez contacter l'auteur avec les informations suivantes." Line 34: attempt to index global 'gc" (a nil value). Donc je sais pas trop quoi faire et j'ai essayer de placer le platform invalidate un peu partout ca n'a rien changer :/

P.S : Merci beaucoup pour ton aide déja ! :)
P.S.S : J''enregistre les tutos j'irai les voirs ce week end et j'y passerai un peu de temps, merci :)
Fichiers joints
gzesdf.png
Avatar de l’utilisateur
GreenTree0
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 80%
 
Messages: 8
Inscription: 05 Sep 2017, 16:21
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Seconde

Re: 2 on.paint ?

Message non lude Adriweb » 06 Sep 2017, 16:00

Je regarderai davantage ce soir, mais : 1) pas d'utilisation de gc sauf dans le on.paint ;) 2) pour des raisons de performances, faire d'image.new/rotate/scale... uniquement le moins souvent possible (par exemple dans une fonction d'initialisation, pas dans un handler d'événement comme on.charIn)
Cf. archives_voir.php?id=6720 et archives_voir.php?id=280698
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: 2 on.paint ?

Message non lude GreenTree0 » 06 Sep 2017, 16:30

Alors, re merci déja ! :)
Donc j'ai enlever le gc, et pareil ca efface tout et ça met une petite fleche rouge au meme endroit, et dans la calculette : "attempt to call global 'drawimage' (a nil value) voilou, et sinon a part les image.new et toussa, comment on fait pour importer une image ?
P.S : Les logiciels je regarderaient ça ce we ^^

En tout cas merci !
Avatar de l’utilisateur
GreenTree0
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 80%
 
Messages: 8
Inscription: 05 Sep 2017, 16:21
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Seconde

Re: 2 on.paint ?

Message non lude Adriweb » 06 Sep 2017, 16:34

Non, ce qu'il faut faire, c'est pas d'appel à gc:drawImage (ou toute autre fonction de gc) autre part que dans on.paint(gc), donc fais le y la dedans ;)
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: 2 on.paint ?

Message non lude GreenTree0 » 06 Sep 2017, 17:04

Alors, j'ai essayer, avec sans gc:, avec et sans platform invalidate, sans le gc ca fait tout disparaitre, donc erreur fleche rouge, avec il ne se passe strictement rien quand j'appuie sur 5 :/

Désolé de te mobiliser ton temps ! :/
J'ai fait comme ceci :
Fichiers joints
dsxgdfxc.png
Avatar de l’utilisateur
GreenTree0
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 80%
 
Messages: 8
Inscription: 05 Sep 2017, 16:21
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Seconde

Re: 2 on.paint ?

Message non lude Adriweb » 06 Sep 2017, 18:00

En même temps, c'est normal que ça ne fonctionne pas, ça fait 2 fois que tu n'appliques pas ce que je dis...

- gc tout seul ou drawImage tout seul, ça ne veut rien dire, donc erreur normale.
- toutes les actions graphiques (ce qui commence par "gc:") doit être impérativement (et uniquement) dans la fonction on.paint(gc).
- les image.new, tu devrais les faire en haut de ton fichier plutôt, ça prendra moins de mémoire et ça ira plus vite
- en bas de ta fonction on.charIn, écris platform.window:invalidate() pour déclencher un refresh de l'écran (donc ça va finir par appeler ton on.paint(gc), qui va donc dessiner ce que tu lui dis)

Tu devrais copier/coller ton code (plutôt que de faire un screenshot), comme ça je pourrais le reprendre directement.
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: 2 on.paint ?

Message non lude GreenTree0 » 06 Sep 2017, 18:19

Bon alors, je sais que ce que je fais est encore faux mais je t'explique mon point de vue, si le gc:drawImage doit etre dans le on.paint alors comment il peut aussi etre dans le on.charIn, si il est dans le on.paint il va se dessiner direct et non pas quand j'appuierai sur 5, enfin bon, je te met le code, je pense que je comprendrai apres :

Code: Tout sélectionner
local screen = platform.window

local h=screen:height()

local w=screen:width()

tour = rond
case1 = vide
case2 = vide
case3 = vide
case4 = vide
case5 = vide
case6 = vide
case7 = vide
case8 = vide
case9 = vide
croixu = image.new(_R.IMG.croixu)
function on.paint(gc)
gc:drawLine(120, 170,120,40)
gc:drawLine(200, 170,200,40)
gc:drawLine(60, 80,260,80)
gc:drawLine(60, 130,260,130)
gc:setFont("sansserif", "bi", 12)
gc:setColorRGB(100, 200, 8)
gc:drawString("Morpion", 130,0)
end
function on.charIn(ch)
    if ch == "5" then
     if case5 == vide then
       if tour == rond then
       tour=croix
        gc:drawImage(croixu,100,75)
       else
       if tour == croix then
       tour=rond
       end
       end
     end
   end
end
platform.window:invalidate()
Avatar de l’utilisateur
GreenTree0
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 80%
 
Messages: 8
Inscription: 05 Sep 2017, 16:21
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Seconde

Re: 2 on.paint ?

Message non lude Adriweb » 06 Sep 2017, 18:22

Ben, justement, le on.paint contiendra le code nécessaire pour savoir quoi afficher selon des critères à déterminer (des variables qui seront à telle ou telle valeur, mis dans le on.charIn par exemple).
Je modifie et posterai tout a l'heure un code amélioré.

Au passage, l'invalidate à la fin du l'as mis en dehors de la fonction on.charIn et non à la fin - ça ne marchera pas...
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Suivante

Retourner vers Problèmes divers / Aide débutants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 71 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1488 utilisateurs:
>1462 invités
>21 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)