Posté le 04/12/2007 à 21:32 Membre depuis le 11/04/2007, 1076 messages
Tout d'abord, qu'est-ce que le go?
Un jeu de plateau, dans lequel deux joueurs posent tour à tour des pierres dans le but de créer des territoires, et de tuer ceux de l'autre.
Pour avoir un aperçu des règles: http://gobase.org/studying/rules/?id=0&ln=fr

Le jeu de go que je prépare est écrit en basic étendu (avec Xlib) et prend quasiment toute la Ram.
Il est plus rapide que les autres programmes de go écrits en basic, et présente déjà les fonctions suivantes:

- Gobans de 9x9 et de 13x13.
- Support des Ko.
- Détection des mouvements autorisés.
- Suppression des pierres mortes automatique.
- Sauvegarde et chargement de parties.
- Support du handicap.
- Score automatique.
- Prise en compte du Komi (réglé à 7.5 points).
- Prise en compte des Seki.
- Bot [30 Kyu ou plus^^].
- Affichage du numéro de la case jouée.
- Option "Reprendre" sur un tour, avec confirmation par l'adversaire.
- Option "Abandon".
- Option "Passer".
- Installation automatique.
- Test de l'installation de Xlib sans "plantage".


Fonctions devaient (normalement) être codées:

- Changement du système de sauvegarde des coups: plus rapide, et les données prennent moins de place.
- Reprise des coups, sur autant de tours que besoin.
- Possibilité de revoir une partie.


Fonctions éventuelles:

- Affichage des Hoshi.
- Support des fichiers SFG (standard des parties de go enregistrées).
- Convertisseur Ti => SFG.


Fonctions qui ne seront pas codées: (mais sentez-vous

- Support des parties avec cable.
- Goban 19x19.

Il sera prêt pour le Zcontest de l'an prochain!!!
Posté le 05/12/2007 à 16:10 Membre depuis le 01/12/2005, 413 messages
Waw! J'attends ca avec impatience wink

J'ai toujours voulu jouer au jeu de go sans jamais trouver d'adversaire ^^
Posté le 05/12/2007 à 18:45 Membre depuis le 11/04/2007, 1076 messages
Tu connais KGS?
C'est un jeu de Go en ligne avec plein de joueurs. C'est un truc énorme!
Tu devrais essayer d'y faire un compte.
Posté le 06/12/2007 à 18:06 Membre depuis le 06/02/2006, 349 messages
tiens j'avais fait un go un jour sur 89 en C qui détectait automatiquement les pions morts mais je l'ai perdu sad
Posté le 06/12/2007 à 19:03 Membre depuis le 11/04/2007, 1076 messages
Ça daille ça! T'avais fait quoi comme Goban?
Moi pour le coup je fais plein de sauvegardes^^

Les nouvelles fonctions codées:

- Décompte des points opérationnel pour le 13x13 (le 9x9 était déjà fait)
- Affichage des Hoshi.

Si j'ai encore de la place dans la Ram à la fin du projet, je le rendrai peut-être optionnel...

Maintenant, le 13x13 est pleinement jouable!! Et je vais pouvoir récupérer un peu de Ram pour coder d'autres fonctions...
Posté le 06/12/2007 à 19:09 Membre depuis le 06/02/2006, 349 messages
euh je sais plus si c'était un 13x13 ou 19x19...ça date déjà de quelques mois
l'affichage des Hoshi je l'avais fait mais pas le décompte des points

au fait si t'as besoin d'aide je pense pouvoir t'aider au moins pour le début smile
Posté le 06/12/2007 à 19:44 Membre depuis le 01/12/2005, 413 messages
Bouhouhou je m'apercois que je ne sais plus jouer.

Bon je m'y remettrais quand ton jeu sortira ^^
Posté le 07/12/2007 à 09:42 Membre depuis le 11/04/2007, 1076 messages
Merci pour ton aide Tama!
En fait , le jeu est presque fini... (mais comme j'ai mes exams, la version finale sortira pas avant longtemps)
Par contre, si tu t'y connais en assembleur, il y a une librairie en Basic que je voudrais convertir en assembleur...
(C'est celle qui donne la composition des groupes)
Posté le 07/12/2007 à 17:28 Membre depuis le 09/07/2003, 21783 messages
Tu le fais comment le bot ?
Posté le 08/12/2007 à 13:20 Membre depuis le 06/02/2006, 349 messages
euh connaitre de l'assembleur....très vite fait...mais je peux toujours essayer ^^'
Posté le 08/12/2007 à 19:19 Membre depuis le 11/04/2007, 1076 messages
Bon, je te passe la librairie alors!

Voila, alors pour les explications, je te passe deux versions: la normale, c'est à dire celle que j'utilise actuellement.
La lente, qui teste tous les membres d'un groupe mais qui ne s'arrête pas si le groupe vit. Dans la première, c'est optionnel (voire le commentaire dans la source).
La deuxième est plus simple à coder en assembleur, et meilleure si elle est assez rapide.

_________________
Fonctionnement:
A et B sont les coordonnées du curseur. A en X, B en Y.
[A] est la matrice de partie.
Pierre blanche <=> 0
Pierre noire <=> 1
Case vide <=> 2.
[E] est la matrice qui sert à vérifier qu'on ne teste pas deux fois la même pierre (uniquement pour le module Gogroupe)
On peut la remplacer en assembleur par une liste des pierres déjà testées (mais pas en basic, ce serait trop lent).
L1: Pile. Composition du groupe (bâtie par Gogroupe). L1 = {a de première pierre, b de première pierre, a2, b2, a3, b3, an, bn}
V : Variable de Vie. 0 si le groupe est mort, 1 si il vit.

L'algorithme:

Je mets 0 dans V.
Je prends la pierre où se situe le curseur.
Je la marque dans la matrice [E], et je la rentre dans la pile.

Tant qu'il y a un élément non traité dans la pile:
traiter l'élément suivant.
Si il y a des pierres non marquées et de même couleur autour: les rajouter dans la pile.
Si il y a une case vide à côté, mettre 1 dans V.
_________________

En fait, peut-importe l'algorithme tant qu'il marche, et que les bonnes variables sont transmises.
Les variables transmises à la librairie: [A], A, B, (W).
Les variables transmises de la librairie au programme: L1, V.
Les autres variables ne doivent pas être modifiées.

Sinon, quelqu'un c'est déjà servi de Basic2Asm? (c'est sur Ticalc.org)
Perso, j'arrive rien à en obtenir, mais bon y'a déjà une violation de mémoire au lancement...



Pour les bots, tu as déjà joué sur KGS?
Ben le mien, c'est IdioBot, c'est à dire qu'il joue aléatoirement... et surtout horriblement mal.

Je vous file aussi une béta (je sais pas si elle est correcte, j'ai pas testé. Actuellement, j'en suis à modifier le coeur du programme, donc voila tongue)

Fichier joint : GOGROUPE lent pr ASM.8XP
Fichier joint : GOGROUPE normal.8xp
Fichier joint : GO beta version.8xg
Posté le 08/12/2007 à 19:45 Membre depuis le 06/02/2006, 349 messages
bon je vois qu'on a utilisé le même principe pour tester si un groupe est mort.....j'aurais pu faire ça en C facilement mais là euh...ça va être un peu dur.....^^
Posté le 09/12/2007 à 09:35 Membre depuis le 11/04/2007, 1076 messages
Bah, c'est normal, c'est super chaud de faire des librairies en asm...
Sinon, qu'est-ce que vous pensez de la version béta? (juste en 9x9)
Quelqu'un a testé Basic2Asm? http://www.ticalc.org/archives/files/fileinfo/178/17882.html

Je viens de finir le système de fichier pour revoir les parties! (enfin pour le moment, on peut rien revoir, mais on pourra)
Et ça marche impec' pour revenir en arrière de n coups! C'est cool parce que ça va me libérer pas mal de Ram
Posté le 10/12/2007 à 22:18 Membre depuis le 06/02/2006, 349 messages
c'est cool smile

et pas mal du tout pour la béta même si j'ai complètement perdu la main lool
Posté le 15/12/2007 à 15:55 Membre depuis le 11/04/2007, 1076 messages
On peut utiliser BasicBuilder dans des programmes Xlib?
Posté le 16/12/2007 à 11:37 Membre depuis le 01/12/2005, 413 messages
Tu veux dire pour faire des APPS avec des progs utilisant XLib? Oui.
Posté le 16/12/2007 à 11:50 Membre depuis le 11/04/2007, 1076 messages
Waaaah!!! Ca va être génial ça!
Pour le coup ça va m'enlever des problèmes au niveau de la Ram et du nombre de petites librairies utilisées! happy
Posté le 10/01/2008 à 10:31 Membre depuis le 11/04/2007, 1076 messages
Une Béta 2 disponible!!

Maintenant, vous pourrez voir comment se comporte le jeu en 13x13 (je vous préviens, en fin de partie ça fait un peu compote^^). Soit dit en passant, si qqun a des idées de sprites pr éviter ça, c'est le moment ou jamais...

Je voulais faire cette Béta 2 avec BasicBuilder, mais ça marche pas fort... C'est extrêmement lent!! Est-ce que qqun sait pourquoi??

Béta 2: GO3V17.zip

Sous BasicBuilder...


Dans la Béta 2, le programme A sert à revoir les parties, mais il est pas encore fini, puisqu'on peut pas encore rejouer dans la partie...
Posté le 10/01/2008 à 18:22 Membre depuis le 01/12/2005, 413 messages
Sous Basicbuilder effectivement ca peux etre lent. Surtout pour les adaptations de XliB. Tu mets tes images dans le prog basicbuilder, ou a part? Essaie a part pour voir. Et je vais tester ton jeu ce soir.
Posté le 11/01/2008 à 10:40 Membre depuis le 11/04/2007, 1076 messages
A l'origine, j'ai mis l'image dedans, mais comme ça marchait pas, j'ai copié l'image à part. (sauf que l'image est toujours dedans...). Je vais essayer comme tu dis...
Posté le 11/01/2008 à 15:33 Membre depuis le 01/12/2005, 413 messages
Bon ton jeu, j'l'ai essaye.

J'ai mis une bonne demie heure a me rappeler toute les regles deja ^^
Mais ton jeu est bon. Les graphismes sont biens, juste ce qu'il faut, c'est clair etc. En gros, j'ai bien aime, et c'est un jeu que je garderais volontiers sur ma calc une fois termine.

Mais evidemment, c'est une version beta donc j'ai plein de remarques a te faire pour mieux avancer le jeu.
-le systeme pour rejouer est une bonne idee, mais on ne rejouera pas 30 coups en arriere, et apparemment il y a une liste qui retient tous les coups precedemment effectues, et qui empeche de terminer une partie 13*13 sans erreur de memoire (et j'avais toute la ram de libre), je te conseille donc de ne garder que 5 a 10 coups en memoire max, ca suffit largement.
-un goban 19*19 ce serait bien non? Je sais que tu ne peux le faire rentrer dans l'ecran en entier, sinon ce serait trop petit, mais tu peux utiliser la fonction de XliB qui dessine les maps (m'enfin cette remarque ci n'est pas la plus importante, y a d'autres priorites).
-le bot, horriblement nul. Tu dis n'utiliser qu'un simple placement aleatoire. Mais tu pourrais coder un bot par petite touche, pour qu'il soit legerement moins nul sans etre trop lourd et lent (deja, tu peux le faire faire des chaines, en gardant en memoire la direction de la chaine et le dernier pion place, ce doit etre simple a coder; ensuite j'ai d'autres idees si ca t'interesse)

Voila. J'ai peut etre oublie deux trois trucs, faudra que je verifie. Mais en tout cas, j'aime.
Posté le 11/01/2008 à 18:16 Membre depuis le 11/04/2007, 1076 messages
Pour le bot, va falloir que tu éclaircisse ta pensée, parce que j'ai pas compris.
En fait, pour la liste des coups, c'est pour pouvoir commenter les parties. (T'as regardé en fin de partie ce que donne le prgm A?? happy) J'avais estimé que ça marcherait si je pouvais utiliser Basic Builder.
Si je peux pas le faire, je vais bien m'arranger pour récupérer de la Ram en supprimant des fonctions. (Je pourrais limiter la liste des coups aux parties 9x9 au pire)
Enfin pr le moment je sais pas trop ce que je vais faire... Tu crois que c'est possible d'avoir une vitesse correcte ac BasicBuilder? (je repense au jeu de Bowling...)
Sinon, le Goban 19x19 c'est une bonne idée, mais je m'y connais pas du tout en maps. En fait, le problème c'est que le joueur n'aura pas de vision d'ensemble...
( http://www.ticalc.org/archives/files/fileinfo/321/32110.html Un jeu de Go en 19x19 sur un seul écran^^ Faut avoir de bons yeux!)
Posté le 11/01/2008 à 19:47 Membre depuis le 01/12/2005, 413 messages
Non en vue d'ensemble, mieux vaut laisser tomber. On se bousille les yeux, et apres pour determiner les pions morts etc, c'est impossible. Pour la vision d'ensemble, je suis d'accord, mais alors...

Je sais! Tu fais deux maps! La map de jeu (c'est pas complique tu verra avec XliB ca va (presque) tout seul, au pire tu t'aides de l'exemple et tu me demandes ce qui va pas) qui defile, et un ecran comme vu dans le programme que tu cites, que l'on obtiendrait avec une touche precise pour une vue d'ensemble.

Pour les commentaires, j'avais pas fait attention (meme si la presence d'un prog 'A' m'avait intrigue), je regarderais ca plus en detail.

Pour le bot, ce que tu fais, c'est:
1) Tu places un point aleatoirement, de preference sur un bord
2) tu enregistres les coor de ce point dans une liste
3) a chaque fois que le bot joue, il tente de connecter un pion au dernier pion place dans la direction opposee au mur
4) s'il ne peux pas, alors il va dans une direction laterale
5) S'il ne peux pas non plus, alors il tente avec un des pions precedents (enregistres dans la liste)
6) si aucun des pions enregistres ne conviennent, on reprend en

