π
<-
Chat plein-écran
[^]

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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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.
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 51%
 
Posts: 12502
Images: 1080
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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)
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 51%
 
Posts: 12502
Images: 1080
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 68.1%
 
Posts: 3126
Images: 61
Joined: 04 Jul 2014, 14:40
Location: Valence 26
Gender: Male
Calculator(s):
Class: 1°S-SVT
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.
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 51%
 
Posts: 12502
Images: 1080
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Next

Return to Nspire-Lua

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Offre TI-Planet/Jarrety pour avoir la TI-83 Premium CE avec son chargeur pour 79,79€ port inclus !
Offre TI-Planet/Jarrety pour avoir la TI-Nspire CX CAS à seulement 130€ TTC port inclus!
Jailbreake ta TI-Nspire avec Ndless et profite des meilleurs jeux et applications !
123
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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 
-
Stats.
396 utilisateurs:
>378 invités
>13 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
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)