ahmet harun türk
Femtopat
- Katılım
- 13 Eylül 2021
- Mesajlar
- 55
C programlama dili ile Tic Tac Toe oyunu yaptım, hata varsa bildirirseniz sevinirim.
[CODE lang="c" title="TTT.c"]/*
Name: TicTacToe
Copyright: -
Author: AHT
Date: 06.11.2021 12:08
Description: Tic Tac Toe game.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NEWLINE "\n\r"
#define print_help_message() printf("%s",\
"Play TicTacToe!"NEWLINE\
)
/*#define AHTDEBUG*/
#if defined __WINDOWS__ || defined __WIN32__ || defined __WIN64__
# include <conio.h>
# define clrscr() system("cls")
#elif __MSDOS__
# include <conio.h>
#else
# define clrscr() system("clear")
#endif
const unsigned char play_ground_bak[] = {
'\n', '\r', '0', '\t', '1', ' ', ' ', '2', ' ', ' ', '3', ' ',
'\n', '\r', ' ', '\t', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'\n', '\r', '1', '\t', ' ', ' ', 179, ' ', ' ', 179, ' ', ' ',
'\n', '\r', ' ', '\t', 196, 196, 197, 196, 196, 197, 196, 196,
'\n', '\r', '2', '\t', ' ', ' ', 179, ' ', ' ', 179, ' ', ' ',
'\n', '\r', ' ', '\t', 196, 196, 197, 196, 196, 197, 196, 196,
'\n', '\r', '3', '\t', ' ', ' ', 179, ' ', ' ', 179, ' ', ' ', '\0'
};
unsigned char chars[3][3] = {0};
unsigned char play_ground[128];
const char game_characters[2] = {'X', 'O'};
int is_game_over(void) /* 0=devam, 1=berabere, 2=X kazandi, 3=O kazandi. */
{
int i, flag = 1;
for(i = 0; i < 2; i++)
{
if( chars[0][0] == chars[0][1] && chars[0][2] == chars[0][1] && game_characters == chars[0][0] ||
chars[0][0] == chars[1][0] && chars[2][0] == chars[1][0] && game_characters == chars[0][0] ||
chars[0][0] == chars[1][1] && chars[2][2] == chars[1][1] && game_characters == chars[0][0] ||
chars[0][1] == chars[1][1] && chars[2][1] == chars[1][1] && game_characters == chars[0][1] ||
chars[0][2] == chars[1][2] && chars[2][2] == chars[1][2] && game_characters == chars[0][2] ||
chars[1][0] == chars[1][1] && chars[1][0] == chars[1][2] && game_characters == chars[1][0] ||
chars[2][0] == chars[2][1] && chars[2][0] == chars[2][2] && game_characters == chars[2][0] ||
chars[2][0] == chars[1][1] && chars[2][0] == chars[0][2] && game_characters == chars[2][0]
)
{
#ifdef AHTDEBUG
printf("Oyun bitti.");
scanf("%d");
#endif
return i+2;
}
}
for(i = 0; i < 9; i++)
{
flag = chars[i/3][i%3] == 0 ? 0 : flag;
}
return flag; /* Kontrollerden gectikten sonra */
}
int X_or_O(void)
{
char ch;
err:
printf("\rX mi, O mu? ");
scanf("%c", &ch);
switch(ch)
{
case 'X':
case 'x':
return 'X';
case 'O':
case 'o':
return 'O';
default: goto err;
}
}
int status(void)
{
clrscr();
printf("%s"NEWLINE NEWLINE, play_ground);
switch(is_game_over())
{
case 1:
printf(NEWLINE NEWLINE"--BERABERE--");
return 1;
case 2:
printf(NEWLINE NEWLINE"--X KAZANDI--");
return 2;
case 3:
printf(NEWLINE NEWLINE"--O KAZANDI--");
return 3;
}
return 0;
}
void play_multiplayer(void)
{
int x = 0, y = 0, index;
for(index = 0; ; index++)
{
if(status()) return ;
err_loc:
printf("%c konumu(x-y): ", game_characters[index % 2]);
scanf("%d-%d", &x, &y);
#ifdef AHTDEBUG
printf("\n x: %d, y: %d", x, y);
#endif
if(x > 3 || x < 1 || y > 3 || y < 1) /* Menzil disi. */
{
printf("Konum yanlŸ yere girildi!"NEWLINE);
goto err_loc;
}
if(chars[x-1][y-1]) /* Zaten dolu */
{
printf("Dolu!"NEWLINE);
goto err_loc;
}
chars[x-1][y-1] = game_characters[index % 2];
play_ground[x == 1 ? y*3+25 : x == 2 ? y*3+49 : y*3+73] = chars[x-1][y-1];
}
}
void play_computer(const int difficulty) /* 0=kolay, 1=orta, 2=zor, 3=uzman */
{
int karakter = X_or_O(), bot_karakter = 'O', x, y, X = 0, Y = 0, flag = 0, i = 0;
if(karakter == 'O')
{
bot_karakter = 'X';
switch(difficulty)
{
case 0: goto kolay_basla;
case 1: goto orta_basla;
case 2: goto zor_basla;
case 3: goto uzman_basla;
default: return ;
}
}
for(i = 0; ; i++)
{
if(status()) return ;
err_loc:
printf("%c konumu(x-y): ", karakter);
scanf("%d-%d", &x, &y);
#ifdef AHTDEBUG
printf("\n x: %d, y: %d", x, y);
#endif
if(x > 3 || x < 1 || y > 3 || y < 1) /* Menzil disi. */
{
printf("Konum yanlŸ yere girildi!"NEWLINE);
goto err_loc;
}
if(chars[x-1][y-1]) /* Zaten dolu */
{
printf("Dolu!"NEWLINE);
goto err_loc;
}
chars[x-1][y-1] = karakter;
play_ground[x == 1 ? y*3+25 : x == 2 ? y*3+49 : y*3+73] = chars[x-1][y-1];
if(status()) return ;
x = 0, y = 0, flag = 0;
switch(difficulty)
{
case 0: goto kolay_basla;
case 1: goto orta_basla;
case 2: goto zor_basla;
case 3: goto uzman_basla;
default: return ;
}
uzman_basla: /* Daha zekice hareket eder. */
if(i == 0 && chars[1][1] != karakter && bot_karakter == 'O') { flag = chars[1][1] = bot_karakter; X = 1, Y = 1;} /* Ilk hamlemiz koselere olursa ortaya O koyar. */
else if(i == 0 && chars[1][1] == karakter && bot_karakter == 'O'){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;} /* Ilk hamle ortadaysa koseye O koyar. */
else if(i == 1 && (chars[0][0] == chars[2][2] && chars[0][0] == karakter ||
chars[0][2] == chars[2][0] && chars[0][2] == karakter) && chars[1][1] == bot_karakter && bot_karakter == 'O'){ flag = chars[1][0] = bot_karakter; X = 1, Y = 0;} /* Solust-sagalt Caprazlama hilesini bozmak icin */
/* Usttekiler savunma icin, alttakiler saldiri icin */
else if(i == 0 && bot_karakter == 'X'){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;} /* X ise sol ustten baslar */
else if(i == 1 && chars[1][1] == karakter && bot_karakter == 'X'){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;} /* X ise sol ustten baslar */
if(flag) goto end_of_bot_turn;
zor_basla: /* Kendisinin kazanmasi icin olan algoritmayi da yaz. */
for(x = 0; x < 3; x++)
{
if(chars[x][0] == chars[x][1] && chars[x][0] == bot_karakter && chars[x][2] != karakter){ flag = chars[x][2] = bot_karakter; X = x, Y = 2;}
else if(chars[x][0] == chars[x][2] && chars[x][0] == bot_karakter && chars[x][1] != karakter){ flag = chars[x][1] = bot_karakter; X = x, Y = 1;}
else if(chars[x][1] == chars[x][2] && chars[x][1] == bot_karakter && chars[x][0] != karakter){ flag = chars[x][0] = bot_karakter; X = x, Y = 0;}
}
if(flag) goto end_of_bot_turn;
for(y = 0; y < 3; y++)
{
if(chars[0][y] == chars[1][y] && chars[0][y] == bot_karakter && chars[2][y] != karakter){ flag = chars[2][y] = bot_karakter; X = 2, Y = y;}
else if(chars[1][y] == chars[2][y] && chars[1][y] == bot_karakter && chars[0][y] != karakter){ flag = chars[0][y] = bot_karakter; X = 0, Y = y;}
else if(chars[0][y] == chars[2][y] && chars[0][y] == bot_karakter && chars[1][y] != karakter){ flag = chars[1][y] = bot_karakter; X = 1, Y = y;}
}
if(flag) goto end_of_bot_turn;
else if(chars[0][0] == chars[1][1] && chars[0][0] == bot_karakter && chars[2][2] != karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[1][1] == chars[2][2] && chars[1][1] == bot_karakter && chars[0][0] != karakter){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;}
else if(chars[0][0] == chars[1][1] && chars[0][0] == bot_karakter && chars[2][2] != karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[0][0] == chars[2][2] && chars[0][0] == bot_karakter && chars[1][1] != karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
else if(chars[2][0] == chars[1][1] && chars[2][0] == bot_karakter && chars[0][2] != karakter){ flag = chars[0][2] = bot_karakter; X = 0, Y = 2;}
else if(chars[1][1] == chars[0][2] && chars[1][1] == bot_karakter && chars[2][0] != karakter){ flag = chars[2][0] = bot_karakter; X = 2, Y = 0;}
else if(chars[2][0] == chars[0][2] && chars[2][0] == bot_karakter && chars[1][1] != karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
if(flag) goto end_of_bot_turn;
orta_basla: /* Senin kazanmani onleme algoritmasi */
for(x = 0; x < 3; x++)
{
if(chars[x][0] == chars[x][1] && chars[x][0] == karakter && chars[x][2] != bot_karakter){ flag = chars[x][2] = bot_karakter; X = x, Y = 2;}
else if(chars[x][0] == chars[x][2] && chars[x][0] == karakter && chars[x][1] != bot_karakter){ flag = chars[x][1] = bot_karakter; X = x, Y = 1;}
else if(chars[x][1] == chars[x][2] && chars[x][1] == karakter && chars[x][0] != bot_karakter){ flag = chars[x][0] = bot_karakter; X = x, Y = 0;}
}
if(flag) goto end_of_bot_turn;
for(y = 0; y < 3; y++)
{
if(chars[0][y] == chars[1][y] && chars[0][y] == karakter && chars[2][y] != bot_karakter){ flag = chars[2][y] = bot_karakter; X = 2, Y = y;}
else if(chars[1][y] == chars[2][y] && chars[1][y] == karakter && chars[0][y] != bot_karakter){ flag = chars[0][y] = bot_karakter; X = 0, Y = y;}
else if(chars[0][y] == chars[2][y] && chars[0][y] == karakter && chars[1][y] != bot_karakter){ flag = chars[1][y] = bot_karakter; X = 1, Y = y;}
}
if(flag) goto end_of_bot_turn; /* Alttakiler caprazlama olanlar. */
else if(chars[0][0] == chars[1][1] && chars[0][0] == karakter && chars[2][2] != bot_karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[1][1] == chars[2][2] && chars[1][1] == karakter && chars[0][0] != bot_karakter){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;}
else if(chars[0][0] == chars[1][1] && chars[0][0] == karakter && chars[2][2] != bot_karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[0][0] == chars[2][2] && chars[0][0] == karakter && chars[1][1] != bot_karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
else if(chars[2][0] == chars[1][1] && chars[2][0] == karakter && chars[0][2] != bot_karakter){ flag = chars[0][2] = bot_karakter; X = 0, Y = 2;}
else if(chars[1][1] == chars[0][2] && chars[1][1] == karakter && chars[2][0] != bot_karakter){ flag = chars[2][0] = bot_karakter; X = 2, Y = 0;}
else if(chars[2][0] == chars[0][2] && chars[2][0] == karakter && chars[1][1] != bot_karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
if(flag) goto end_of_bot_turn;
if(!flag)
{
kolay_basla:
printf("\rBekleyin . . .");
srand(time(NULL));
x = rand() % 3;
y = rand() % 3;
if(chars[x][y]) goto kolay_basla;
chars[x][y] = bot_karakter;
X = x, Y = y;
}
end_of_bot_turn:
play_ground[X == 0 ? Y*3+28 : X == 1 ? Y*3+52 : Y*3+76] = chars[X][Y];
}
}
void main_menu(void)
{
int game_number;
err:
printf(NEWLINE
"1- ˜ki kiŸi oyna"NEWLINE
"2- Bilgisayara karŸ kolay"NEWLINE
"3- Bilgisayara karŸ orta"NEWLINE
"4- Bilgisayara karŸ zor"NEWLINE
"5- Bilgisayara karŸ uzman"NEWLINE
"6- €kŸ"NEWLINE
"˜Ÿlem se‡iniz: "NEWLINE
);
scanf("%d", &game_number);
if(game_number == 1) play_multiplayer();
else if(game_number >= 2 && game_number <= 5) play_computer(game_number-2);
else if(game_number == 6) exit(EXIT_SUCCESS);
else goto err;
}
int main(int argc, char **argv)
{
int i;
if(argc == 2 && (!strcmpi(argv[1], "/?") || !strcmpi(argv[1], "-?")))
{
print_help_message();
return 0;
}
else if(argc != 1)
{
fprintf(stderr, "Wrong number parametres.");
return 1;
}
play:
strcpy(play_ground, play_ground_bak);
main_menu();
invalid_key:
printf(NEWLINE"1- Yeniden Oyna"NEWLINE"2- €kŸ"NEWLINE"˜Ÿlem se‡iniz: ");
scanf("%d", &i);
switch(i)
{
case 1: goto replay;
case 2: return 0;
default: goto invalid_key;
}
replay:
for(i = 0; i < 9; i++)
chars[i/3][i%3] = '\0';
clrscr();
goto play;
}
[/CODE]
[CODE lang="c" title="TTT.c"]/*
Name: TicTacToe
Copyright: -
Author: AHT
Date: 06.11.2021 12:08
Description: Tic Tac Toe game.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define NEWLINE "\n\r"
#define print_help_message() printf("%s",\
"Play TicTacToe!"NEWLINE\
)
/*#define AHTDEBUG*/
#if defined __WINDOWS__ || defined __WIN32__ || defined __WIN64__
# include <conio.h>
# define clrscr() system("cls")
#elif __MSDOS__
# include <conio.h>
#else
# define clrscr() system("clear")
#endif
const unsigned char play_ground_bak[] = {
'\n', '\r', '0', '\t', '1', ' ', ' ', '2', ' ', ' ', '3', ' ',
'\n', '\r', ' ', '\t', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
'\n', '\r', '1', '\t', ' ', ' ', 179, ' ', ' ', 179, ' ', ' ',
'\n', '\r', ' ', '\t', 196, 196, 197, 196, 196, 197, 196, 196,
'\n', '\r', '2', '\t', ' ', ' ', 179, ' ', ' ', 179, ' ', ' ',
'\n', '\r', ' ', '\t', 196, 196, 197, 196, 196, 197, 196, 196,
'\n', '\r', '3', '\t', ' ', ' ', 179, ' ', ' ', 179, ' ', ' ', '\0'
};
unsigned char chars[3][3] = {0};
unsigned char play_ground[128];
const char game_characters[2] = {'X', 'O'};
int is_game_over(void) /* 0=devam, 1=berabere, 2=X kazandi, 3=O kazandi. */
{
int i, flag = 1;
for(i = 0; i < 2; i++)
{
if( chars[0][0] == chars[0][1] && chars[0][2] == chars[0][1] && game_characters == chars[0][0] ||
chars[0][0] == chars[1][0] && chars[2][0] == chars[1][0] && game_characters == chars[0][0] ||
chars[0][0] == chars[1][1] && chars[2][2] == chars[1][1] && game_characters == chars[0][0] ||
chars[0][1] == chars[1][1] && chars[2][1] == chars[1][1] && game_characters == chars[0][1] ||
chars[0][2] == chars[1][2] && chars[2][2] == chars[1][2] && game_characters == chars[0][2] ||
chars[1][0] == chars[1][1] && chars[1][0] == chars[1][2] && game_characters == chars[1][0] ||
chars[2][0] == chars[2][1] && chars[2][0] == chars[2][2] && game_characters == chars[2][0] ||
chars[2][0] == chars[1][1] && chars[2][0] == chars[0][2] && game_characters == chars[2][0]
)
{
#ifdef AHTDEBUG
printf("Oyun bitti.");
scanf("%d");
#endif
return i+2;
}
}
for(i = 0; i < 9; i++)
{
flag = chars[i/3][i%3] == 0 ? 0 : flag;
}
return flag; /* Kontrollerden gectikten sonra */
}
int X_or_O(void)
{
char ch;
err:
printf("\rX mi, O mu? ");
scanf("%c", &ch);
switch(ch)
{
case 'X':
case 'x':
return 'X';
case 'O':
case 'o':
return 'O';
default: goto err;
}
}
int status(void)
{
clrscr();
printf("%s"NEWLINE NEWLINE, play_ground);
switch(is_game_over())
{
case 1:
printf(NEWLINE NEWLINE"--BERABERE--");
return 1;
case 2:
printf(NEWLINE NEWLINE"--X KAZANDI--");
return 2;
case 3:
printf(NEWLINE NEWLINE"--O KAZANDI--");
return 3;
}
return 0;
}
void play_multiplayer(void)
{
int x = 0, y = 0, index;
for(index = 0; ; index++)
{
if(status()) return ;
err_loc:
printf("%c konumu(x-y): ", game_characters[index % 2]);
scanf("%d-%d", &x, &y);
#ifdef AHTDEBUG
printf("\n x: %d, y: %d", x, y);
#endif
if(x > 3 || x < 1 || y > 3 || y < 1) /* Menzil disi. */
{
printf("Konum yanlŸ yere girildi!"NEWLINE);
goto err_loc;
}
if(chars[x-1][y-1]) /* Zaten dolu */
{
printf("Dolu!"NEWLINE);
goto err_loc;
}
chars[x-1][y-1] = game_characters[index % 2];
play_ground[x == 1 ? y*3+25 : x == 2 ? y*3+49 : y*3+73] = chars[x-1][y-1];
}
}
void play_computer(const int difficulty) /* 0=kolay, 1=orta, 2=zor, 3=uzman */
{
int karakter = X_or_O(), bot_karakter = 'O', x, y, X = 0, Y = 0, flag = 0, i = 0;
if(karakter == 'O')
{
bot_karakter = 'X';
switch(difficulty)
{
case 0: goto kolay_basla;
case 1: goto orta_basla;
case 2: goto zor_basla;
case 3: goto uzman_basla;
default: return ;
}
}
for(i = 0; ; i++)
{
if(status()) return ;
err_loc:
printf("%c konumu(x-y): ", karakter);
scanf("%d-%d", &x, &y);
#ifdef AHTDEBUG
printf("\n x: %d, y: %d", x, y);
#endif
if(x > 3 || x < 1 || y > 3 || y < 1) /* Menzil disi. */
{
printf("Konum yanlŸ yere girildi!"NEWLINE);
goto err_loc;
}
if(chars[x-1][y-1]) /* Zaten dolu */
{
printf("Dolu!"NEWLINE);
goto err_loc;
}
chars[x-1][y-1] = karakter;
play_ground[x == 1 ? y*3+25 : x == 2 ? y*3+49 : y*3+73] = chars[x-1][y-1];
if(status()) return ;
x = 0, y = 0, flag = 0;
switch(difficulty)
{
case 0: goto kolay_basla;
case 1: goto orta_basla;
case 2: goto zor_basla;
case 3: goto uzman_basla;
default: return ;
}
uzman_basla: /* Daha zekice hareket eder. */
if(i == 0 && chars[1][1] != karakter && bot_karakter == 'O') { flag = chars[1][1] = bot_karakter; X = 1, Y = 1;} /* Ilk hamlemiz koselere olursa ortaya O koyar. */
else if(i == 0 && chars[1][1] == karakter && bot_karakter == 'O'){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;} /* Ilk hamle ortadaysa koseye O koyar. */
else if(i == 1 && (chars[0][0] == chars[2][2] && chars[0][0] == karakter ||
chars[0][2] == chars[2][0] && chars[0][2] == karakter) && chars[1][1] == bot_karakter && bot_karakter == 'O'){ flag = chars[1][0] = bot_karakter; X = 1, Y = 0;} /* Solust-sagalt Caprazlama hilesini bozmak icin */
/* Usttekiler savunma icin, alttakiler saldiri icin */
else if(i == 0 && bot_karakter == 'X'){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;} /* X ise sol ustten baslar */
else if(i == 1 && chars[1][1] == karakter && bot_karakter == 'X'){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;} /* X ise sol ustten baslar */
if(flag) goto end_of_bot_turn;
zor_basla: /* Kendisinin kazanmasi icin olan algoritmayi da yaz. */
for(x = 0; x < 3; x++)
{
if(chars[x][0] == chars[x][1] && chars[x][0] == bot_karakter && chars[x][2] != karakter){ flag = chars[x][2] = bot_karakter; X = x, Y = 2;}
else if(chars[x][0] == chars[x][2] && chars[x][0] == bot_karakter && chars[x][1] != karakter){ flag = chars[x][1] = bot_karakter; X = x, Y = 1;}
else if(chars[x][1] == chars[x][2] && chars[x][1] == bot_karakter && chars[x][0] != karakter){ flag = chars[x][0] = bot_karakter; X = x, Y = 0;}
}
if(flag) goto end_of_bot_turn;
for(y = 0; y < 3; y++)
{
if(chars[0][y] == chars[1][y] && chars[0][y] == bot_karakter && chars[2][y] != karakter){ flag = chars[2][y] = bot_karakter; X = 2, Y = y;}
else if(chars[1][y] == chars[2][y] && chars[1][y] == bot_karakter && chars[0][y] != karakter){ flag = chars[0][y] = bot_karakter; X = 0, Y = y;}
else if(chars[0][y] == chars[2][y] && chars[0][y] == bot_karakter && chars[1][y] != karakter){ flag = chars[1][y] = bot_karakter; X = 1, Y = y;}
}
if(flag) goto end_of_bot_turn;
else if(chars[0][0] == chars[1][1] && chars[0][0] == bot_karakter && chars[2][2] != karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[1][1] == chars[2][2] && chars[1][1] == bot_karakter && chars[0][0] != karakter){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;}
else if(chars[0][0] == chars[1][1] && chars[0][0] == bot_karakter && chars[2][2] != karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[0][0] == chars[2][2] && chars[0][0] == bot_karakter && chars[1][1] != karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
else if(chars[2][0] == chars[1][1] && chars[2][0] == bot_karakter && chars[0][2] != karakter){ flag = chars[0][2] = bot_karakter; X = 0, Y = 2;}
else if(chars[1][1] == chars[0][2] && chars[1][1] == bot_karakter && chars[2][0] != karakter){ flag = chars[2][0] = bot_karakter; X = 2, Y = 0;}
else if(chars[2][0] == chars[0][2] && chars[2][0] == bot_karakter && chars[1][1] != karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
if(flag) goto end_of_bot_turn;
orta_basla: /* Senin kazanmani onleme algoritmasi */
for(x = 0; x < 3; x++)
{
if(chars[x][0] == chars[x][1] && chars[x][0] == karakter && chars[x][2] != bot_karakter){ flag = chars[x][2] = bot_karakter; X = x, Y = 2;}
else if(chars[x][0] == chars[x][2] && chars[x][0] == karakter && chars[x][1] != bot_karakter){ flag = chars[x][1] = bot_karakter; X = x, Y = 1;}
else if(chars[x][1] == chars[x][2] && chars[x][1] == karakter && chars[x][0] != bot_karakter){ flag = chars[x][0] = bot_karakter; X = x, Y = 0;}
}
if(flag) goto end_of_bot_turn;
for(y = 0; y < 3; y++)
{
if(chars[0][y] == chars[1][y] && chars[0][y] == karakter && chars[2][y] != bot_karakter){ flag = chars[2][y] = bot_karakter; X = 2, Y = y;}
else if(chars[1][y] == chars[2][y] && chars[1][y] == karakter && chars[0][y] != bot_karakter){ flag = chars[0][y] = bot_karakter; X = 0, Y = y;}
else if(chars[0][y] == chars[2][y] && chars[0][y] == karakter && chars[1][y] != bot_karakter){ flag = chars[1][y] = bot_karakter; X = 1, Y = y;}
}
if(flag) goto end_of_bot_turn; /* Alttakiler caprazlama olanlar. */
else if(chars[0][0] == chars[1][1] && chars[0][0] == karakter && chars[2][2] != bot_karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[1][1] == chars[2][2] && chars[1][1] == karakter && chars[0][0] != bot_karakter){ flag = chars[0][0] = bot_karakter; X = 0, Y = 0;}
else if(chars[0][0] == chars[1][1] && chars[0][0] == karakter && chars[2][2] != bot_karakter){ flag = chars[2][2] = bot_karakter; X = 2, Y = 2;}
else if(chars[0][0] == chars[2][2] && chars[0][0] == karakter && chars[1][1] != bot_karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
else if(chars[2][0] == chars[1][1] && chars[2][0] == karakter && chars[0][2] != bot_karakter){ flag = chars[0][2] = bot_karakter; X = 0, Y = 2;}
else if(chars[1][1] == chars[0][2] && chars[1][1] == karakter && chars[2][0] != bot_karakter){ flag = chars[2][0] = bot_karakter; X = 2, Y = 0;}
else if(chars[2][0] == chars[0][2] && chars[2][0] == karakter && chars[1][1] != bot_karakter){ flag = chars[1][1] = bot_karakter; X = 1, Y = 1;}
if(flag) goto end_of_bot_turn;
if(!flag)
{
kolay_basla:
printf("\rBekleyin . . .");
srand(time(NULL));
x = rand() % 3;
y = rand() % 3;
if(chars[x][y]) goto kolay_basla;
chars[x][y] = bot_karakter;
X = x, Y = y;
}
end_of_bot_turn:
play_ground[X == 0 ? Y*3+28 : X == 1 ? Y*3+52 : Y*3+76] = chars[X][Y];
}
}
void main_menu(void)
{
int game_number;
err:
printf(NEWLINE
"1- ˜ki kiŸi oyna"NEWLINE
"2- Bilgisayara karŸ kolay"NEWLINE
"3- Bilgisayara karŸ orta"NEWLINE
"4- Bilgisayara karŸ zor"NEWLINE
"5- Bilgisayara karŸ uzman"NEWLINE
"6- €kŸ"NEWLINE
"˜Ÿlem se‡iniz: "NEWLINE
);
scanf("%d", &game_number);
if(game_number == 1) play_multiplayer();
else if(game_number >= 2 && game_number <= 5) play_computer(game_number-2);
else if(game_number == 6) exit(EXIT_SUCCESS);
else goto err;
}
int main(int argc, char **argv)
{
int i;
if(argc == 2 && (!strcmpi(argv[1], "/?") || !strcmpi(argv[1], "-?")))
{
print_help_message();
return 0;
}
else if(argc != 1)
{
fprintf(stderr, "Wrong number parametres.");
return 1;
}
play:
strcpy(play_ground, play_ground_bak);
main_menu();
invalid_key:
printf(NEWLINE"1- Yeniden Oyna"NEWLINE"2- €kŸ"NEWLINE"˜Ÿlem se‡iniz: ");
scanf("%d", &i);
switch(i)
{
case 1: goto replay;
case 2: return 0;
default: goto invalid_key;
}
replay:
for(i = 0; i < 9; i++)
chars[i/3][i%3] = '\0';
clrscr();
goto play;
}
[/CODE]