La liste des pions enregistres serait de 10 pions, pour qu'elle ne soit pas trop lourde, et donc la liste tournerait en permanence


Je vais t'expliquer avec un exemple.

-le bot place un pion sur le bord gauche
-J1 joue
-si l'intersection a droite du pion noir est occupe, on tente de placer un pion en haut ou en bas de ce pion
-si ca ne va pas, on prend les coordonnees du pion en arriere, et on reprend
Posté le 11/01/2008 à 20:03 Membre depuis le 11/04/2007, 1076 messages
Oui, le bot c'est une idée. Je sais pas encore si je vais le coder... L'ennui c'est que si on sait jouer, l'adversaire joue que des pierres mortes. Bon, actuellement, c'est à peu près ça, mais bon, c'est des probas. Je pense que c'est jouable, mais je préfèrerais faire le 19x19, ou d'autres fonctions...
Posté le 12/01/2008 à 19:54 Membre depuis le 01/12/2005, 413 messages
Oui fais le a la fin, quand tout le reste sera fini.

J'aime bien le prog 'A' pour revoir les parties. C'est bien quand on joue a deux.
Posté le 13/01/2008 à 12:16 Membre depuis le 11/04/2007, 1076 messages
Je crois que je vais me servir des fonctions FlashGordon de Xlib dans mon programme. Si j'archive les programmes occasionnels, ceux qui sont destinés à des gobans de tailles inutilisés pour la partie et l'image, ça devrait le faire pour le 13x13. Reste que pour le 19x19, la taille va être très limite...
Posté le 14/01/2008 à 19:11 Membre depuis le 11/04/2007, 1076 messages
Bon, j'étais très emballé pour le 19x19, mais finalement je vais commencer par faire une version sans. Je le coderai surement un jour, mais pour le moment, j'essaye de faire une version qui marche en 13x13.
En tout cas, j'ai amélioré pas mal de trucs, et je devrais faire une béta 3 dans pas longtemps...
Posté le 15/01/2008 à 13:02 Membre depuis le 01/12/2005, 413 messages
J'ai hate de voir ca.
Posté le 20/01/2008 à 17:30 Membre depuis le 11/04/2007, 1076 messages
Bon, finalement, la nouvelle béta va attendre un peu, parce que je suis en train de coder les menus graphiques...
Enfin, dans ce qui va changer, on trouve: les menus - graphiques, les menus^^ qui reviennent en haut quand on est en bas et inversement, les programmes archivés, la gestion du komi, la possibilité de revoir une partie, et puis aussi de finir une partie (j'ai testé, et si on fait pas trop le noob, enfin si on joue pour gagner, c'est pas possible de manquer de Ram. Les informations de parties stockées dans la liste Go devraient être allégées, mais une nouvelle liste est apparue.

Syfo, tu te sentirais le coder ton Cpu?? (Attention hein, faut pas que ça prenne trop de place...)
Si oui, je te file les infos pr que tu sois en mesure de le faire...
Posté le 21/01/2008 à 12:34 Membre depuis le 01/12/2005, 413 messages
Heuuu

C'est a dire que j'ai deja plein de retard sur mon propre jeu, et pis le boulot toussa...

Bon allez c'est pas vrai je bosse pas, alors oui, je veux bien. Mais je te previens, je risque d'aller lentement, j'espere que ca ne te derange pas. Et pour le poids, il risque d'etre lourd (du moins au final), mais en le divisant en sous parties archivees ca devrait aller. Mais en basic, faudrait le mettre que sur la map 9*9 (sinon ce serait trop lent), faudra voir. Ecoute, j'ai deja commence a y reflechir au moment ou je t'en causais, donc ca peux se faire.
Juste que tu me dises quelle est la bonne matrice.