GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

Commit ad4fb30a authored by Bruno Coudoin's avatar Bruno Coudoin

Added file headers assigning correct copyright to Frederic.

	Added board description from wikipedia.
parent 340183e2
2005-12-18 Bruno coudoin <bruno.coudoin@free.fr>
Added file headers assigning correct copyright to Frederic.
Added board description from wikipedia.
* boards/awele.xml.in:
* src/boards/awele.c: (awele_create_item), (updateNbBeans):
* src/boards/awele.h:
* src/boards/awele_alphaBeta.c:
* src/boards/awele_utils.c: (move):
* src/boards/awele_utils.h:
2005-12-18 Yves Combe <yves@ycombe.net>
awele board by Frederic Mazzarol. First version. Great!
......
......@@ -8,11 +8,17 @@
icon="boardicons/awele.png"
author="Frédéric Mazzarol"
boarddir="awele">
<_title>awele</_title>
<_description> TODO </_description>
<_prerequisite> TODO </_prerequisite>
<_goal> TODO </_goal>
<_manual> TODO
<_title>Oware</_title>
<_description>Play the Oware strategy game against Tux</_description>
<_prerequisite></_prerequisite>
<_goal>The object of the game is to capture more seeds than one's opponent. Since the game has only 48 seeds, capturing 25 is sufficient to accomplish this. Since there are an even number of seeds, it is possible for the game to end in a draw, where each player has captured 24.
The game is over when one player has captured 25 or more stones, or both players have taken 24 stones each (draw). If both players agree that the game has been reduced to an endless cycle, each player captures the stones on their side of the board.
</_goal>
<_manual>At the beginning of the game four seeds are placed in each house.
Players take turns moving the seeds. On a turn, a player chooses one of the six houses under their control. The player removes all seeds from this house, and distributes them, dropping one in each house counter-clockwise from this house, in a process called sowing. Seeds are not distributed into the end scoring houses, nor into the house drawn from. That is, the starting house is left empty; if it contained 12 seeds, it is skipped, and the twelfth seed is placed in the next house.
After a turn, if the last seed was placed into an opponent's house that brought its total to two or three, all the seeds in that house are captured and placed in the player's scoring house (or set aside if the board has no scoring houses). If the previous-to-last seed also brought an opponent's house to two or three, these are captured as well, and so on. However, if a move would capture all an opponent's seeds, the capture is forfeited, and the seeds are instead left on the board, since this would prevent the opponent from continuing the game.
The proscription against capturing all an opponent's seeds is related to a more general idea, that one ought to make a move that allows the opponent to continue playing. If an opponent's houses are all empty, the current player must make a move that gives the opponent seeds. If no such move is possible, the current player captures all seeds in his/her own territory, ending the game.
(Source Wikipedia &lt;http://en.wikipedia.org/wiki/Oware&gt;)
</_manual>
</Board>
</GCompris>
......
/*
* gcompris - awele.c Copyright (C) 2003 Bruno Coudoin This program is
* gcompris - awele.c Copyright (C) 2005 Frederic Mazzarol This program is
* free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any
......@@ -256,7 +256,7 @@ awele_create_item (GnomeCanvasGroup * parent)
}
/*
* Boucle pour créer et positionner les boutons qui serviront
* Boucle pour creer et positionner les boutons qui serviront
* a selectionner la case a jouer
*/
for (i = 0; i < NBHOLE / 2; i++)
......@@ -272,7 +272,7 @@ awele_create_item (GnomeCanvasGroup * parent)
gcompris_load_pixmap (xpmFileClic);
/*
* Ajustement de l'ordonnée x, pour positionner le bouton sur la barre de boutons.
* Ajustement de l'ordonnee x, pour positionner le bouton sur la barre de boutons.
*/
switch (i)
{
......@@ -301,8 +301,8 @@ awele_create_item (GnomeCanvasGroup * parent)
* et sauvegarde dans tableau button de type Gnome Canvas Item
* pour attacher les pointeurs de la fonction de rappel buttonClick
* qui servira a detecter quel est l'evenement souris, et en fonction
* declencher la procedure associée. Passage en argument a cette fonction
* du numero de case séléctionné par tableau chaine
* declencher la procedure associee. Passage en argument a cette fonction
* du numero de case selectionne par tableau chaine
*/
graphsElt->button[i] = gnome_canvas_item_new (boardRootItem,
gnome_canvas_pixbuf_get_type
......@@ -345,7 +345,7 @@ awele_create_item (GnomeCanvasGroup * parent)
}
/**
* Affichage initial du nombre de graine capturées par chaque joueur.
* Affichage initial du nombre de graine capturees par chaque joueur.
* Sauvegarde des items d'affichage dans Captures[i], pour mise a jour
* pdt la partie.
*/
......@@ -393,7 +393,7 @@ awele_create_item (GnomeCanvasGroup * parent)
graphsElt->msg = gnome_canvas_item_new (boardRootItem,
gnome_canvas_text_get_type (),
"text", "Sélectionne une case à jouer",
"text", "Selectionne une case a jouer",
"font", "12x24",
"size", 20000,
"x", (double) 400,
......@@ -463,9 +463,9 @@ game_won ()
/**
* Fonction effectuant l'initialisation des graines sur le plateau
* Cette fonction est appelée a chaque debut de partie
* Cette fonction est appelee a chaque debut de partie
* @param data un pointeur de type void, pour passer en argument a la fonction\n
* les éléments graphiques à modifier.
* les elements graphiques a modifier.
* @return void
*/
void
......@@ -510,14 +510,14 @@ initBoardGraphics (GRAPHICS_ELT * graphsElt)
}
/**
* Fonction effectuant la procedure associé a un clic sur pixmap
* Cette fonction est appelée quand un clic sur un bouton est effectué.\n
* Fonction effectuant la procedure associe a un clic sur pixmap
* Cette fonction est appelee quand un clic sur un bouton est effectue.\n
* Selon l'event->Type declenchement de procedure differentes, modification de l'aspect des boutons\n
* et declenchement d'un mouvement choisi par le joueur, puis lancement du coup de la machine.
* @param widget pointeur sur le widget ayant déclenché l'evenement eventDelete
* @param widget pointeur sur le widget ayant declenche l'evenement eventDelete
* @param event pointeur sur le type d'evenement
* @param data un pointeur de type void, pour passer en argument a la fonction\n
* les éléments graphiques à modifier.
* les elements graphiques a modifier.
* @return un entier
*/
gint
......@@ -618,14 +618,14 @@ buttonClick (GtkWidget * item, GdkEvent * event, gpointer data)
}
/**
* Fonction de gestion des graines dessinées sur le plateau
* Cette fonction est appelée apres chaque mouvement, \n
* pour remettre a jour le nombre de graines dessinées sur le plateau, \n
* et diminuer la zone d'allocation ou les pixmap des graines sont stockées.
* Fonction de gestion des graines dessinees sur le plateau
* Cette fonction est appelee apres chaque mouvement, \n
* pour remettre a jour le nombre de graines dessinees sur le plateau, \n
* et diminuer la zone d'allocation ou les pixmap des graines sont stockees.
* @param nbBeansHole[NBHOLE] Tableau de pointeur sur les gnomeCanvasItem\n
* affichant le nombre de graine par case
* @param rootGroup Pointeur sur le groupe contenant tous les items insérés dans le canevas
* @param ptLink pointeur sur zone memoire ou sont stockées toutes les images des graines du plateau.
* @param rootGroup Pointeur sur le groupe contenant tous les items inseres dans le canevas
* @param ptLink pointeur sur zone memoire ou sont stockees toutes les images des graines du plateau.
* @param alpha entier pour differencier une mise a jour du plateau ou le lancement d'une nouvelle partie.
* @return Renvoi du pointeur sur la zone memoire apres redimension (n'a probablement pas changé d'adresse).
*/
......@@ -712,7 +712,7 @@ updateNbBeans (GnomeCanvasItem * nbBeansHole[NBHOLE],
}
/**
* Renvoi du pointeur sur la zone memoire retaillée (n'a probablement pas changé d'adresse).
* Renvoi du pointeur sur la zone memoire retaillee (n'a probablement pas change d'adresse).
*/
return ptBeansHoleLink;
}
......@@ -720,7 +720,7 @@ updateNbBeans (GnomeCanvasItem * nbBeansHole[NBHOLE],
/**
* Fonction de gestion de l'affichage des scores
* Cette fonction est appelée apres chaque mouvement, \n
* Cette fonction est appelee apres chaque mouvement, \n
* pour remettre a jour le score des joueurs
* @param Captures[2] pointeur sur les gnomeCanvasItem d'affichage des scores
*/
......@@ -740,14 +740,14 @@ updateCapturedBeans (GnomeCanvasItem * Captures[2])
/**
* Fonction effectuant la procedure associé a un clic sur le bouton nouvelle Partie
* Cette fonction est appelée quand un clic sur le bouton nouvelle Partie est effectué.\n
* Fonction effectuant la procedure associe a un clic sur le bouton nouvelle Partie
* Cette fonction est appelee quand un clic sur le bouton nouvelle Partie est effectue.\n
* Selon l'event->Type declenchement de procedure differentes, modification de l'aspect des boutons\n
* et declenchement de la reinitialisation du plateau de jeu.
* @param widget pointeur sur le widget ayant déclenché l'evenement eventDelete
* @param widget pointeur sur le widget ayant declenche l'evenement eventDelete
* @param event pointeur sur le type d'evenement
* @param data un pointeur de type void, pour passer en argument a la fonction\n
* les éléments graphiques à modifier.
* les elements graphiques a modifier.
* @return un entier
*/
gint
......
/*
* gcompris - awele.h Copyright (C) 2005 Frederic Mazzarol This program is
* free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any
* later version. This program is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program; if not,
* write to the Free Software Foundation, Inc., 59 Temple Place, Suite
* 330, Boston, MA 02111-1307 USA
*/
#define BOUTON "awele/bouton1.png" //Chemin relatif vers fichiers boutons
#define BOUTON_NOTIFY "awele/bouton1_notify.png" //Chemin relatif vers fichiers boutons cliqus
......
/*
* gcompris - awele.c Copyright (C) 2005 Frederic Mazzarol This program is
* free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any
* later version. This program is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program; if not,
* write to the Free Software Foundation, Inc., 59 Temple Place, Suite
* 330, Boston, MA 02111-1307 USA
*/
#include "awele_utils.h"
#include <string.h>
#include <stdlib.h>
......@@ -9,10 +23,10 @@ static void alphabeta( TREE * t , short int alpha , short int beta );
/**
* Fonction d'evaluation d'un plateau
* La fonction d'evaluation va evaluer la difference du nombre de graines capturées (Facteur preponderant),\n
* la difference de la mobilité des deux joueurs, la difference des cases menaçantes,\n
* La fonction d'evaluation va evaluer la difference du nombre de graines capturees (Facteur preponderant),\n
* la difference de la mobilite des deux joueurs, la difference des cases menacantes,\n
* et la difference du nombre de graine active de chaque joueur.\n
* @param AWALE *aw Pointeur sur la structure AWALE a évaluer
* @param AWALE *aw Pointeur sur la structure AWALE a evaluer
* @return Une note d'evaluation du plateau.
*/
int eval (AWALE *aw){
......@@ -41,11 +55,11 @@ int eval (AWALE *aw){
/**
* Fonction de jeu de la machine
* Cette Fonction est appelée pour faire jouer l'ordinateur, \n
* la racine de l'arbre est crée, puis passé en argument à la fonction AlphaBeta\n
* Cette Fonction est appelee pour faire jouer l'ordinateur, \n
* la racine de l'arbre est cree, puis passe en argument a la fonction AlphaBeta\n
* La profondeur augmente au fur et mesure de la partie quand le nombre de graines diminue.\n
* @param aw Un pointeur sur le plateau à partir duquel reflechir
* @return Le meilleur coup calculé par la machine
* @param aw Un pointeur sur le plateau a partir duquel reflechir
* @return Le meilleur coup calcule par la machine
*/
short int think( AWALE *a, short int level){
TREE * t ;
......@@ -149,11 +163,11 @@ static void alphabeta( TREE * t , short int alpha , short int beta ){
t->note = m ;
}
/**
* Fonction de calcul de la difference du nombre de cases menaçcantes
* Cette fonction va calculer le nombre de cases menaçantes pour les deux joueurs\n
* Fonction de calcul de la difference du nombre de cases menacantes
* Cette fonction va calculer le nombre de cases menacantes pour les deux joueurs\n
* puis faire la diffrence des deux.
* @param aw Un pointeur sur le plateau a evaluer
* @return un entier egal a la difference des cases menaçantes
* @return un entier egal a la difference des cases menacantes
*/
short int threatenDelta (AWALE *aw){
......@@ -194,7 +208,7 @@ short int threatenDelta (AWALE *aw){
/**
* Fonction de calcul de la difference de la mobilité des deux joueurs
* Fonction de calcul de la difference de la mobilite des deux joueurs
* Cette fonction va calculer le nombre de cases non vides pour les deux joueurs\n
* puis faire la diffrence des deux.
* @param aw Un pointeur sur le plateau a evaluer
......
/*
* gcompris - awele.c Copyright (C) 2005 Frederic Mazzarol This program is
* free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any
* later version. This program is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program; if not,
* write to the Free Software Foundation, Inc., 59 Temple Place, Suite
* 330, Boston, MA 02111-1307 USA
*/
#include <stdlib.h>
#include <string.h>
#include <awele_utils.h>
/**
* Fonction test si famine
* Test si le mouvement demandé provoque une \n
* famine dans le camp opposé. Met a jour la variable string errorMsg\n
* Test si le mouvement demandee provoque une \n
* famine dans le camp oppose. Met a jour la variable string errorMsg\n
* pour affichage sur le plateau de jeu.
* @param aw un pointeur sur la structure awalé sur laquelle faire le test
* @param aw un pointeur sur la structure awale sur laquelle faire le test
* @param start un entier donnant la premiere case de l'opposant
* @param end un entier donnant la derniere case de l'opposant
* @return TRUE si ce mouvement ne declenche pas une famine, FALSE sinon
......@@ -32,7 +46,7 @@ short int isOpponentHungry(AWALE * aw, short int start, short int end)
/**
* Fonction de test si case non vide
* Test si la case choisie n'est pas vide
* @param hole entier désignant la case du plateau choisie
* @param hole entier designant la case du plateau choisie
* @param aw pointeur sur la structure AWALE courante.
*/
short int isValidMove(short int hole, AWALE * aw)
......@@ -49,9 +63,9 @@ short int isValidMove(short int hole, AWALE * aw)
/**
* Fonction deplacement des graines
* Cette fonction est appelé a chaque déplacement de graines
* @param hole la case à partir de laquelle commencer le déplacement
* @param un pointeur sur la structure AWALE courante, pour laquelle efetuer le déplacement
* Cette fonction est appele a chaque deplacement de graines
* @param hole la case a partir de laquelle commencer le deplacement
* @param un pointeur sur la structure AWALE courante, pour laquelle efetuer le deplacement
* @return TRUE si mouvement valide, le test de famine ne peut etre fait qu'apres deplacement\n
* FALSE sinon.
*/
......@@ -86,7 +100,7 @@ short int move(short int hole, AWALE * aw)
}
j--;
// Comptage des points et mise a zéro ou il y a capture
// Comptage des points et mise a zero ou il y a capture
if ((j >= start && j <= end)
&& (tempAw.board[j] == 2 || tempAw.board[j] == 3)) {
for (i = j; i >= start; i--) {
......@@ -115,8 +129,8 @@ short int move(short int hole, AWALE * aw)
/**
* Fonction de chgt de joueur
* Cette fonction permet de renvoyer la valeur de l'opposant
* @param player un entier représentant le joueur courant
* @return un entier représentant l'opposant
* @param player un entier representant le joueur courant
* @return un entier representant l'opposant
*/
short int switch_player(short int player)
{
......@@ -124,10 +138,10 @@ short int switch_player(short int player)
}
/**
* Fonction coup Aléatoire
* Cette fonction permet de générer un coup aléatoire
* Fonction coup Aleatoire
* Cette fonction permet de generer un coup aleatoire
* @param a pointeur sur la structure AWALE courante
* @return un entier représentant le coup a jouer
* @return un entier representant le coup a jouer
*/
short int randplay(AWALE * a)
{
......@@ -142,7 +156,7 @@ short int randplay(AWALE * a)
/**
* Fonction de test si Fin de partie
* Cette fonction est appelée après chaque mvt\
* Cette fonction est appelee apres chaque mvt\
* pour tester si c'est la fin de la partie.
* @param aw pointeur sur la structure AWALE a evaluer
* @return GAMEOVER si c'est la fin de la partie, NOT_GAMEOVER sinon
......@@ -194,9 +208,9 @@ short int isEndOfGame(AWALE * aw)
/**
* Fonction de test mouvement pour les coups de la machine
* Cette fonction est appelée avt chaque mouvement de la machine pour connaitre\n
* Cette fonction est appelee avt chaque mouvement de la machine pour connaitre\n
* tous les coups possibles.
* @param coup un entier représentant le coup a tester
* @param coup un entier representant le coup a tester
* @param aw Un pointeur su la structure AWALE courante
* @return TRUE si le mouvement est possible, FALSE sinon
*/
......@@ -221,9 +235,9 @@ short int testMove(short int coup, AWALE * aw)
/**
* Fonction de creation d'un awale
* Cette fonction reserve en memoire l'espace d'un awale\n
* et renvoi un pointeur sur la zone réservée
* et renvoi un pointeur sur la zone reservee
* @param void
* @return un pointeur sur la zone nouvellement créee contenant la structure awalé
* @return un pointeur sur la zone nouvellement creee contenant la structure awale
*/
AWALE *create_awale()
{
......@@ -246,14 +260,14 @@ void awale_equal(AWALE * inp, AWALE * out)
}
/**
* Fonction de création d'un noeud de l'arbre
* Cette fonction est appelée a chaque création d'un noeud de l'arbre\n
* Fonction de creation d'un noeud de l'arbre
* Cette fonction est appelee a chaque creation d'un noeud de l'arbre\n
* Elle initialise une structure de type TREE, contenant un plateau de jeu,\n
* et les six fils possibles de ce plateau de jeu (representant les coups directement dérivés)
* @param prof entier représentant la profondeur du noeud a crée
* @param player représentant le joueur pour lequel le noeud est crée
* @param aw pointeur sur la structure AWALE mère insérée dans le noeud
* @return un pointeur sur la structure TREE fraichement crée.
* et les six fils possibles de ce plateau de jeu (representant les coups directement derives)
* @param prof entier representant la profondeur du noeud a cree
* @param player representant le joueur pour lequel le noeud est cree
* @param aw pointeur sur la structure AWALE mère inseree dans le noeud
* @return un pointeur sur la structure TREE fraichement cree.
*/
TREE *create_tree(short int prof, short int player, AWALE * aw)
{
......@@ -276,7 +290,7 @@ TREE *create_tree(short int prof, short int player, AWALE * aw)
/**
* Fonction de destruction d'un noeud de l'arbre
* Cette fonction est appelée pour détruire un noeud de l'arbre, et donc libéré l'espace mémoire
* Cette fonction est appelee pour detruire un noeud de l'arbre, et donc libere l'espace memoire
* @param t un pointeur de pointeur de structure TREE
* @return void
*/
......@@ -297,7 +311,7 @@ void destroy_tree(TREE ** t)
/**
* Fonction de destruction d'un awale.
* Cette fonction libère l'espace mémoire pris par le pointeur de pointeur de structure AWALE
* Cette fonction libere l'espace memoire pris par le pointeur de pointeur de structure AWALE
* @param a Un pointeur de pointeur de structure AWALE
* @return void
*/
......
/*
* gcompris - awele.c Copyright (C) 2005 Frederic Mazzarol This program is
* free software; you can redistribute it and/or modify it under the terms
* of the GNU General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option) any
* later version. This program is distributed in the hope that it will
* be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details. You should have received a
* copy of the GNU General Public License along with this program; if not,
* write to the Free Software Foundation, Inc., 59 Temple Place, Suite
* 330, Boston, MA 02111-1307 USA
*/
#ifndef TRUE
#define TRUE 1
......@@ -28,7 +42,7 @@
#define MSG_FAMINE "declenche une famine"
#define MSG_AREA "clic dans ton camp"
#define MSG_EMPTYHOLE "Cette case est vide, sélectionne une autre case"
#define MSG_EMPTYHOLE "Cette case est vide, selectionne une autre case"
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment