J'ai testé le Popup. j'espère que tu as eu mes SMS.
Ton sendstr est pas aussi top parceque tu recopies 1 par 1 les caractères sans tenir compte des char spéciaux comme 2,9,13 qui modifient soit :
-la position du curseur et de la sélection char(2)
-le retour à la ligne char(13)
-le décalge à droite char(9)
Pour la boîte de dialogue en fait je voulais qu'elle prenne tout l'écran comme le Catalog ; comme ça pas besoin de la redimensionner en fonction de la longueur du texte.
La recherche en 'case sensitive' sur Ti c'est pas top. Tu obliges à jongler entre Majuscule et Miniscule à chaque fois.
Par contre lorsqu'on fait 'ESC' ou aucun choix ; taches de toujours retourner le résultat sous le même format.
En gros :
- Choix effectué : { NumList, NumChoix, StrChoix }
- ESC ou aucun choix { 0, 0, "" }
Laisse tomber le sendstr. Celui de S. Stearley est déjà top et fait 129o. je voit pas comment on pourrait faire mieux en C!
C'est plus utile mais pour savoir la longueur en pixel dans un font précis d'un STRING c'est 'DrawStrWidth' dans la Doc.
Il faut que tu Clip le rectangle d'affichage du texte pour eviter qu'il déborde de la boîte de la boîte de dialogue.
ça te dirait de voir comment utiliser un nom de DATA à la place d'une liste contenant des nom de Liste.
La structure d'un data est assez simple : Cherche sur google : 'TI developer Guide' à la page 150 y a la structure du DATA.
On va faire simple :
-y a pas de formule dans nos DATA sinon Goto bad_end
-y a que des Listes et les titres des Listes à récupérer
Regarde ce petit code en basic avec vertel pour extraire les listes d'un DATA :
C'est facilement adaptable en C
readdata(v)
Prgm
@ #DATA //commentaire : v est le nom d'un DATA
Local a,b,c,m,n,i,j,s
getFold()->f
@ //lit les 4 1er bit (0 à 3) de la variable de type DATA et retourne le résultat sous forme de liste dans 'a'
main\vertel("read",v,0,4,"","retr","a")
@ // calcul la taille du DATA dans 'b'
256*a[1]+a[2]+2->b
@ //Largeur des celulles de l'éditeur de MATRIX/DATA/LIST
a[3]->c
@ // Nombre de Listes dans le DATA
a[4]->m
@// byte numéro 4 : indique le numéro d'index de la 1ère liste dans le DATA : en l'occurence 1
4->i
@ // Pour chaque liste j du DATA
For j,1,m
@ // juste après le numéro de la colonne se trouve les 2 bits pour la taille de la liste j
main\vertel("read",v,i+1,2,"","retr","a")
@ //calcul de la taille de la liste j
256*a[1]+a[2]+2->s
@ // Création de la Var 'n'de taille s pour stocker la liste j
@ // Lecture des bytes de la liste j après les octets de taille
@ // Copie dans la var 'n'des bytes lus et ajout du LIST_TAG=217
main\vertel("make","n",s,"","read",v,i+3,s-2,"","retr","","writ","n",2,{"#",217})
à // affichage de la liste extraite
ClrIO
Disp "LIST n° "&string(j)&"/"&string(m),"SIZE = "&string(s)
Pause string(n)
@Passage au byte du numéro de la liste suivante dans le DATA. Ce byte vaut successivement 1,2,3,...,m
i+s+1->i
EndFor
EndPrgm
A part ça, beau boulot ! Reste les optimisationsde code .
------------------------------------------------
Tu dis que y a trop de clipping dans SCRABBLE : je suis d'accord; en fait j'ai fait les boîtes de dialogue comme un cochon vu que j'ai pas vraiement regarder du côté des fonctions pour faire correctement des fenêtres.
Sinon pour le comptage des points, c'est correcte t'oqp pas de ça . tout le jeu fonctionne impécablement.
MODE pour changer les règle en cours de Jeu.
Faut plutôt travailler les routines d'affichage graphiques. Si tu veux on peut faire de jolies pions et mettre en niveau de gris.
Dans le code tu trouveras vite fait tout ce qui est affichage commence par 'show_'
A part le clipping tu trouves comment l'interface , Le scrolling, La navigation et les touches ?