More actions
imported>woojin818 No edit summary |
imported>tjd3772 No edit summary |
||
| Line 29: | Line 29: | ||
=== 박성훈 === | === 박성훈 === | ||
#include <time.h> | |||
#include <stdlib.h> | |||
void playerturn(); | |||
void computerturn(); | |||
void hardcomputerturn(); | |||
int attack(); | |||
int protect(); | |||
int playerwin(); | |||
int computerwin(); | |||
int draw(); | |||
int full[9] = { 0, }; | |||
char matrix[3][3] = { '1', '2', '3', '4', '5', '6', '7', '8', '9' }; | |||
int main(){ | |||
int a = 0; | |||
int first; | |||
int level; | |||
int levelfirst; | |||
int replay; | |||
srand((unsigned)time(NULL)); | |||
printf("난이도를 골라주세요. 1.easy 2.hard\n"); | |||
scanf("%d", &level); | |||
printf("누가 먼저 할껀가요? 1.사람 2. 컴퓨터\n"); | |||
scanf("%d", &first); | |||
if (level == 1 && first == 1) | |||
levelfirst = 1; | |||
else if (level == 1 && first == 2) | |||
levelfirst = 2; | |||
else if (level == 2 && first == 1) | |||
levelfirst = 3; | |||
else | |||
levelfirst = 4; | |||
system("cls"); | |||
for (;;){ | |||
printf("┌─┬─┬─┐\n"); | |||
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]); | |||
printf("└─┴─┴─┘\n"); | |||
if (levelfirst == 1) | |||
{ | |||
playerturn(); | |||
levelfirst = 2; | |||
} | |||
else if (levelfirst == 2) | |||
{ | |||
computerturn(); | |||
levelfirst = 1; | |||
} | |||
else if (levelfirst == 3) | |||
{ | |||
playerturn(); | |||
levelfirst = 4; | |||
} | |||
else if (levelfirst == 4) | |||
{ | |||
if (full[4] == 0) | |||
{ | |||
matrix[1][1] = 'X'; | |||
full[4] = 2; | |||
levelfirst = 3; | |||
} | |||
else | |||
{ | |||
hardcomputerturn(); | |||
levelfirst = 3; | |||
} | |||
} | |||
if (playerwin() == 1){ | |||
system("cls"); | |||
printf("┌─┬─┬─┐\n"); | |||
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]); | |||
printf("└─┴─┴─┘\n"); | |||
printf("YOU WIN!!!\n"); | |||
break; | |||
} | |||
if (computerwin() == 1){ | |||
system("cls"); | |||
printf("┌─┬─┬─┐\n"); | |||
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]); | |||
printf("└─┴─┴─┘\n"); | |||
printf("You lose...\n"); | |||
break; | |||
} | |||
if (draw() == 1){ | |||
system("cls"); | |||
printf("┌─┬─┬─┐\n"); | |||
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]); | |||
printf("├─┼─┼─┤\n"); | |||
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]); | |||
printf("└─┴─┴─┘\n"); | |||
printf("Draw\n"); | |||
break; | |||
} | |||
system("cls"); | |||
} | |||
return 0; | |||
} | |||
void playerturn() | |||
{ | |||
int place = 0; | |||
int playerturnfinish = 0; | |||
printf("번호를 고르시오.\n"); | |||
for (; playerturnfinish != 1;){ | |||
scanf("%d", &place); | |||
if (place == 1) | |||
{ | |||
if (full[0] == 0) | |||
{ | |||
matrix[0][0] = 'O'; | |||
full[0] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[0] == 1 || full[0] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 2) | |||
{ | |||
if (full[1] == 0) | |||
{ | |||
matrix[0][1] = 'O'; | |||
full[1] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[1] == 1 || full[1] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 3) | |||
{ | |||
if (full[2] == 0) | |||
{ | |||
matrix[0][2] = 'O'; | |||
full[2] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[2] == 1 || full[2] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 4) | |||
{ | |||
if (full[3] == 0) | |||
{ | |||
matrix[1][0] = 'O'; | |||
full[3] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[3] == 1 || full[3] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 5) | |||
{ | |||
if (full[4] == 0) | |||
{ | |||
matrix[1][1] = 'O'; | |||
full[4] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[4] == 1 || full[4] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 6) | |||
{ | |||
if (full[5] == 0) | |||
{ | |||
matrix[1][2] = 'O'; | |||
full[5] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[5] == 1 || full[5] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 7) | |||
{ | |||
if (full[6] == 0) | |||
{ | |||
matrix[2][0] = 'O'; | |||
full[6] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[6] == 1 || full[6] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 8) | |||
{ | |||
if (full[7] == 0) | |||
{ | |||
matrix[2][1] = 'O'; | |||
full[7] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[7] == 1 || full[7] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
else if (place == 9) | |||
{ | |||
if (full[8] == 0) | |||
{ | |||
matrix[2][2] = 'O'; | |||
full[8] = 1; | |||
playerturnfinish = 1; | |||
} | |||
else if (full[8] == 1 || full[8] == 2) | |||
{ | |||
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n"); | |||
continue; | |||
} | |||
} | |||
} | |||
} | |||
void computerturn() | |||
{ | |||
int place = 0; | |||
int computerturnfinish = 0; | |||
for (; computerturnfinish != 1;){ | |||
place = rand() % ((9 - 1) + 1)+1; | |||
if (place == 1) | |||
{ | |||
if (full[0] == 0) | |||
{ | |||
matrix[0][0] = 'X'; | |||
full[0] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[0] == 1 || full[0] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 2) | |||
{ | |||
if (full[1] == 0) | |||
{ | |||
matrix[0][1] = 'X'; | |||
full[1] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[1] == 1 || full[1] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 3) | |||
{ | |||
if (full[2] == 0) | |||
{ | |||
matrix[0][2] = 'X'; | |||
full[2] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[2] == 1 || full[2] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 4) | |||
{ | |||
if (full[3] == 0) | |||
{ | |||
matrix[1][0] = 'X'; | |||
full[3] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[3] == 1 || full[3] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 5) | |||
{ | |||
if (full[4] == 0) | |||
{ | |||
matrix[1][1] = 'X'; | |||
full[4] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[4] == 1 || full[4] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 6) | |||
{ | |||
if (full[5] == 0) | |||
{ | |||
matrix[1][2] = 'X'; | |||
full[5] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[5] == 1 || full[5] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 7) | |||
{ | |||
if (full[6] == 0) | |||
{ | |||
matrix[2][0] = 'X'; | |||
full[6] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[6] == 1 || full[6] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 8) | |||
{ | |||
if (full[7] == 0) | |||
{ | |||
matrix[2][1] = 'X'; | |||
full[7] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[7] == 1 || full[7] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 9) | |||
{ | |||
if (full[8] == 0) | |||
{ | |||
matrix[2][2] = 'X'; | |||
full[8] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[8] == 1 || full[8] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
} | |||
} | |||
int playerwin(){ | |||
if (full[0] ==1 && full[1] ==1 && full[2] == 1) | |||
return 1; | |||
else if (full[3] == 1 && full[4] == 1 && full[5] == 1) | |||
return 1; | |||
else if (full[6] == 1 && full[7] == 1 && full[8] == 1) | |||
return 1; | |||
else if (full[0] == 1 && full[3] == 1 && full[6] == 1) | |||
return 1; | |||
else if (full[1] == 1 && full[4] == 1 && full[7] == 1) | |||
return 1; | |||
else if (full[2] == 1 && full[5] == 1 && full[8] == 1) | |||
return 1; | |||
else if (full[0] == 1 && full[4] == 1 && full[8] == 1) | |||
return 1; | |||
else if (full[2] == 1 && full[4] == 1 && full[6] == 1) | |||
return 1; | |||
} | |||
int computerwin(){ | |||
if (full[0] == 2 && full[1] == 2 && full[2] == 2) | |||
return 1; | |||
else if (full[3] == 2 && full[4] == 2 && full[5] == 2) | |||
return 1; | |||
else if (full[6] == 2 && full[7] == 2 && full[8] == 2) | |||
return 1; | |||
else if (full[0] == 2 && full[3] == 2 && full[6] == 2) | |||
return 1; | |||
else if (full[1] == 2 && full[4] == 2 && full[7] == 2) | |||
return 1; | |||
else if (full[2] == 2 && full[5] == 2 && full[8] == 2) | |||
return 1; | |||
else if (full[0] == 2 && full[4] == 2 && full[8] == 2) | |||
return 1; | |||
else if (full[2] == 2 && full[4] == 2 && full[6] == 2) | |||
return 1; | |||
} | |||
int draw() | |||
{ | |||
if (full[0] != 0 && full[1] != 0 && full[2] != 0 && full[3] != 0 && full[4] != 0 && full[5] != 0 && full[6] != 0 && full[7] != 0 && full[8] != 0) | |||
{ | |||
return 1; | |||
} | |||
} | |||
void hardcomputerturn() | |||
{ | |||
int place = 0; | |||
int computerturnfinish = 0; | |||
for (; computerturnfinish != 1;){ | |||
place = rand() % ((9 - 1) + 1) + 1; | |||
if (attack() == 1) | |||
{ | |||
computerturnfinish = 1; | |||
break; | |||
} | |||
else if (protect() == 1) | |||
{ | |||
computerturnfinish = 1; | |||
break; | |||
} | |||
if (place == 1) | |||
{ | |||
if (full[0] == 0) | |||
{ | |||
matrix[0][0] = 'X'; | |||
full[0] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[0] == 1 || full[0] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 2) | |||
{ | |||
if (full[1] == 0) | |||
{ | |||
matrix[0][1] = 'X'; | |||
full[1] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[1] == 1 || full[1] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 3) | |||
{ | |||
if (full[2] == 0) | |||
{ | |||
matrix[0][2] = 'X'; | |||
full[2] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[2] == 1 || full[2] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 4) | |||
{ | |||
if (full[3] == 0) | |||
{ | |||
matrix[1][0] = 'X'; | |||
full[3] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[3] == 1 || full[3] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 5) | |||
{ | |||
if (full[4] == 0) | |||
{ | |||
matrix[1][1] = 'X'; | |||
full[4] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[4] == 1 || full[4] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 6) | |||
{ | |||
if (full[5] == 0) | |||
{ | |||
matrix[1][2] = 'X'; | |||
full[5] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[5] == 1 || full[5] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 7) | |||
{ | |||
if (full[6] == 0) | |||
{ | |||
matrix[2][0] = 'X'; | |||
full[6] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[6] == 1 || full[6] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 8) | |||
{ | |||
if (full[7] == 0) | |||
{ | |||
matrix[2][1] = 'X'; | |||
full[7] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[7] == 1 || full[7] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
else if (place == 9) | |||
{ | |||
if (full[8] == 0) | |||
{ | |||
matrix[2][2] = 'X'; | |||
full[8] = 2; | |||
computerturnfinish = 1; | |||
} | |||
else if (full[8] == 1 || full[8] == 2) | |||
{ | |||
continue; | |||
} | |||
} | |||
} | |||
} | |||
int attack() | |||
{ | |||
if ((full[0] ==2 && full[1] ==2) &&full[2]==0) | |||
{ | |||
full[2] = 2; | |||
matrix[0][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[0] == 2 && full[2] == 2) && full[1] == 0) | |||
{ | |||
full[1] = 2; | |||
matrix[0][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[1] == 2 && full[2] == 2) && full[0] == 0) | |||
{ | |||
full[0] = 2; | |||
matrix[0][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[3] == 2 && full[4] == 2) && full[5] == 0) | |||
{ | |||
full[5] = 2; | |||
matrix[1][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[3] == 2 && full[5] == 2) && full[4] == 0) | |||
{ | |||
full[4] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[5] == 2 && full[4] == 2) && full[3] == 0) | |||
{ | |||
full[3] = 2; | |||
matrix[1][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[6] == 2 && full[7] == 2) && full[8] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[6] == 2 && full[8] == 2) && full[7] == 0) | |||
{ | |||
full[7] = 2; | |||
matrix[2][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[8] == 2 && full[7] == 2) && full[6] == 0) | |||
{ | |||
full[6] = 2; | |||
matrix[2][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[0] == 2 && full[3] == 2) && full[6] == 0) | |||
{ | |||
full[6] = 2; | |||
matrix[2][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[0] == 2 && full[6] == 2) && full[3] == 0) | |||
{ | |||
full[3] = 2; | |||
matrix[1][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[6] == 2 && full[3] == 2) && full[3] == 0) | |||
{ | |||
full[3] = 2; | |||
matrix[0][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[1] == 2 && full[4] == 2) && full[7] == 0) | |||
{ | |||
full[7] = 2; | |||
matrix[2][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[1] == 2 && full[7] == 2) && full[4] == 0) | |||
{ | |||
full[4] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[7] == 2 && full[4] == 2) && full[1] == 0) | |||
{ | |||
full[1] = 2; | |||
matrix[0][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[2] == 2 && full[5] == 2) && full[8] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[2] == 2 && full[8] == 2) && full[5] == 0) | |||
{ | |||
full[5] = 2; | |||
matrix[1][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[8] == 2 && full[5] == 2) && full[2] == 0) | |||
{ | |||
full[2] = 2; | |||
matrix[0][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[0] == 2 && full[4] == 2)&& full[8] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][2] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[0] == 2 && full[8] == 2)&& full[4] == 0) | |||
{ | |||
full[4] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[8] == 2 && full[4] == 2) && full[0] == 0) | |||
{ | |||
full[0] = 2; | |||
matrix[0][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[2] == 2 && full[4] == 2) && full[6] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][0] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[2] == 2 && full[6] == 2)&& full[4] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if ((full[6] == 2 && full[4] == 2) && full[2] == 0) | |||
{ | |||
full[2] = 2; | |||
matrix[0][2] = 'X'; | |||
return 1; | |||
} | |||
else | |||
{ | |||
return 0; | |||
} | |||
} | |||
int protect() | |||
{ | |||
if (full[0] == 1 && full[1] == 1 && full[2] == 0) | |||
{ | |||
full[2] = 2; | |||
matrix[0][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[0] == 1 && full[2] == 1 && full[1] == 0) | |||
{ | |||
full[1] = 2; | |||
matrix[0][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[1] == 1 && full[2] == 1 && full[0] == 0) | |||
{ | |||
full[0] = 2; | |||
matrix[0][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[3] == 1 && full[4] == 1 && full[5] == 0) | |||
{ | |||
full[5] = 2; | |||
matrix[1][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[3] == 1 && full[5] == 1 && full[4] == 0) | |||
{ | |||
full[4] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[5] == 1 && full[4] == 1 && full[3] == 0) | |||
{ | |||
full[3] = 2; | |||
matrix[1][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[6] == 1 && full[7] == 1 && full[8] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[6] == 1 && full[8] == 1 && full[7] == 0) | |||
{ | |||
full[7] = 2; | |||
matrix[2][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[8] == 1 && full[7] == 1 && full[6] == 0) | |||
{ | |||
full[6] = 2; | |||
matrix[2][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[0] == 1 && full[3] == 1 && full[6] == 0) | |||
{ | |||
full[6] = 2; | |||
matrix[2][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[0] == 1 && full[6] == 1 && full[3] == 0) | |||
{ | |||
full[3] = 2; | |||
matrix[1][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[6] == 1 && full[3] == 1 && full[3] == 0) | |||
{ | |||
full[3] = 2; | |||
matrix[0][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[1] == 1 && full[4] == 1 && full[7] == 0) | |||
{ | |||
full[7] = 2; | |||
matrix[2][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[1] == 1 && full[7] == 1 && full[4] == 0) | |||
{ | |||
full[4] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[7] == 1 && full[4] == 1 && full[1] == 0) | |||
{ | |||
full[1] = 2; | |||
matrix[0][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[2] == 1 && full[5] == 1 && full[8] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[2] == 1 && full[8] == 1 && full[5] == 0) | |||
{ | |||
full[5] = 2; | |||
matrix[1][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[8] == 1 && full[5] == 1 && full[2] == 0) | |||
{ | |||
full[2] = 2; | |||
matrix[0][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[0] == 1 && full[4] == 1 && full[8] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][2] = 'X'; | |||
return 1; | |||
} | |||
else if (full[0] == 1 && full[8] == 1 && full[4] == 0) | |||
{ | |||
full[4] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[8] == 1 && full[4] == 1 && full[0] == 0) | |||
{ | |||
full[0] = 2; | |||
matrix[0][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[2] == 1 && full[4] == 1 && full[6] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[2][0] = 'X'; | |||
return 1; | |||
} | |||
else if (full[2] == 1 && full[6] == 1 && full[4] == 0) | |||
{ | |||
full[8] = 2; | |||
matrix[1][1] = 'X'; | |||
return 1; | |||
} | |||
else if (full[6] == 1 && full[4] == 1 && full[2] == 0) | |||
{ | |||
full[2] = 2; | |||
matrix[0][2] = 'X'; | |||
return 1; | |||
} | |||
else | |||
{ | |||
return 0; | |||
} | |||
} | |||
=== 정창민 === | === 정창민 === | ||
Revision as of 10:33, 30 May 2015
참여자
| 강사 | 반페이지 | 학생 | ||
| 장우진 | 새싹교실/2015/새벽반 /새벽반 | 박성훈 | 조원희 | 정창민 |
| O | O | X |
진행상황
과제
박성훈
#include <time.h>
#include <stdlib.h>
void playerturn();
void computerturn();
void hardcomputerturn();
int attack();
int protect();
int playerwin();
int computerwin();
int draw();
int full[9] = { 0, };
char matrix[3][3] = { '1', '2', '3', '4', '5', '6', '7', '8', '9' };
int main(){
int a = 0;
int first;
int level;
int levelfirst;
int replay;
srand((unsigned)time(NULL));
printf("난이도를 골라주세요. 1.easy 2.hard\n");
scanf("%d", &level);
printf("누가 먼저 할껀가요? 1.사람 2. 컴퓨터\n");
scanf("%d", &first);
if (level == 1 && first == 1)
levelfirst = 1;
else if (level == 1 && first == 2)
levelfirst = 2;
else if (level == 2 && first == 1)
levelfirst = 3;
else
levelfirst = 4;
system("cls");
for (;;){
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]);
printf("└─┴─┴─┘\n");
if (levelfirst == 1)
{
playerturn();
levelfirst = 2;
}
else if (levelfirst == 2)
{
computerturn();
levelfirst = 1;
}
else if (levelfirst == 3)
{
playerturn();
levelfirst = 4;
}
else if (levelfirst == 4)
{
if (full[4] == 0)
{
matrix[1][1] = 'X';
full[4] = 2;
levelfirst = 3;
}
else
{
hardcomputerturn();
levelfirst = 3;
}
}
if (playerwin() == 1){
system("cls");
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]);
printf("└─┴─┴─┘\n");
printf("YOU WIN!!!\n");
break;
}
if (computerwin() == 1){
system("cls");
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]);
printf("└─┴─┴─┘\n");
printf("You lose...\n");
break;
}
if (draw() == 1){
system("cls");
printf("┌─┬─┬─┐\n");
printf("│%c │%c │%c │\n", matrix[0][0], matrix[0][1], matrix[0][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[1][0], matrix[1][1], matrix[1][2]);
printf("├─┼─┼─┤\n");
printf("│%c │%c │%c │\n", matrix[2][0], matrix[2][1], matrix[2][2]);
printf("└─┴─┴─┘\n");
printf("Draw\n");
break;
}
system("cls");
}
return 0;
}
void playerturn()
{
int place = 0;
int playerturnfinish = 0;
printf("번호를 고르시오.\n");
for (; playerturnfinish != 1;){
scanf("%d", &place);
if (place == 1)
{
if (full[0] == 0)
{
matrix[0][0] = 'O';
full[0] = 1;
playerturnfinish = 1;
}
else if (full[0] == 1 || full[0] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 2)
{
if (full[1] == 0)
{
matrix[0][1] = 'O';
full[1] = 1;
playerturnfinish = 1;
}
else if (full[1] == 1 || full[1] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 3)
{
if (full[2] == 0)
{
matrix[0][2] = 'O';
full[2] = 1;
playerturnfinish = 1;
}
else if (full[2] == 1 || full[2] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 4)
{
if (full[3] == 0)
{
matrix[1][0] = 'O';
full[3] = 1;
playerturnfinish = 1;
}
else if (full[3] == 1 || full[3] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 5)
{
if (full[4] == 0)
{
matrix[1][1] = 'O';
full[4] = 1;
playerturnfinish = 1;
}
else if (full[4] == 1 || full[4] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 6)
{
if (full[5] == 0)
{
matrix[1][2] = 'O';
full[5] = 1;
playerturnfinish = 1;
}
else if (full[5] == 1 || full[5] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 7)
{
if (full[6] == 0)
{
matrix[2][0] = 'O';
full[6] = 1;
playerturnfinish = 1;
}
else if (full[6] == 1 || full[6] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 8)
{
if (full[7] == 0)
{
matrix[2][1] = 'O';
full[7] = 1;
playerturnfinish = 1;
}
else if (full[7] == 1 || full[7] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
else if (place == 9)
{
if (full[8] == 0)
{
matrix[2][2] = 'O';
full[8] = 1;
playerturnfinish = 1;
}
else if (full[8] == 1 || full[8] == 2)
{
printf("이미 기호가 존재합니다. 다른 번호를 눌러주세요.\n");
continue;
}
}
}
}
void computerturn()
{
int place = 0;
int computerturnfinish = 0;
for (; computerturnfinish != 1;){
place = rand() % ((9 - 1) + 1)+1;
if (place == 1)
{
if (full[0] == 0)
{
matrix[0][0] = 'X';
full[0] = 2;
computerturnfinish = 1;
}
else if (full[0] == 1 || full[0] == 2)
{
continue;
}
}
else if (place == 2)
{
if (full[1] == 0)
{
matrix[0][1] = 'X';
full[1] = 2;
computerturnfinish = 1;
}
else if (full[1] == 1 || full[1] == 2)
{
continue;
}
}
else if (place == 3)
{
if (full[2] == 0)
{
matrix[0][2] = 'X';
full[2] = 2;
computerturnfinish = 1;
}
else if (full[2] == 1 || full[2] == 2)
{
continue;
}
}
else if (place == 4)
{
if (full[3] == 0)
{
matrix[1][0] = 'X';
full[3] = 2;
computerturnfinish = 1;
}
else if (full[3] == 1 || full[3] == 2)
{
continue;
}
}
else if (place == 5)
{
if (full[4] == 0)
{
matrix[1][1] = 'X';
full[4] = 2;
computerturnfinish = 1;
}
else if (full[4] == 1 || full[4] == 2)
{
continue;
}
}
else if (place == 6)
{
if (full[5] == 0)
{
matrix[1][2] = 'X';
full[5] = 2;
computerturnfinish = 1;
}
else if (full[5] == 1 || full[5] == 2)
{
continue;
}
}
else if (place == 7)
{
if (full[6] == 0)
{
matrix[2][0] = 'X';
full[6] = 2;
computerturnfinish = 1;
}
else if (full[6] == 1 || full[6] == 2)
{
continue;
}
}
else if (place == 8)
{
if (full[7] == 0)
{
matrix[2][1] = 'X';
full[7] = 2;
computerturnfinish = 1;
}
else if (full[7] == 1 || full[7] == 2)
{
continue;
}
}
else if (place == 9)
{
if (full[8] == 0)
{
matrix[2][2] = 'X';
full[8] = 2;
computerturnfinish = 1;
}
else if (full[8] == 1 || full[8] == 2)
{
continue;
}
}
}
}
int playerwin(){
if (full[0] ==1 && full[1] ==1 && full[2] == 1)
return 1;
else if (full[3] == 1 && full[4] == 1 && full[5] == 1)
return 1;
else if (full[6] == 1 && full[7] == 1 && full[8] == 1)
return 1;
else if (full[0] == 1 && full[3] == 1 && full[6] == 1)
return 1;
else if (full[1] == 1 && full[4] == 1 && full[7] == 1)
return 1;
else if (full[2] == 1 && full[5] == 1 && full[8] == 1)
return 1;
else if (full[0] == 1 && full[4] == 1 && full[8] == 1)
return 1;
else if (full[2] == 1 && full[4] == 1 && full[6] == 1)
return 1;
}
int computerwin(){
if (full[0] == 2 && full[1] == 2 && full[2] == 2)
return 1;
else if (full[3] == 2 && full[4] == 2 && full[5] == 2)
return 1;
else if (full[6] == 2 && full[7] == 2 && full[8] == 2)
return 1;
else if (full[0] == 2 && full[3] == 2 && full[6] == 2)
return 1;
else if (full[1] == 2 && full[4] == 2 && full[7] == 2)
return 1;
else if (full[2] == 2 && full[5] == 2 && full[8] == 2)
return 1;
else if (full[0] == 2 && full[4] == 2 && full[8] == 2)
return 1;
else if (full[2] == 2 && full[4] == 2 && full[6] == 2)
return 1;
}
int draw()
{
if (full[0] != 0 && full[1] != 0 && full[2] != 0 && full[3] != 0 && full[4] != 0 && full[5] != 0 && full[6] != 0 && full[7] != 0 && full[8] != 0)
{
return 1;
}
}
void hardcomputerturn()
{
int place = 0;
int computerturnfinish = 0;
for (; computerturnfinish != 1;){
place = rand() % ((9 - 1) + 1) + 1;
if (attack() == 1)
{
computerturnfinish = 1;
break;
}
else if (protect() == 1)
{
computerturnfinish = 1;
break;
}
if (place == 1)
{
if (full[0] == 0)
{
matrix[0][0] = 'X';
full[0] = 2;
computerturnfinish = 1;
}
else if (full[0] == 1 || full[0] == 2)
{
continue;
}
}
else if (place == 2)
{
if (full[1] == 0)
{
matrix[0][1] = 'X';
full[1] = 2;
computerturnfinish = 1;
}
else if (full[1] == 1 || full[1] == 2)
{
continue;
}
}
else if (place == 3)
{
if (full[2] == 0)
{
matrix[0][2] = 'X';
full[2] = 2;
computerturnfinish = 1;
}
else if (full[2] == 1 || full[2] == 2)
{
continue;
}
}
else if (place == 4)
{
if (full[3] == 0)
{
matrix[1][0] = 'X';
full[3] = 2;
computerturnfinish = 1;
}
else if (full[3] == 1 || full[3] == 2)
{
continue;
}
}
else if (place == 5)
{
if (full[4] == 0)
{
matrix[1][1] = 'X';
full[4] = 2;
computerturnfinish = 1;
}
else if (full[4] == 1 || full[4] == 2)
{
continue;
}
}
else if (place == 6)
{
if (full[5] == 0)
{
matrix[1][2] = 'X';
full[5] = 2;
computerturnfinish = 1;
}
else if (full[5] == 1 || full[5] == 2)
{
continue;
}
}
else if (place == 7)
{
if (full[6] == 0)
{
matrix[2][0] = 'X';
full[6] = 2;
computerturnfinish = 1;
}
else if (full[6] == 1 || full[6] == 2)
{
continue;
}
}
else if (place == 8)
{
if (full[7] == 0)
{
matrix[2][1] = 'X';
full[7] = 2;
computerturnfinish = 1;
}
else if (full[7] == 1 || full[7] == 2)
{
continue;
}
}
else if (place == 9)
{
if (full[8] == 0)
{
matrix[2][2] = 'X';
full[8] = 2;
computerturnfinish = 1;
}
else if (full[8] == 1 || full[8] == 2)
{
continue;
}
}
}
}
int attack()
{
if ((full[0] ==2 && full[1] ==2) &&full[2]==0)
{
full[2] = 2;
matrix[0][2] = 'X';
return 1;
}
else if ((full[0] == 2 && full[2] == 2) && full[1] == 0)
{
full[1] = 2;
matrix[0][1] = 'X';
return 1;
}
else if ((full[1] == 2 && full[2] == 2) && full[0] == 0)
{
full[0] = 2;
matrix[0][0] = 'X';
return 1;
}
else if ((full[3] == 2 && full[4] == 2) && full[5] == 0)
{
full[5] = 2;
matrix[1][2] = 'X';
return 1;
}
else if ((full[3] == 2 && full[5] == 2) && full[4] == 0)
{
full[4] = 2;
matrix[1][1] = 'X';
return 1;
}
else if ((full[5] == 2 && full[4] == 2) && full[3] == 0)
{
full[3] = 2;
matrix[1][0] = 'X';
return 1;
}
else if ((full[6] == 2 && full[7] == 2) && full[8] == 0)
{
full[8] = 2;
matrix[2][2] = 'X';
return 1;
}
else if ((full[6] == 2 && full[8] == 2) && full[7] == 0)
{
full[7] = 2;
matrix[2][1] = 'X';
return 1;
}
else if ((full[8] == 2 && full[7] == 2) && full[6] == 0)
{
full[6] = 2;
matrix[2][0] = 'X';
return 1;
}
else if ((full[0] == 2 && full[3] == 2) && full[6] == 0)
{
full[6] = 2;
matrix[2][0] = 'X';
return 1;
}
else if ((full[0] == 2 && full[6] == 2) && full[3] == 0)
{
full[3] = 2;
matrix[1][0] = 'X';
return 1;
}
else if ((full[6] == 2 && full[3] == 2) && full[3] == 0)
{
full[3] = 2;
matrix[0][0] = 'X';
return 1;
}
else if ((full[1] == 2 && full[4] == 2) && full[7] == 0)
{
full[7] = 2;
matrix[2][1] = 'X';
return 1;
}
else if ((full[1] == 2 && full[7] == 2) && full[4] == 0)
{
full[4] = 2;
matrix[1][1] = 'X';
return 1;
}
else if ((full[7] == 2 && full[4] == 2) && full[1] == 0)
{
full[1] = 2;
matrix[0][1] = 'X';
return 1;
}
else if ((full[2] == 2 && full[5] == 2) && full[8] == 0)
{
full[8] = 2;
matrix[2][2] = 'X';
return 1;
}
else if ((full[2] == 2 && full[8] == 2) && full[5] == 0)
{
full[5] = 2;
matrix[1][2] = 'X';
return 1;
}
else if ((full[8] == 2 && full[5] == 2) && full[2] == 0)
{
full[2] = 2;
matrix[0][2] = 'X';
return 1;
}
else if ((full[0] == 2 && full[4] == 2)&& full[8] == 0)
{
full[8] = 2;
matrix[2][2] = 'X';
return 1;
}
else if ((full[0] == 2 && full[8] == 2)&& full[4] == 0)
{
full[4] = 2;
matrix[1][1] = 'X';
return 1;
}
else if ((full[8] == 2 && full[4] == 2) && full[0] == 0)
{
full[0] = 2;
matrix[0][0] = 'X';
return 1;
}
else if ((full[2] == 2 && full[4] == 2) && full[6] == 0)
{
full[8] = 2;
matrix[2][0] = 'X';
return 1;
}
else if ((full[2] == 2 && full[6] == 2)&& full[4] == 0)
{
full[8] = 2;
matrix[1][1] = 'X';
return 1;
}
else if ((full[6] == 2 && full[4] == 2) && full[2] == 0)
{
full[2] = 2;
matrix[0][2] = 'X';
return 1;
}
else
{
return 0;
}
}
int protect()
{
if (full[0] == 1 && full[1] == 1 && full[2] == 0)
{
full[2] = 2;
matrix[0][2] = 'X';
return 1;
}
else if (full[0] == 1 && full[2] == 1 && full[1] == 0)
{
full[1] = 2;
matrix[0][1] = 'X';
return 1;
}
else if (full[1] == 1 && full[2] == 1 && full[0] == 0)
{
full[0] = 2;
matrix[0][0] = 'X';
return 1;
}
else if (full[3] == 1 && full[4] == 1 && full[5] == 0)
{
full[5] = 2;
matrix[1][2] = 'X';
return 1;
}
else if (full[3] == 1 && full[5] == 1 && full[4] == 0)
{
full[4] = 2;
matrix[1][1] = 'X';
return 1;
}
else if (full[5] == 1 && full[4] == 1 && full[3] == 0)
{
full[3] = 2;
matrix[1][0] = 'X';
return 1;
}
else if (full[6] == 1 && full[7] == 1 && full[8] == 0)
{
full[8] = 2;
matrix[2][2] = 'X';
return 1;
}
else if (full[6] == 1 && full[8] == 1 && full[7] == 0)
{
full[7] = 2;
matrix[2][1] = 'X';
return 1;
}
else if (full[8] == 1 && full[7] == 1 && full[6] == 0)
{
full[6] = 2;
matrix[2][0] = 'X';
return 1;
}
else if (full[0] == 1 && full[3] == 1 && full[6] == 0)
{
full[6] = 2;
matrix[2][0] = 'X';
return 1;
}
else if (full[0] == 1 && full[6] == 1 && full[3] == 0)
{
full[3] = 2;
matrix[1][0] = 'X';
return 1;
}
else if (full[6] == 1 && full[3] == 1 && full[3] == 0)
{
full[3] = 2;
matrix[0][0] = 'X';
return 1;
}
else if (full[1] == 1 && full[4] == 1 && full[7] == 0)
{
full[7] = 2;
matrix[2][1] = 'X';
return 1;
}
else if (full[1] == 1 && full[7] == 1 && full[4] == 0)
{
full[4] = 2;
matrix[1][1] = 'X';
return 1;
}
else if (full[7] == 1 && full[4] == 1 && full[1] == 0)
{
full[1] = 2;
matrix[0][1] = 'X';
return 1;
}
else if (full[2] == 1 && full[5] == 1 && full[8] == 0)
{
full[8] = 2;
matrix[2][2] = 'X';
return 1;
}
else if (full[2] == 1 && full[8] == 1 && full[5] == 0)
{
full[5] = 2;
matrix[1][2] = 'X';
return 1;
}
else if (full[8] == 1 && full[5] == 1 && full[2] == 0)
{
full[2] = 2;
matrix[0][2] = 'X';
return 1;
}
else if (full[0] == 1 && full[4] == 1 && full[8] == 0)
{
full[8] = 2;
matrix[2][2] = 'X';
return 1;
}
else if (full[0] == 1 && full[8] == 1 && full[4] == 0)
{
full[4] = 2;
matrix[1][1] = 'X';
return 1;
}
else if (full[8] == 1 && full[4] == 1 && full[0] == 0)
{
full[0] = 2;
matrix[0][0] = 'X';
return 1;
}
else if (full[2] == 1 && full[4] == 1 && full[6] == 0)
{
full[8] = 2;
matrix[2][0] = 'X';
return 1;
}
else if (full[2] == 1 && full[6] == 1 && full[4] == 0)
{
full[8] = 2;
matrix[1][1] = 'X';
return 1;
}
else if (full[6] == 1 && full[4] == 1 && full[2] == 0)
{
full[2] = 2;
matrix[0][2] = 'X';
return 1;
}
else
{
return 0;
}
}