π
<-

Rpg en lua

Pour TI-Nspire OS 3.0 ou ultérieur.

Rpg en lua

Unread postby bidabiere » 21 Apr 2014, 10:22

Salut salut , je cherche a réaliser un RPG en lua , j'avais pour idée un RPG qui ressemblerait au principe du livre dont vous êtes le heros , et c'est ce que j'ai chercher a faire ici , voici mon code ,
Code: Select all
platform.apilevel = '2.0'
function initiallisation()   
personnage = 0
pd = 0
a=0
classe = text
w=0 --moment dans l'aventure
c=0 --deuxieme moment dans l'aventure
end
function Accueil()
        function on.paint(gc)
        if personnage == 0 then
        gc:setColorRGB(0,0,0)
      gc:setFont("serif","b",18)
      gc:drawString("Selection de personnage :",40,200)
      gc:setFont("serif","b",14)
      gc:drawString("A-Humain : Paladin de Palouf",60,250)
      gc:drawString("Z-Nain : Berzerk",60,270)
      gc:drawString("E-Murloc : Mage bleu",60,290)
      gc:drawString("R-Creep : Assassin de Chansus",60,310)
        end
        end
end
------------------------------------------------
function Choixheros()
    function on.charIn(char)
        if char=="a" then         
            var.store("personnage",1)
            var.store("pd",2)--point de vie
            var.store("classe","Paladin")
            var.store("a",1)--variable pour le prochain event
                function on.paint(gc)
                gc:setFont("serif","b",18)
                gc:drawString("Brace yourself Adventurers your story begin here",120,120)
                gc:drawString("Vous allez désormais rentrer dans le monde de Tavern , Ale and Quest",120,170)
                gc:drawString("Vous avez choisi le Paladin de Palouf",120,200)
                gc:drawString("Votre héros va commencez cette partie avec 2 points de destin",120,230)
                gc:drawString("Que palouf vous accompagne",120,260)
                gc:drawString("Press P to continue",120,290)
                end
        platform.window:invalidate()            -- refresh
        end
    ---------------   
        if char=="z" then
            var.store("personnage",2)
            var.store("pd",3)--point de vie
            var.store("classe","Berzerk")
            var.store("a",1)--variable pour le prochain event
                function on.paint(gc)
                gc:setFont("serif","b",18)
                gc:drawString("Brace yourself Adventurers your story begin here",120,120)
                gc:drawString("Vous allez désormais rentrer dans le monde de Tavern , Ale and Quest",120,170)
                gc:drawString("Vous avez choisi le Berzerk Alcoolique",120,200)
                gc:drawString("Votre héros va commencez cette partie avec 3 points de destin",120,230)
                gc:drawString("Que votre rancune reste éternel",120,260)
                gc:drawString("Press P to continue",120,290)
                end
        platform.window:invalidate()            -- refresh
        end
    -----------------   
        if char=="e" then
            var.store("personnage",3)-- même principe que classe
            var.store("pd",1)--point de vie
            var.store("classe","Mage bleu")
            var.store("a",1)--variable pour le prochain event
                function on.paint(gc)
                gc:setFont("serif","b",18)
                gc:drawString("Brace yourself Adventurers your story begin here",120,120)
                gc:drawString("Vous allez désormais rentrer dans le monde de Tavern , Ale and Quest",120,170)
                gc:drawString("Vous avez choisi le Mage bleu presbyte",120,200)
                gc:drawString("Votre héros va commencez cette partie avec 1 points de destin",120,230)
                gc:drawString("AGNNNNNAGNANGNAGNA",120,260)
                gc:drawString("Press P to continue",120,290)
                end
        platform.window:invalidate()           -- refresh       
        end
   ----------------     
        if char=="r" then
            var.store("personnage",4) -- même principe que classe
            var.store("pd",10)--point de vie
            var.store("classe","Assassin de Chansus")
            var.store("a",1)--variable pour le prochain event
                function on.paint(gc)
                gc:setFont("serif","b",18)
                gc:drawString("Brace yourself Adventurers your story begin here",120,120)
                gc:drawString("Vous allez désormais rentrer dans le monde de Tavern , Ale and Quest",120,170)
                gc:drawString("Vous avez choisi l'Assassin de Chansus",120,200)
                gc:drawString("Votre héros va commencez cette partie avec 10 points de destin",120,230)
                gc:drawString("Que la chance vous accompagne...",120,260)
                gc:drawString("Press P to continue",120,290)
                end
        platform.window:invalidate()         -- refresh
        end
    end
end
---------------------------------------------------
function Eventadd()
    function on.charIn()
        if char=="p" then
        a=a+1
        var.store("a",a)
        end
     end
end       
----------------------------------------------------
function chronos()
    function on.timer()
       timer.start(1)
      timer.stop()
      platform.window:invalidate()
    end
end
----------------------------------------------------
----------------------------------------------------
function Quete1()
    function on.charIn(char)
        if char=="p" then         
                function on.paint(gc)
                gc:fillRect(40,40,840,550)
                gc:setColorRGB(255,255,255)
                gc:setFont("serif","b",26)
                gc:drawString("Tavern Ale and Quest, le reveil",75,160)
                gc:setFont("serif","b",19)
                gc:drawString("Vous vous réveillez dans une grotte et vous entrapercevez quelque-chose",75,260)
                gc:drawString("Votre instinct de survie vous préconise de vous levez et de vous ",75,290)
                gc:drawString("préparez a vous battre quand soudain ...",75,320)
                gc:drawString("Press P to continue",75,400)
                end
        platform.window:invalidate()
        end           
    end
end   
----------------------------------------------------
function Presentation1()
    function on.charIn(char)
        if char=="p" then         
                function on.paint(gc)
                gc:fillRect(40,40,840,550)
                gc:setColorRGB(255,255,255)
                gc:setFont("serif","b",26)
                gc:drawString("Le lama Swagé",75,160)
                gc:setFont("serif","b",19)
                gc:drawString("Un lama se dresse au milieu des rocher , il se prépare a vous attaquer",75,260)
                gc:drawString("Il est nettement mieux habiller que vous mais n'a pas l'air amical,",75,290)
                gc:drawString("Vous dégainez votre arme et ...",75,320)
                gc:drawString("Press P to continue",75,400)
                end
        platform.window:invalidate()
        end           
    end
end
----------------------------------------------------
function Combat1()
    function on.charIn(char)
        if char=="p" then         
                function on.paint(gc)
                gc:fillRect(40,40,840,550)
                gc:setColorRGB(255,255,255)
                gc:setFont("serif","b",26)
                gc:drawString("Le lama Swagé",75,160)
                gc:setFont("serif","b",19)
                gc:drawString("1/ Vous attaquez de front...",75,260)
                gc:drawString("2/ Vous lui jetez votre arme...",75,290)
                gc:drawString("3/ Vous partez en courant...",75,320)
                gc:drawString("Press 1/2/3 to continue",75,400)
                end
        platform.window:invalidate()
        end           
    end
end
----------------------------------------------------
function Victoire1()
    function on.charIn(char)
        if char=="1" or char=="2" then     
                function on.paint(gc)
                gc:fillRect(40,40,840,550)
                gc:setColorRGB(255,255,255)
                gc:setFont("serif","b",26)
                gc:drawString("Victoire",75,160)
                gc:setFont("serif","b",19)
                gc:drawString("Vous avez battut ce terrible adversaire",75,260)
                gc:drawString("Il a apparemment perdu l’équilibre , votre attaque n'a pas touche",75,290)
                gc:drawString("Vous ne savez pas si c'est la crise cardiaque ou la chute qui la achevé.",75,320)
                gc:drawString("Press P to continue",75,400)
                end
        platform.window:invalidate()
        end           
    end
end
----------------------------------------------------
function Quete2()
end
--------------------------------------------------------------------------------------------

    initiallisation()
    Accueil()
    Choixheros() -- Comment passer du Choixheros a la Quete1 ? Pour le moment je n'y arrive pas.
--    Quete1()
--------------------------------------------------------------------------------------------

Et mon problème le voici , je souhaite passer de l’événement Choixheros() a la Quete1() , pour le moment quand les quatre fonctions sont présente , je passe de l'Accueil() a La Quete1() sans passer par le Choixheros() , mon problème est que je ne peut plus avancer dans le code si je n'arrive pas a faire passer les fonctions les unes après les autres . Je requiert un peut d'aide 8-)
User avatar
bidabiere
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Level up: 60%
 
Posts: 2
Joined: 21 Apr 2014, 10:05
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS/isn

Re: Rpg en lua

Unread postby technolapin » 21 Apr 2014, 11:39

Heu... je comprend pas, tu veut faire quoi quand quelle condition se réalise?
Votez Kasane Teto 2017
User avatar
technolapin
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 97.8%
 
Posts: 514
Images: 25
Joined: 31 Dec 2012, 10:48
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Chui en vacance ducon

Re: Rpg en lua

Unread postby Levak » 21 Apr 2014, 12:07

Salut,

Petit conseil : tu ferais mieux de revoir complètement ton code afin de le violemment le factoriser.
Tu devrais partir sur une table qui représente ton jeu (les actions possibles etc.) sans parler d'implémentation Nspire Lua. Une autre partie serait alors responsable d'exploiter cette table et d'afficher l'état courant du jeu et les possibilités offertes.

Un exemple :
Code: Select all
game_states = {
  home=Level("Accueil", "Bienvenue courageux guerrier blabla", {1=hero_choice}),
  hero_choice=Level("Choix du Héros", "Plutôt hobbit ou hobbit", {1=hobbit, 2=hobbit2}),
  hobbit=Level("Hobbit", "En avant vers l'aventure !", { ... }),
  hobbit2=Level("Hobbit plus fort", "En avant vers l'aventure !", { ... }),
  ...
}


Ensuite, conçois le code qui exploite cette structure de données : tu verras, tu perdras peux-être 3h au début mais tu gagneras tellement de temps par la suite que le temps perdu sera devenu insignifiant.

Edit : je me demande si cette question n'avait pas déjà été posée et la même réponse proposée.
Responsable design/graphique de TI-Planet
I do not get mad at people, I just want them to learn the way I learnt.
ImageTNOC [topic][DL]
nClock [topic][DL]
HideManager [topic][DL]
ZLock [topic][DL]
Theme Editor [topic][DL]
Mes programmes
User avatar
LevakAdmin
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 98.9%
 
Posts: 6414
Images: 22
Joined: 27 Nov 2008, 00:00
Location: 0x1AACC355
Gender: Male
Calculator(s):
MyCalcs profile
Class: BAC+5: Epita (ING3)

Re: Rpg en lua

Unread postby technolapin » 21 Apr 2014, 12:08

Oui effectivement, ça serait mieux.
Votez Kasane Teto 2017
User avatar
technolapin
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 97.8%
 
Posts: 514
Images: 25
Joined: 31 Dec 2012, 10:48
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Chui en vacance ducon

Re: Rpg en lua

Unread postby bidabiere » 21 Apr 2014, 12:12

J'aimerais une condition qui me permet de passer de fonction en fonction , exemple de passer du choix de personnages a la quete 1 et ainsi de suite , pour le moment sa fait un gros packet et sa charge toutes les fonctions ,je cherche a les dissociers et a les activé au fur et a mesure , comme ceci :
initiallisation()
Accueil()
Choixheros() -- c'est fonctions mettent en place le jeu en lui même
condition -- une condition activer peut être par l'utilisateur ? j'ai déjà penser a une fonction on.charIn(char) avec char=="p" mais sans succes , une idée ?
Quete1
Condition
Presentation1
...

PS, je vais voir sa Levak merci :)
User avatar
bidabiere
Niveau 1: MD (Membre Débutant)
Niveau 1: MD (Membre Débutant)
Level up: 60%
 
Posts: 2
Joined: 21 Apr 2014, 10:05
Gender: Not specified
Calculator(s):
MyCalcs profile
Class: TS/isn

Re: Rpg en lua

Unread postby technolapin » 21 Apr 2014, 12:29

Ben, tu pourrait utiliser les classes. (tu trouve les tutos ici http://www.compasstech.com.au/TNS_Authoring/Scripting/ si tu connait pas.
Votez Kasane Teto 2017
User avatar
technolapin
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 97.8%
 
Posts: 514
Images: 25
Joined: 31 Dec 2012, 10:48
Location: Chez moi
Gender: Male
Calculator(s):
MyCalcs profile
Class: Chui en vacance ducon

Re: Rpg en lua

Unread postby AnToX98 » 27 Apr 2014, 09:10

Ce que je trouve surtout bizarre c'est d'avoir mis plusieurs fonctions on.paint mais bon peut-être que je me trompe :p
User avatar
AnToX98Premium
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 75.5%
 
Posts: 1022
Images: 15
Joined: 19 May 2013, 16:54
Location: Paris, France
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ere S

Re: Rpg en lua

Unread postby Adriweb » 27 Apr 2014, 15:16

AnToX98 wrote:Ce que je trouve surtout bizarre c'est d'avoir mis plusieurs fonctions on.paint mais bon peut-être que je me trompe :p

Je ne vois pas de quoi tu parles.

Les classes représentant quelque chose qui sera dessiné à l'écran ont besoin de décrire comment il sera "painté", donc pour chacune de ces classes, une fonction xxxx:paint(gc) sera à définir.

Et le (seul et unique) on.paint(gc) appellera le(s) paint(gc) qu'il faut.

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: 80%
 
Posts: 14843
Images: 1133
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Rpg en lua

Unread postby pierrotdu18 » 27 Apr 2014, 15:21

Oui mais AnToX98 a raison Adriweb, il y a plusieurs function on.paint(gc)
Bonjour
User avatar
pierrotdu18Premium
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Level up: 40.5%
 
Posts: 975
Joined: 07 Nov 2013, 20:18
Location: Paris V
Gender: Male
Calculator(s):
MyCalcs profile
Class: MP* Lycée Henri IV

Re: Rpg en lua

Unread postby Adriweb » 27 Apr 2014, 15:25

Ah mais, je parlais des tutoriaux de Steve Arnold, moi...

Avoir a redéfinir des fonctions pour les faire varier selon le contexte est très généralement une mauvaise idée, il y a moyen de faire bien mieux ;)

(cf le passage par des classes, 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: 80%
 
Posts: 14843
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: No registered users and 3 guests

-
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.
1339 utilisateurs:
>1321 invités
>11 membres
>7 robots
Record simultané (sur 6 mois):
29271 utilisateurs (le 11/07/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)