Skip to content

Instantly share code, notes, and snippets.

@db0company
Created May 29, 2013 11:20
Show Gist options
  • Save db0company/5669582 to your computer and use it in GitHub Desktop.
Save db0company/5669582 to your computer and use it in GitHub Desktop.
#include <stdlib.h>
#include <unistd.h>
enum casem
{
EMPTY,
ROND,
CROIX
};
void print_char(char c)
{
write(STDOUT_FILENO, &c, sizeof(c));
}
void print_string(char * str)
{
int i;
i = 0;
while (str[i] != '\0')
{
print_char(str[i]);
i++;
}
}
void print_alphabet(void)
{
char letter;
letter = 'z';
while (letter >= 'a')
{
print_char(letter);
letter = letter - 1;
}
print_char('\n');
}
void init_grille(enum casem * grille)
{
int compteur;
compteur = 0;
while (compteur < 9)
{
grille[compteur] = EMPTY;
compteur = compteur + 1;
}
}
void print_case(enum casem cas)
{
if (cas == EMPTY)
print_char(' ');
else if (cas == ROND)
print_char('O');
else
print_char('X');
}
void show_grille(enum casem * grille)
{
int compteur;
compteur = 0;
while (compteur < 9)
{
print_case(grille[compteur]);
if (compteur == 2 || compteur == 5 || compteur == 8)
print_char('\n');
else
print_char('|');
compteur = compteur + 1;
}
}
void print_player(int player)
{
print_string("Player ");
if (player == 1)
print_case(ROND);
if (player == 2)
print_case(CROIX);
}
int check_answer(char answer, enum casem * grille)
{
if (answer >= '1' && answer <= '9' && grille[answer - '0' - 1] == EMPTY)
return (0);
return (1);
}
void update_grille(enum casem * grille, int player, char answer)
{
if (player == 1)
grille[answer - '0' - 1] = ROND;
else
grille[answer - '0' - 1] = CROIX;
}
void next_move(int player, enum casem * grille)
{
char answer[2];
*answer = 0;
while (check_answer(*answer, grille) == 1)
{
print_player(player);
print_string(" : Ou veux-tu mettre ton pion ? ");
read(STDIN_FILENO, answer, 2);
}
update_grille(grille, player, *answer);
}
int next_player(int player)
{
if (player == 1)
return (2);
return (1);
}
void morpion(void)
{
enum casem grille[9];
int player;
init_grille(grille);
player = 1;
while (1)
{
show_grille(grille);
next_move(player, grille);
player = next_player(player);
}
}
int main(void)
{
morpion();
return (EXIT_SUCCESS);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment