ūüźČ Encore du Forth...

 

 

Algorithme de Bresenham

 

Il y a un fait qui est ind√©niable : je pense ne pas trop mal me d√©brouiller en informatique au sens large, mais je reste malgr√© tout un pi√®tre programmeur.

 

J'avais pourtant souhaité passer un peu moins de temps à étudier le sujet, mais malgré tout je m'y suis replongé à corps perdu, et c'est une nouvelle fois retombé sur le langage Forth, malgré son apparente austérité, c'est celui qui me semble le plus naturel. Pour certaines opérations de base (calculs, comparaisons), cela fonctionne bien, mais pour d'autres, dès lors qu'il s'agit de manipulations avancées de flux de texte par exemple, cela devient vite ardu.

 

J'avais commencé l'année dernière le portage de l'algorithme de Bresenham en UF Forth, qui permet de calculer le tracé de lignes à partir de deux coordonnées, et de les affichers pixel par pixel.

C'était toujours imparfait, certains chemins ne s'affichant pas correctement.

 

Presque un an après avoir séché dessus, je m'y suis remis et j'ai enfin réussi à un mettre un point final, même si le code devra encore être amélioré pour le rendre plus propre.

 

 

Copie d'écran

 

"Forth is Fun"

 

Dans la foulée, j'ai pu réutiliser le même code pour que cela fonctionne également dans ueforth (version linux, puisqu'il existe déjà en mode web en réutilisant des fonctions javascript)

 

Cela ne r√©volutionnera pas l'informatique, mais √† un niveau personnel c'est satisfaisant de revenir aux fondamentaux : afficher du texte, g√©rer l'ascii, allumer des points sur l'√©cran...

 

 

Le jeu du cochon en UF Forth

 

J'ai √©galement commenc√© la programmation d'un jeu en UF Forth. C'est une reprise du jeu du cochon, les r√®gles sont simples, chaque joueur lance un d√© √† tour de r√īle, et addition un score. Il continuera ainsi jusqu'√† ce qu'il d√©cide de s'arr√™ter ou qu'il fasse 1. Dans ce dernier cas, le score interm√©diaire sera remis √† 0. S'il s'est arr√™t√© √† temps, ce score sera ajout√© √† son total. Le premier √† obtenir 100 gagne la partie.

 

Cela n'est pas encore entièrement finalisé, mais cela fonctionne dans les grandes lignes.

 

Copie d'écran

 

Il tourne également sur Nintendo DS, via l'émulateur UXN.

 

Le code se trouve sur Forth is Fun, dont le d√©p√īt est indiqu√© en lien un peu plus haut.

 

 

Thinking Forth, de Leo Brodie

 

En parlant de code, je suis en train de lire avec int√©r√™t l'ouvrage ¬ę Thinking Forth ¬Ľ, de Leo Brodie, qui a √©galement r√©alis√© l'excellent ¬ę Starting Forth ¬Ľ qui est une r√©f√©rence pour les d√©butants.

 

Il m'a bien fait prendre conscience que le code de mon jeu décrit plus haut est absolument l'inverse de ce qu'il faut faire pour réaliser un codage correct, dans l'esprit Forth. Aussi je vais m'atteler à améliorer ce point en repartant de zéro et en scindant mieux les divers éléments.

 

Thinking Forth

 

Il explique √©galement, et je viens seulement d'en prendre conscience, que l'√©dition traditionnelle des divers Forth, dans des blocs (qui correspondaient √† un seul √©cran), facilitait la r√©alisation de d√©finition de mots (appel√©s ¬ę procedure ¬Ľ ou ¬ę function ¬Ľ dans d'autres langages), et cela obligait √† les structurer de mani√®re concise puisque chaque mot devait tenir sur un seul √©cran. Ensuite, ils pouvaient interagir entre eux en s'appelant d'un √©cran √† l'autre.

 

UF Forth permet √©galement ce mode de travail. Un exemple concret en est donn√© dans le dossier uf_forth de ¬ę Forth is Fun ¬Ľ.

 

 

Doc Forth sur ce gemspace

 

 

#informatique

#blog

 

 

‚Ü©ÔłŹ Index Gemlog

ūüŹ† Index Accueil