π
<-
Chat plein-écran
[^]

Pong en Lua

Pour TI-Nspire OS 3.0 ou ultérieur.

Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 20:11

Bonsoir,
Je me remets au Lua et pour cela, je me suis dit que faire un pong pourrait etre un bonne entrainement. Pour l'instant, j'ai juste commence la gestion des raquettes, et j'ai deja un probleme, je poste donc le code avec l'espoir d'etre rapidement aide.
Voici mon code:
Code: Tout sélectionner
screen = platform.window
ww, wh = screen:width(), screen:height()

Pad = class()

function Pad:init(x,y) --rajouterai l pour la taille de la raquette plus tard
    self.y = y
    self.x = x
    self.score = 0
    --self.length = l
end

function Pad:move(dir)
    if self.y < wh - 41 and self.y > 1 then
        self.y = self.y + dir
    end
end

function Pad:paint(gc)
    gc:setColorRGB(255, 255, 255)
    gc:fillRect(self.x, self.y, 6, 40)
end

player1 = Pad(5, wh / 2 - 20)

function on.paint(gc)
    gc:setColorRGB(0, 0, 0)
    gc:fillRect(0, 0, ww, wh)
end

Et c'est la que je bloque maintenant, je sais que j'ai su faire mais trou noir.
Mon but serait maintenant d'afficher les raquettes et de les faire bouger.
Donc je me suis dis je rajoute du code pour gerer les touches up et down (pour l'instant on ne va gerer que la premiere raquette):
Code: Tout sélectionner
function on.arrowUp()
    player1.move(-2)
    screen:invalidate()
end

function on.arrowDown()
    player1.move(2)
    screen:invalidate()
end


Et bien sur ca ne rafraichit pas l'ecran et n'affiche pas les raquettes, et je ne peux pas les faire bouger.
Comment je fais pour reactualiser l'ecran, et appeller la fonction Pad:paint(gc), sans l'appeller explicitement? J'ajoute un Pad:invalidate() dans le Pad:move? Ca se fait?
Voila si quelqu'un pouvait m'aider je lui en serais reconnaissant :)
Merci d'avance
Dernière édition par Ti64CLi++ le 08 Sep 2017, 20:40, édité 1 fois.
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Adriweb » 08 Sep 2017, 20:14

Il y a très probablement erreur dans les events qui gèrent les fleches, en effet pour appeler une méthode (ici, la méthode Pad:move), il faut utiliser les ":" sur l'instance, et non pas "."
Donc player1.move(-2) devient player1:move(-2). Pour info, techniquement, les ":" ca passe l'instance en tant que premier argument implicite. C'est en fait exactement égal à player1.move(player1, -2)

Bref sinon pour le rafraîchissement ça devrait être bon.
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.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 20:18

ah ok, dans mon code il ne faut pas que j'utilise player1. pour les fonctions de la classe.
Merci Adriweb je test ca et je te dis :)
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 20:25

Ca ne marche toujours pas. Quand je lance le script, il m'affiche juste un fond noir voulu, mais pas de raquettes, meme quand j'appuie sur les fleches. Il faut que je rajoute un Pad:invalidate() dans la fonction Pad:move() peut etre non?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Adriweb » 08 Sep 2017, 20:35

Non, invalidate c'est une methode de platform.window :P

1) tu as une faute dans le Pad:paint, c'est "gc:fillRect(self.x, self.y, 6, 40)" que tu as voulu mettre.
2) Ca ne s'affichait pas parce que tu n'appelle jamais le :paint(gc) de Pad. Donc bref, par exemple, player1:paint(gc) à la fin de ton on.paint(gc).

du coup la ça fonctionne (y compris les fleches)
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.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 20:40

Ah il faut obligatoirement l'appeller explicitement !!! Merci
Adriweb a écrit:1) tu as une faute dans le Pad:paint, c'est "gc:fillRect(self.x, self.y, 6, 40)" que tu as voulu mettre.

Ah oui en effet je corrige.

Je retest tout ca et je te redit
Merci encore
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 20:43

Ok, alors le deplacement marche a peu pres comme il faut, sauf que si je descend tout en bas, il se bloque, je ne peux plus le remonter :(
Pareil quand je vais tout en haut :(
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 20:50

Ok alors j'ai resolu le probleme, il suffit de modifier la ligne if self.y < wh - 41 and self.y > 1 then en if (dir > 0 and self.y < wh - 41) or (dir < 0 and self.y > 1) then
Merci Adriweb
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Ti64CLi++ » 08 Sep 2017, 21:02

Et est-il possible de rappeller la fonction Pad:init() dans une autre fonction du genre Pad:addPoint() pour remettre les variables a leur valeur de depart ou alors il faut que je fasses ca manuellement avec des self.x = 0 etc?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Message non lude Adriweb » 08 Sep 2017, 21:03

c'est une fonction (méthode, bref) comme les autres, donc oui, du peux :) player1:init() par exemple.
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.1%
 
Messages: 14606
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Suivante

Retourner vers Nspire-Lua

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 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.
1052 utilisateurs:
>1039 invités
>8 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)