1.新建项目三子棋

Dev C++实现三子棋_i++

2.新建game.c,game.h文件

Dev C++实现三子棋_#define_02

Dev C++实现三子棋_#include_03

3.

main.c代码

测试三子棋  

#include <stdio.h>

#include <stdlib.h>

#include "game.h"

void menu() {

printf("***************\n");

printf("*1.play 0.exit*\n");

printf("***************\n");

}  

//游戏的逻辑  

void game(){

int ret=0;

//数组-存放棋盘信息

char board[ROW][COL]={0};

//初始化棋盘

initboard(board, ROW, COL);  

//打印棋盘

displayboard(board, ROW, COL);  

//下棋

while(1){

 //玩家下棋

 playmove(board, ROW, COL);

 displayboard(board, ROW, COL);  

 //判断玩家是否赢

 ret=iswin(board, ROW, COL);  

 if(ret!='c'){

  break;

 }

 //电脑下棋  

 computermove(board, ROW, COL);

 displayboard(board, ROW, COL);  

       //判断电脑是否赢

    ret=iswin(board, ROW, COL);  

 if(ret!='c'){

  break;

 }    

}  

if(ret=='*'){

 printf("玩家win\n");

}else if(ret=='#'){

 printf("电脑win\n");

}else{

 printf("平局");  

}

}



void test() {

int input;

srand((unsigned int)time(NULL));//生成随机数  

do{

 menu();

 printf("请选择:>");

 scanf("%d", &input);

 switch (input) {

  case 1:

   game();

   break;

  case 0:

   printf("退出游戏");  

   break;

  default:

   printf("选择错误,请重新选择\n");

   break;

 }

}while(input);

}


int main() {

test();

return 0;

}

game.h代码

#define ROW 3

#define COL 3


#include <stdio.h>

#include <time.h>

#include <stdlib.h>


void initboard(char board[ROW][COL], int row, int col);

void displayboard(char board[ROW][COL], int row, int col);

void playmove(char board[ROW][COL], int row, int col);

void computermove(char board[ROW][COL], int row, int col);



char iswin(char board[ROW][COL], int row, int col);

//四种状态

//1.玩家赢  '*'  

//2.电脑赢  '#'  

//3.平局    'q'

//4.继续    'c'

game.c代码

#include "game.h"

void initboard(char board[ROW][COL], int row, int col) {

for(int i=0;i<ROW;i++){

 for(int j=0;j<COL;j++){

  board[i][j]=' ';

 

 }

}

}


void displayboard(char board[ROW][COL], int row, int col) {

int i=0;

for(i=0;i<row;i++){

 int j=0;

 for(j=0;j<col;j++){

  //1.打印一行的数据  

  printf(" %c ", board[i][j]);

  if(j<col-1)

  printf("|");

 }

 printf("\n");

 //2.打印分隔行  

 if(i<row-1){

  for(j=0;j<col;j++){

   printf("---");

   if(j<col-1)

    printf("|");

  }

   printf("\n");

  }

 }

}



void playmove(char board[ROW][COL], int row, int col) {

int x=0;

int y=0;

printf("玩家走:>\n");

while(1){

printf("请输入要下的坐标:>");  

scanf("%d %d", &x, &y);

//判断x,y坐标的合法性

   if(x>=1&&x<=row&&y>=1&&y<=col){

 if(board[x-1][y-1]==' '){

  board[x-1][y-1]='*';

  break;

 }else{

  printf("该坐标被占用\n");

 }

}

 else{

  printf("坐标非法,请重新输入!\n");

 }

}  

}  


void computermove(char board[ROW][COL], int row, int col) {

int x=0;

int y=0;

printf("电脑走:>\n");

   while(1){

 x=rand()%row;//使用rand函数,必须调用srand,srand只能调用一次  

 y=rand()%col;

 if(board[x][y]==' '){

  board[x][y]='#';

  break;

 }

}


}

int isfull(char board[ROW][COL], int row, int col) {

for(int i=0;i<row;i++){

 for(int j=0;j<col;j++){

  if(board[i][j]==' '){

   return 0;//没满  

  }

 }

}

return 1;//满了  

}


char iswin(char board[ROW][COL], int row, int col) {

//三行  

for(int i=0;i<row;i++){

 if(board[i][0]==board[i][1]&&board[i][1]==board[i][2]&&board[i][1]!=' '){

  return board[i][1];

 }

}

//三列  

for(int i=0;i<col;i++){

 if(board[0][i]==board[1][i]&&board[1][i]==board[2][i]&&board[1][i]!=' '){

  return board[1][i];

 }

}

//两个对角线  

if(board[0][0]==board[1][1]&&board[1][1]==board[2][2]&&board[1][1]!=' ')  

 return board[1][1];

if(board[2][0]==board[1][1]&&board[1][1]==board[0][2]&&board[1][1]!=' ')  

  return board[1][1];

//判断是否平局

if(1==isfull(board, ROW, COL)){

 return 'q';

}  

return 'c';  

}

4.测试

Dev C++实现三子棋_#define_04

5.简单的三子棋游戏就此实现