我们都玩的三子棋:
程序原理:
程序共有4个子程序组成:
1. void start(char arr[ROWS][COLS], int row, int col) //程序开始显示游戏界面:
2. void display(char arr[ROWS][COLS], int row, int col); //玩家下棋:
3. void complay(char arr[ROWS][COLS], int row, in col); //电脑下棋
4. int check_win(char arr[ROWS][COLS], int row, int col); // 判断有没有连成功的:
程序代码:
game.h:
#ifndef __GAME_H_
#define __GAME_H_
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ROWS 3
#define COLS 3
void start(char arr[ROWS][COLS], int row, int col);
void display(char arr[ROWS][COLS], int row, int col);
void complay(char arr[ROWS][COLS], int row, int col);
int check_win(char arr[ROWS][COLS], int row, int col);
#endif //__GAME_H__
game.c :
#include "game.h"
void start(char arr[ROWS][COLS], int row, int col )
{
int i = 0;
for(i=0; i<row; i++)
{
int j = 0;
for(; j<col; j++)
{
arr[i][j] = ' ';
}
}
for(i=0; i<row; i++)
{
printf(" %c | %c | %c\n",arr[i][0],arr[i][1],arr[i][2]);
if(i==2)
{
break;
}
printf("---|-- -|---\n");
}
}
void display(char arr[ROWS][COLS], int row, int col)
{
int i = 0;
printf("请玩家选择坐标:>");
do{
scanf("%d%d",&row,&col);
row--;
col--;
if(arr[row][col] == ' ')
{
arr[row][col] = '0';
for(i=0; i<ROWS; i++)
{
printf(" %c | %c | %c\n",arr[i][0],arr[i][1],arr[i][2]);
if(i==2)
{
break;
}
printf("---|-- -|---\n");
}
break;
}
}while(1);
}
void complay(char arr[ROWS][COLS], int row, int col)
{
int i = 0;
printf("电脑选择坐标:>\n");
do{
row = rand()%3;
col = rand()%3;
if(arr[row][col] == ' ')
{
arr[row][col] = 'X';
for(i=0; i<ROWS; i++)
{
printf(" %c | %c | %c\n",arr[i][0],arr[i][1],arr[i][2]);
if(i==2)
{
break;
}
printf("---|-- -|---\n");
}
break;
}
}while(1);
}
int check_win(char arr[ROWS][COLS], int row, int col)
{
int i = 0;
for(; i<ROWS; i++)
{
if((arr[i][0] == arr[i][1])&&(arr[i][2] == arr[i][1])&&(arr[i][0]!=' '))
{
return 1;
}
}
for(; i<COLS; i++)
{
if((arr[0][i] == arr[1][i])&&(arr[2][i] == arr[1][i])&&(arr[0][i]!=' '))
{
return 1;
}
}
if((arr[0][0] == arr[1][1])&&(arr[1][1] == arr[2][2])&&(arr[1][1]!=' '))
{
return 1;
}
if((arr[2][0] == arr[1][1])&&(arr[1][1] == arr[0][2])&&(arr[1][1]!=' '))
{
return 1;
}
return 0;
}
test.c :#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h"
void mus(void)
{
printf("***********************************\n");
printf("**********1. game 2. break********\n");
printf("***********************************\n");
}
void game(void)
{
int tmp = 0;
int i = 0;
char arr[ROWS][COLS] = {0};
start(arr,ROWS,COLS );
do
{
display(arr,ROWS,COLS);
tmp = check_win(arr,ROWS,COLS);
if(tmp == 1)
{
tmp = 1;
break;
}
i++;
if(i>=9)
{
break;
}
complay(arr,ROWS,COLS);
tmp = check_win(arr,ROWS,COLS);
if(tmp == 1)
{
tmp = 0;
break;
}
i++;
if(i>=9)
{
break;
}
} while (1);
if(tmp == 1)
{
printf("恭喜:你赢了\n");
}
else if(tmp == 0)
{
printf("骚年,你要努力了\n");
}
else if(i ==9)
{
printf("平局");
}
}
int main()
{
int input = 0;
do
{
mus();
printf("请选择:>");
scanf("%d",&input);
if(input == 1)
{
game();
}
else if(input == 0)
{
break;
}
else
{
printf("输入有误:>\n");
}
} while (1);
return 0;
}