unfinished mode

master
Your Name 7 years ago
parent ba097ff791
commit a8ddbeb1bd

@ -89,8 +89,8 @@ void player_act(char arr[3][3]) //
scanf("%d,%d", &x, &y);
if(arr[--x][--y] == ' ')
{
arr[x][y] = 'O';
break;
arr[x][y] = 'O';
break;
}
else
{
@ -99,7 +99,7 @@ void player_act(char arr[3][3]) //
}
}
}
void computer_act(char arr[3][3]) //电脑行动
void computer_act_easy(char arr[3][3]) //电脑行动
{
srand((unsigned)time(NULL));//用系统时间初始化随机数种子
while (1)//无限循环直到遇到break退出
@ -113,3 +113,54 @@ void computer_act(char arr[3][3]) //
}
}
}
void mode()
{
printf("****************************\n");
printf("** 1. 简单模式 **\n");
printf("** 2. 困难模式 **\n");
printf("****************************\n");
}
void computer_act_hard(char arr[3][3])
{
int value[3][3];
int i, j, m, count_X, count_O, count_;
for(i = 0; i < 3; i++)
{
for(j = 0; j < 3; j++)
{
if(arr[i][j] == ' ')
{
if(i - j == 1 || j - i == 1) //不在对角线上的点
{
for(m = 0; m < 3; m++)
arr[i][m] == 'O' ? count_O++ : arr[i][m] == 'X' ? count_X++ : count_++;
if(count_X == 2) value[i][j] = 6;
else if(count_O == 2) value[i][j] = 5;
else if(count_X == 1 && count_ == 1) value[i][j] = 4;
else if(count_O == 1 && count_ == 1) value[i][j] = 3;
else if(count_ == 2) value[i][j] = 2;
else value[i][j] = 1;
count_O = count_X = count_ = 0;
for(m = 0; m < 3; m++)
arr[m][j] == 'O' ? count_O++ : arr[m][j] == 'X' ? count_X++ : count_++;
if(count_X == 2) value[i][j] = 6;
else if(count_O == 2) value[i][j] = 5;
else if(count_X == 1 && count_ == 1) value[i][j] = 4;
else if(count_O == 1 && count_ == 1) value[i][j] = 3;
else if(count_ == 2) value[i][j] = 2;
else value[i][j] = 1;
count_O = count_X = count_ = 0;
}
/*else if()
{
}*/
}
else
value[i][j] = 0;
}
}
}

@ -2,55 +2,79 @@
#include <time.h>
#include <stdlib.h>
#include "sanziqi.h"
#define computer_first 1
#define player_first 0
int main() //Ö÷º¯Êý
{
char arr[3][3];
char arr[3][3], ch;
while(1)
{
menu();
int i=0;
scanf("%d",&i);
if(i)
int i = 0;
scanf("%d", &i);
if(i == start_game)
{
int choice = 0;
mode();
init_board(arr);
print_board(arr);
if(whom_act()==computer_first)
if(scanf("%d", &choice) == 1)
{
while(i++<9)
switch(choice)
{
computer_act(arr);
case 1:
print_board(arr);
if(judge(arr)=='X') break;
player_act(arr);
print_board(arr);
if(judge(arr)=='O') break;
if(whom_act() == computer_first)
{
while(i++ < 9)
{
computer_act_easy(arr);
print_board(arr);
if(judge(arr) == 'X') break;
player_act(arr);
print_board(arr);
if(judge(arr) == 'O') break;
}
if(judge(arr) == 'O')
printf("你赢了。\n");
else if(judge(arr)=='X')
printf("你输了。\n");
else
printf("平局");
}
else
{
while(i++ < 9)
{
player_act(arr);
print_board(arr);
if(judge(arr) == 'O') break;
computer_act_easy(arr);
print_board(arr);
if(judge(arr) == 'X') break;
}
if(judge(arr) == 'O')
printf("你赢了。\n");
else if(judge(arr)=='X')
printf("你输了。\n");
else
printf("平局\n");
}
break;
case 2:
computer_act_hard(arr);
break;
default:
printf("wrong input请重新输入\n");
}
if(judge(arr)=='O')
printf("你赢了。\n");
else
printf("你输了。\n");
}
else
{
while(i++<9)
{
player_act(arr);
print_board(arr);
if(judge(arr)=='O') break;
computer_act(arr);
print_board(arr);
if(judge(arr)=='X') break;
}
if(judge(arr)=='O')
printf("你赢了。\n");
else
printf("你输了。\n");
while ((ch = getchar()) != EOF && ch != '\n');//清空缓存区防止scanf接收上次的非法输入从而死循环
printf("wrong input请重新输入\n");
}
}
else
else if(i == end_game)
break;
else
printf("wrong input请重新输入\n");
}
return 0;
}

@ -3,6 +3,11 @@
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define computer_first 1
#define player_first 0
#define start_game 1
#define end_game 0
void mode();
void init_board(char arr[3][3]); //初始化棋盘
@ -18,8 +23,9 @@ char judge(char arr[3][3]); //
void player_act(char arr[3][3]); //玩家行动
void computer_act(char arr[3][3]); //电脑行动
void computer_act_easy(char arr[3][3]); //电脑行动
void computer_act_hard(char arr[3][3]);
#endif // SANZIQI_H_INCLUDED

Loading…
Cancel
Save