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
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6186
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Un 'gros' projet sur nSpire

Message par Marge »

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

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2362
Enregistré le : 16 févr. 2008 23:34
Localisation : Paris 20ème

Re: Un 'gros' projet sur nSpire

Message par jxano »

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.
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2362
Enregistré le : 16 févr. 2008 23:34
Localisation : Paris 20ème

Re: Un 'gros' projet sur nSpire

Message par jxano »

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.
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
debrouxl
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 125
Enregistré le : 03 mars 2013 09:01

Re: Un 'gros' projet sur nSpire

Message par debrouxl »

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 du membre
Ythunder
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 4559
Enregistré le : 09 août 2008 17:46
Localisation : 03

Re: Un 'gros' projet sur nSpire

Message par Ythunder »

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.
Quand je lis ça "oui des passionnées qui modifie des machines pour en faire des moutons a 5 pattes qui n'ont plus rien a voir avec la machine d'origine afin de faire la video choc sur youtube..."

Ca me fait rire. Perso, je n'ai ni chaine youtube sur les machines et je n'ai aucun mouton à 5 pattes qui n'a pàlus rien a voir avec des machines d'origine. Mais à qui s'adressait on ?
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
jxano
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2362
Enregistré le : 16 févr. 2008 23:34
Localisation : Paris 20ème

Re: Un 'gros' projet sur nSpire

Message par jxano »

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.
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Avatar du membre
badaze
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 8402
Enregistré le : 12 févr. 2007 18:36
Localisation : Pas très loin de Lyon
Contact :

Re: Un 'gros' projet sur nSpire

Message par badaze »

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.
Avatar du membre
tyann
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 846
Enregistré le : 06 oct. 2012 14:37

Re: Un 'gros' projet sur nSpire

Message par tyann »

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) 35s, 41CX, 28S, 48g, 50g, 39gII, Prime G1 et G2,
Casio(s) fx 602P, 702P, 4000P, 4500P, 6000G, 6900G, 7700G, 8500g, PB-700, CG-20, Graph 95 sd
Psion(s)II LZ64, siena, s3a, s3mx, s5mx.
Sharp(s) pc-1350, 1403, 1500A, E500, El 5120, 9200, 9600
Canon X-07
Répondre

Retourner vers « Tous les Pockets »