π
<-

Pong en Lua

Pour TI-Nspire OS 3.0 ou ultérieur.

Pong en Lua

Unread postby 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: Select all
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: Select all
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
Last edited by Ti64CLi++ on 08 Sep 2017, 20:40, edited 1 time in total.
Image
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby 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.

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...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14840
Images: 1133
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Pong en Lua

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby 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)

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...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14840
Images: 1133
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Pong en Lua

Unread postby Ti64CLi++ » 08 Sep 2017, 20:40

Ah il faut obligatoirement l'appeller explicitement !!! Merci
Adriweb wrote: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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby 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
User avatar
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 32.5%
 
Posts: 3446
Images: 75
Joined: 04 Jul 2014, 14:40
Location: Clermont-Ferrand 63
Gender: Male
Calculator(s):
MyCalcs profile
Class: ENS Rennes
GitHub: Ti64CLi

Re: Pong en Lua

Unread postby Adriweb » 08 Sep 2017, 21:03

c'est une fonction (méthode, bref) comme les autres, donc oui, du peux :) player1:init() par exemple.

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...)
My calculator programs
Mes programmes pour calculatrices
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 79.9%
 
Posts: 14840
Images: 1133
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Next

Return to Nspire-Lua

Who is online

Users browsing this forum: ClaudeBot [spider] and 1 guest

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1353 utilisateurs:
>1302 invités
>43 membres
>8 robots
Record simultané (sur 6 mois):
7582 utilisateurs (le 25/06/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)