vahid3vahid
سه شنبه 09 فروردین 1390, 14:08 عصر
سلام به همه ی دوستان این اولین برنامه ای که با C نوشتم آخه یه هفته هست که شروع کردم به یادگیریش کامپایلش کنید نظرتونو بگین ببینم امیدی بهم هست.
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#define ONE_FORMULA (((row - 48) - 1) * 3) + (column - 48)
#define TWO_FORMULA ((i) * 3) + (j + 1)
void player_vs_player(void);
char player_vs_computer(void);
char check_status(void);
void write_message(void);
void draw_table(void);
char cell[9], turn;
int main()
{
char mode;
printf("Select the game mode: (1: Player VS Player, 2: Player VS Computer)");
do
mode = getch();
while(mode != '1' && mode != '2');
if(mode == '1')
player_vs_player();
else
player_vs_computer();
getch();
return 0;
}
void player_vs_player(void)
{
do{
write_message();
draw_table();
}while(check_status() != 'X' && check_status() != 'O');
printf("\n\nVictory %c!", check_status());
}
void player_vs_computer(void)
{
}
char check_status(void)
{
char i;
for(i = '1'; i < '3'; i++){
if(((cell[0] == i) && (cell[1] == i) && (cell[2] == i))
||((cell[3] == i) && (cell[4] == i) && (cell[5] == i))
||((cell[6] == i) && (cell[7] == i) && (cell[8] == i))
||((cell[0] == i) && (cell[3] == i) && (cell[6] == i))
||((cell[1] == i) && (cell[4] == i) && (cell[7] == i))
||((cell[2] == i) && (cell[5] == i) && (cell[8] == i))
||((cell[0] == i) && (cell[4] == i) && (cell[8] == i))
||((cell[2] == i) && (cell[4] == i) && (cell[6] == i)))
if(i == '1')
return 'X';
else if(i == '2')
return 'O';
}
}
void write_message(void)
{
int cellnumber, row, column;
static int count;
turn = count % 2 == 0 ? 'X':'O';
printf("\n\nTurn: %c\n\nSelect the number row: ", turn);
do
row = getch();
while(row == '0' || row > '3');
printf("%d\nSelect the number column: ", row - 48);
do
column = getch();
while(column == '0' || column > '3');
cellnumber = ONE_FORMULA;
printf("%d", column - 48);
if(cell[cellnumber] == '1' || cell[cellnumber] == '2'){
printf("\n\nThis cell is selected");
write_message();
}
else{
cell[cellnumber] = turn == 'X' ? '1':'2';
count += 1;
}
}
void draw_table(void)
{
int i, j;
printf("\n\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++)
if(cell[TWO_FORMULA] == 0)
printf(" |");
else if(cell[TWO_FORMULA] == '1')
printf(" X |");
else if(cell[TWO_FORMULA] == '2')
printf(" O |");
if(i < 2)
printf("\n------------\n");
}
}
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#define ONE_FORMULA (((row - 48) - 1) * 3) + (column - 48)
#define TWO_FORMULA ((i) * 3) + (j + 1)
void player_vs_player(void);
char player_vs_computer(void);
char check_status(void);
void write_message(void);
void draw_table(void);
char cell[9], turn;
int main()
{
char mode;
printf("Select the game mode: (1: Player VS Player, 2: Player VS Computer)");
do
mode = getch();
while(mode != '1' && mode != '2');
if(mode == '1')
player_vs_player();
else
player_vs_computer();
getch();
return 0;
}
void player_vs_player(void)
{
do{
write_message();
draw_table();
}while(check_status() != 'X' && check_status() != 'O');
printf("\n\nVictory %c!", check_status());
}
void player_vs_computer(void)
{
}
char check_status(void)
{
char i;
for(i = '1'; i < '3'; i++){
if(((cell[0] == i) && (cell[1] == i) && (cell[2] == i))
||((cell[3] == i) && (cell[4] == i) && (cell[5] == i))
||((cell[6] == i) && (cell[7] == i) && (cell[8] == i))
||((cell[0] == i) && (cell[3] == i) && (cell[6] == i))
||((cell[1] == i) && (cell[4] == i) && (cell[7] == i))
||((cell[2] == i) && (cell[5] == i) && (cell[8] == i))
||((cell[0] == i) && (cell[4] == i) && (cell[8] == i))
||((cell[2] == i) && (cell[4] == i) && (cell[6] == i)))
if(i == '1')
return 'X';
else if(i == '2')
return 'O';
}
}
void write_message(void)
{
int cellnumber, row, column;
static int count;
turn = count % 2 == 0 ? 'X':'O';
printf("\n\nTurn: %c\n\nSelect the number row: ", turn);
do
row = getch();
while(row == '0' || row > '3');
printf("%d\nSelect the number column: ", row - 48);
do
column = getch();
while(column == '0' || column > '3');
cellnumber = ONE_FORMULA;
printf("%d", column - 48);
if(cell[cellnumber] == '1' || cell[cellnumber] == '2'){
printf("\n\nThis cell is selected");
write_message();
}
else{
cell[cellnumber] = turn == 'X' ? '1':'2';
count += 1;
}
}
void draw_table(void)
{
int i, j;
printf("\n\n");
for(i = 0; i < 3; i++){
for(j = 0; j < 3; j++)
if(cell[TWO_FORMULA] == 0)
printf(" |");
else if(cell[TWO_FORMULA] == '1')
printf(" X |");
else if(cell[TWO_FORMULA] == '2')
printf(" O |");
if(i < 2)
printf("\n------------\n");
}
}