Un 'gros' projet sur nSpire

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Répondre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Un 'gros' projet sur nSpire

Message par tyann » 04 mai 2014 12:15

Bonjour à tous
L'année dernière lors des grandes vacances, je me suis réservé quelques heures
par jour pour essayer de programmer un jeu de scrabble sur nSpire en lua.
Il ne s'agit pas de jouer contre la machine, cela est bien au-dessus de mes moyens intellectuels,
mais d'utiliser la calto comme un plateau de jeu* pour 2 personnes, aujourd'hui le programme est abouti, je
viens juste de corriger un bug cette semaine qui traînait depuis mais qui n'empêchait pas de jouer.

Le programme affiche le tableau de jeu, effectue les tirages, gère la saisie des mots sur le plateau
compte les points pour chaque mot joué en tenant compte des mots attachés, des lettres et mots compte double etc..., ainsi que des scrabbles.
et tiens à jour les scores.
On peut échanger des lettres, et les mots de 2,3 et 4 lettres autorisés ont été mémorisés et sont vérifiés par la machine
automatiquement.
Je pense que l'ergonomie est assez bonne, certes le plateau affiché en entier est peu un petit, mais cela reste lisible
on utilise la souris pour pointer la case ou l'on va entrer le mot (avec le clavier), on peut traficoter ses lettres pour
rechercher un mot.
Je n'ai jamais publié ce programme, car je me pose des questions sur les droits d'auteur par rapport au jeu original,
et je ne voudrais pas avoir des ennuis pour cela, qu'en pensez vous ?
Certains parmi vous ont-ils l'habitude de ce genre de chose ?

* Cette idée m'est venue lorsque l'on a acheté ce jeu pour la Ds de ma femme, et que l'on s'est aperçu que
l'on ne pouvait pas jouer l'un contre l'autre sur la console, depuis nous faisons quelques parties sur la Ti :)
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

Avatar de l’utilisateur
Marge
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4451
Inscription : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Un 'gros' projet sur nSpire

Message par Marge » 04 mai 2014 20:33

A mon humble avis, changer le nom devrait suffire pour éviter les problèmes.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

« Boris », c'est juste Maurice enrhumé.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann » 07 mai 2014 06:21

Bonjour
Merci du conseil Marge, mais je me pose toujours la question
les graphismes du jeux, les règles restent tout de même pompées sur
l'original, d'un autre côté je me dis que le jeu est distribué gratuitement sur une plate-forme
sur laquelle il ne risque pas d'être développé à des fins commerciales.
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2233
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Un 'gros' projet sur nSpire

Message par jxano » 07 mai 2014 16:38

Il y a eu au moins un clone de Scrabble qui s'appelait « La Clé ».

Je ne connais pas les possibilités de traitement de chaînes de la nSpire, mais pour constituer des listes de mots pour vérification (voire pour assistance du joueur), on trouve des fichiers-texte type ODS3 ou ODS4 sur le net assez facilement.
Programmeur abscons.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann » 07 mai 2014 17:01

Bonjour
on trouve des fichiers-texte type ODS3 ou ODS4 sur le net assez facilement.
Oui je me suis arrêté à 4 lettres car après le nombre de mots augmente fortement, je crois qu'il y a
plus de 6000 mots de 5 lettres et + de 15000 de 6 lettres.
Ceci dit avec un peu plus de 100 Mo de mémoire, ça pourrait passer, mais à priori lorsque les
classeurs de la npsire grossissent de trop elle rame sévère, et je crois que l'éditeur Lua a un
peu le même problème.
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2233
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Un 'gros' projet sur nSpire

Message par jxano » 07 mai 2014 17:28

Je me suis amusé à faire un générateur d'anagrammes avec ce genre de fichier il y a 5 ou 6 ans.

C'est la façon de construire la base de données permettant de rechercher les mots à partir d'un jeu de lettres qui est déterminante. Ma première idée serait de classer les lettres des mots dans l'ordre alphabétique et d'utiliser ces paquets de lettres comme accès sur les mots.

Il y a deux politiques : lire un fichier (bien préparé !) à chaque recherche ou fabriquer une base en mémoire vive, ce qui exige un certain temps de préparation quand on allume la machine avant de commencer une partie.

Qu'est-ce que LUA propose comme fonction de recherche sur les chaînes de caractères ?
Programmeur abscons.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann » 07 mai 2014 23:29

Salut Jxano
Les fonctions de traitement de chaînes de caractères en lua sont nombreuses et certaines
assez complexes, c'est peut-être un des langages le mieux fourni dans ce domaine.
Mais tes réflexions me semblent laisser penser que tu envisages de programmer la machine
pour qu'elle suggère des mots avec le tirage disponible, cela pourrai être une amélioration intéressante,
car après faire jouer la machine me semble en ce qui me concerne insurmontable :
il faudrait rechercher tous les mots possible avec le tirage, faisable, mais aussi avec les lettres sur le plateau,
dans les logiciels cela passe t-il par la force brute, test de toutes les combinaisons pour toutes les cases ?
puis sélectionner les emplacements possibles, puis les meilleurs coups en terme de points Ouha.
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

debrouxl
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 121
Inscription : 03 mars 2013 10:01

Re: Un 'gros' projet sur nSpire

Message par debrouxl » 08 mai 2014 13:49

Le Lua trafiqué des Nspire est incapable de lire (ou écrire) des fichiers externes, et la représentation mémoire n'est pas très efficace, quoiqu'elle soit bien meilleure que celle des PPL Prime jusqu'à maintenant. La base en mémoire (ou les éléments permettant de la créer à l'ouverture du programme, mais tant qu'à faire, autant déporter le maximum de calculs côté ordinateur) sera donc stockée dans le code source du programme.
La consommation mémoire, le temps de chargement et le temps de transfert limitent les possibilités du générateur de documents en ligne...

Avatar de l’utilisateur
Ythunder
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4042
Inscription : 09 août 2008 17:46
Localisation : 03

Re: Un 'gros' projet sur nSpire

Message par Ythunder » 08 mai 2014 13:52

En tout cas, c'est un "support" au jeu original, que je trouve extra : automatisation entre autre du comptage des points par exemple, c'est extra comme initiative.
Je suis CHARLIE
Tell me boy, do you have a room, in your heart, for the Computer boom...

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann » 08 mai 2014 16:26

Bonjour
c'est un "support" au jeu original, que je trouve extra
Merci ça fait plaisir :D
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2233
Inscription : 17 févr. 2008 00:34
Localisation : Paris 20ème

Re: Un 'gros' projet sur nSpire

Message par jxano » 08 mai 2014 17:23

Vérification de la validité du mot et comptage des points, dans un premier temps, c'est déjà pas mal.

Puisque la solution du fichier externe est impraticable, la solution d'inscrire les mots "en dur" dans le code est déjà un projet en soi : il s'agirait d'écrire une application produisant le code LUA qui constitue le dictionnaire, puisqu'évidemment, il est inenvisageable de taper tout cela "alla mano".

Je vois deux façons de construire un dico dans lequel la recherche est optimisée :

1/ L'arbre lexicographique où les choix pour la première lettre du mot à chercher forment les branches charpentières, ceux de la deuxième lettre les branches secondaires, etc., jusqu'à la rencontre, après la dernière lettre, d'un caractère spécial indiquant que le mot existe ;

2/ La liste la plus courte et complète possible des paquets de lettres rangées dans l'ordre alphabétique, chaque paquet donnant accès à toutes les anagrammes possibles. Cette dernière solution ouvre la voie à l'assistance au joueur (dont on peut reconnaître qu'il ne soit pas un "dictionnaire sur pattes") ou au jeu contre la machine.
Programmeur abscons.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann » 08 mai 2014 23:15

Bonsoir, salut Jxano
il est inenvisageable de taper tout cela "alla mano".
Non bien sûr, on peut copier la liste des mots sur internet puis la sauvegarder sous forme de fichier texte,
ensuite on fait un copier/coller depuis ce fichier texte vers l'éditeur lua.
Sous lua la liste des mots se présente sous la forme :
{ "mot1","mot2",etc...
sous le fichier texte on a :
mot1,mot2,etc...
Il faut ensuite se taper les "", je crois que j'avais réussi à automatiser la manoeuvre avec le chercher/remplacer.

Vérifier si un mot est autorisé et rechercher des mots à partir d'un tirage sont deux choses très différentes,
La seconde me semble bien pus compliquée, pour la première j'ai mémorisé les mots par nombres de lettres et
par ordre alphabétique et j'effectue une recherche à partir du premier jusqu'à trouver le mot ou jusqu'au dernier
avec comme arrière pensée de mettre un n° d'index pour chaque lettre si la recherche devenait trop longue.
Mais comme il n' y a en général que 3 ou 4 mots maxi, le résultat est instantané, mais je pourrai également testé l'infériorité du mot
recherché, cela abrégerai également la recherche.

Mémoriser les mots en rangeant les lettres par ordre alphabétique, j'y ai déjà pensé, mais cela implique de mémoriser
l'équivalence en mots possibles et consomme beaucoup de mémoire non ?

Ainsi on peut mémoriser AEPT comme base de mots existants, {APTE,PATE,PETA,TAPE} mais comment coder cela ?

EDIT:
en écrivant cela je me rends compte qu'il y a peut-être une piste à creuser,en effet les tables en lua acceptent des index numériques, mais
aussi des clé alphanumériques, ainsi je pourrai très bien coder :
mot4l={"aept","aett", etc...
aetp={"apte","pate","peta","tape"}
aett={"etat","tate","teta"}
il suffit de rechercher la chaîne dans mot4l, puis d'utiliser celle-ci comme clé, hum il faut que je fasse des essais pour voir un peu si on peut goupiller
cela :!:
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

Avatar de l’utilisateur
badaze
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6641
Inscription : 12 févr. 2007 19:36
Localisation : Pas très loin de Lyon
Contact :

Re: Un 'gros' projet sur nSpire

Message par badaze » 09 mai 2014 00:06

Quelles sont les fonctions de gestion de fichiers ?
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer :(
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.

tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 708
Inscription : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann » 09 mai 2014 08:52

Bonjour
Quelles sont les fonctions de gestion de fichiers ?
Aucune, le lua des nspire ne gère pas les fichiers.
Ti(s) 60, 62 Galaxy, 66, 67 Galaxy, 68, 74 Basical 80, 81, 82, 83+, 83 CE, 84+SE, 85, 86, 89, 89 titanium, 92, 95 Procalc, v200, nSpire cx
Hp(s) 41CX, 28S, 48g, 50g, 39gII, Prime, Casio(s) fx 602P, 702p, 4000P, 4500P, 8500g, PB-700, CG-20, Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, El 5120, 9200, 9600

Répondre

Revenir vers « Tous les Pockets »