C语言简单实现三子棋小游戏
2019-07-29 23:21
465 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44695386/article/details/97694331
游戏规则:
三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。游戏是在一个3*3的棋盘里面下棋的。只要有三个一样的连成一条线,就表示有一方胜出;如果下完了9个格子还没有玩家胜出,游戏为平局。
实现思路:
1.初始化棋盘数组
2.绘制棋盘
3.玩家下棋
4.电脑下棋
5.判断输赢
创建头文件game.h
#ifndef __GAME__H_ #define __GAME__H_ #define ROW 3 #include<stdio.h> #include<stdlib.h> void InitBoard(char board[][ROW],int row,int col,char set);//初始化棋盘为字符set void ShowBoard(char board[][ROW],int row,int col);//打印棋盘 void PlayerMove(char board[][ROW],int row,int col);//玩家下棋 char IsWin(char board[][ROW],int row,int col);//判断输赢 void ComputerMove(char board[][ROW],int row,int col);//电脑下棋 #endif
game.c函数的实现(函数功能)
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" //重置棋盘 void InitBoard(char board[][ROW],int row,int col,char set) { int i = 0; int j = 0; for(i = 0;i < row;i++) { for(j = 0;j < row;j++) { board[i][j] = set; } } } //打印棋盘 void ShowBoard(char board[][ROW],int row,int col) { int i = 0; int j = 0; for(i = 0;i < row;i++) { for(j = 0;j < col;j++) { printf(" %c ",board[i][j]); if(j < col-1) { printf("|"); } } printf("\n"); if(i < row-1) { for(j = 0;j < col;j++) { printf("---"); if(j < col-1) { printf("|"); } } printf("\n"); } } } //玩家操作 void PlayerMove(char board[][ROW],int row,int col) { int x =0 ; int y = 0; while(1)//8,9 { printf("玩家移动\n"); printf("请输入1-3的坐标:\n"); scanf("%d%d",&x,&y); //在棋盘范围内则进行判断是否被占用,若被占用则重新输入,若没被占用则置为'x' if(x >= 1 && x <= 3 && y >=1 && y <= 3) { if(board[x-1][y-1] == ' ') { board[x-1][y-1] = 'x'; break; } else { printf("位置已经被占用,请重新输入\n"); } } else { printf("坐标不合法\n"); } //2、坐标不合法 } } //判断棋盘是否下满,static修饰,只能在该.c文件中使用 static int IsFull(char board[][ROW],int row,int col) { int i = 0; int j = 0; for(i = 0;i < row;i++) { for(j = 0;j < col;j++) { if(board[i][j] == ' ') { return 0;//棋盘没有满 } } } return 1;//棋盘已满 } //判断输赢 char IsWin(char board[][ROW],int row,int col) { int i = 0; for(i = 0;i < row;i++) { //行相同 if(board[i][0]==board[i][1] && board[i][1]==board[i][2] &&board[i][0] != ' ') { return board[i][0]; } //列相同 if(board[0][i] == board[1][i] && board[1][i] == board[2][i] &&board[0][i] != ' ') { return board[0][i]; } //主对角线相同 if(board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ') { return board[0][0]; } //副对角线相同 if(board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[0][2] != ' ') { return board[0][2]; } if(IsFull(board,ROW,ROW)) { return 'Q';//平局 } } return ' ';//谁也没有赢 } void ComputerMove(char board[][ROW],int row,int col) { int x = 0; int y = 0; printf("电脑移动\n"); while(1) { x = rand() % ROW;//[0-3)随机值 y = rand() % ROW;//[0-3)随机值 if(board[x][y] == ' ') { board[x][y] = 'O';//判断该座标是否被占用,没有则置0 break; } } }
test.c主体功能的实现
#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h"//引入game.c文件,其中已经引入了程序所需要用到的头文件,所以不用再次重复引入,只要引入game.c即可 //打印游戏菜单 void menu() { printf("********************\n"); printf("***欢迎来到三子棋***\n"); printf("*******0.exit*******\n"); printf("*******1.play*******\n"); printf("********************\n"); } void game() { char ret = 0; char board[ROW][ROW]= {0};//先将3*3的棋盘初始化为全0 InitBoard(board,ROW,ROW,' ');//将棋盘置为空格 ShowBoard(board,ROW,ROW);//打印棋盘 while(1)//只要有一方胜出,结束循环 { PlayerMove(board,ROW,ROW);//玩家先下棋 ret = IsWin(board,ROW,ROW);//判断输赢 if(ret != ' ')//可能平局,可能一方胜出 { break; } ShowBoard(board,ROW,ROW);//展示棋盘 ComputerMove(board,ROW,ROW);//电脑出棋 ret = IsWin(board,ROW,ROW);//判断输赢 if(ret != ' ')//可能平局,可能一方胜出 { break; } ShowBoard(board,ROW,ROW); } if(ret == 'x')//判断ret { printf("玩家胜出\n"); } if(ret == ' O') { printf("电脑胜出\n"); } if(ret == 'Q') { printf("平局\n"); } } int main() { int input = 0;//用来存储用户输入的操作,从而确定玩家开始游戏还是退出 do { menu();//打印菜单 printf("请输入您的选择:-》"); scanf("%d",&input); switch(input) { case 1: printf("游戏开始\n"); game(); break; case 0: printf("游戏退出\n"); break; default: printf("请输入正确的操作\n"); break; } }while(input); return 0; }
运行结果
相关文章推荐
- 用C语言实现简单 三子棋(井字棋)小游戏
- 用C语言实现简单的三子棋小游戏
- C语言实现简单的三子棋小游戏
- C语言实现简单的三子棋小游戏
- C语言实现小游戏---三子棋
- c语言实现简单的三子棋
- c语言小程序之三子棋小游戏的实现
- C语言实现的一个简单的猜数小游戏
- 小游戏——三子棋(C语言实现)
- 用C语言实现三子棋小游戏
- 简单小游戏-剪刀石头布的c语言实现
- 用c语言实现的简单扫雷小游戏
- 用c语言简单实现三子棋游戏
- 【C】三子棋小游戏的简单实现
- 简单c语言小游戏实现原理
- 三子棋程序的简单实现(c语言)
- C语言实现三子棋小游戏
- 小游戏 | 井字棋(三子棋)的C语言实现
- c语言简单实现三子棋(五子棋)
- 用c语言实现三子棋小游戏