C语言实现简易三子棋
2017-04-18 18:16
513 查看
game.h 文件中代码
game.c 中代码
test.c中代码
#ifndef __GAME_H__ #define __GAME_H__ #include <stdio.h> #include <stdlib.h> #include <time.h> //定义棋盘 #define ROWS 3 #define COLS 3 //打印菜单 void menu(void); //初始化棋盘 void init(char board[ROWS][COLS],int rows); //打印棋盘 void print(char board[ROWS][COLS],int rows); //玩游戏 void play(char board[ROWS][COLS], int rows); //玩家下 void player(char board[ROWS][COLS], int rows); //电脑下 void computer(char board[ROWS][COLS], int rows); //检查是否有人获胜 int checkwin(char board[ROWS][COLS], int rows); //判断棋盘是否已满 int checkboardfull(char board[ROWS][COLS], int rows); //判断并打印获胜结果 int printwin(char board[ROWS][COLS], int rows); #endif
game.c 中代码
#include "game.h" //菜单 void menu() { printf("****************************\n"); printf("*****1.play 0.exit*****\n"); printf("****************************\n"); } //初始化棋盘 void init(char board[ROWS][COLS], int rows) { int i, j; for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) board[i][j] = ' '; } } //打印棋盘 void print(char board[ROWS][COLS], int rows) { int i, j; for (i = 0; i < ROWS; i++) { for (j = 0; j < COLS; j++) { printf("%c", board[i][j]); if (j < 2) printf(" |"); } printf("\n"); if (i == 2) printf(" | | "); else printf("___|___|___"); printf("\n"); } } //玩家下棋 void player(char board[ROWS][COLS], int rows) { int x, y; while (1) { printf("玩家玩:"); printf(" 请输入坐标:"); scanf("%d %d",&x, &y); if (board[x - 1][y - 1] = ' ') { board[x - 1][y - 1] = '#'; break; } else printf("输入位置不合法\n"); } print(board, ROWS); } //电脑下棋 void computer(char board[ROWS][COLS], int rows) { int x, y; srand((unsigned)time(NULL));//生成随机数种子 while (1) { x = rand() % ROWS; y = rand() % COLS; if (board[x][y] == ' ') { board[x][y] = '%'; break; } } printf("电脑玩:\n"); print(board, ROWS); } //检查是否有人获胜并返回1 与0 int checkwin(char board[ROWS][COLS], int rows) { int i, j; for (i = 0; i < ROWS; i++) { if ((board[i][0] == board[i][1]) && (board[i][1] == board[i][2]) && (board[i][2] == '#')) return 1; if ((board[i][0] == board[i][1]) && (board[i][1] == board[i][2]) && (board[i][2] == '%')) return 0; } for (j = 0; j < COLS; j++) { if ((board[0][j] == board[1][j]) && (board[1][j] == board[2][j]) && (board[2][j] == '#')) return 1; if ((board[0][j] == board[1][j]) && (board[1][j] == board[2][j]) && (board[2][j] == '%')) return 0; } if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && (board[2][2] == '%')) return 0; if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]) && (board[2][2] == '#')) return 1; if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && (board[2][0] == '#')) return 1; if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]) && (board[2][0] == '%')) return 0; } //检查棋盘是否已满 没满返回0,满了返回1 int checkboardfull(char board[ROWS][COLS], int rows) { int i, j; for (i = 0; i < ROWS; i++) for (j = 0; j < COLS; j++) { if (board[i][j] == ' ') return 0; } return 1; } //打印获胜结果 int printwin(char board[ROWS][COLS], int rows) { int flag, ret; flag = checkwin(board, ROWS); if (flag == 1) { printf("玩家赢\n"); return 1; } else if (flag==0) { printf("电脑赢\n"); return 1; } ret = checkboardfull(board, ROWS); if (ret == 1) { printf("你好菜,平手\n"); return 1; } return 0; } //玩游戏 void play(char board[ROWS][COLS], int rows) { while (1) { player(board, rows); if (printwin(board, rows)) break; computer(board, rows); if (printwin(board, rows)) break; } }
test.c中代码
#include "game.h" int main() { int input; char board[ROWS][COLS]; menu( ); printf("请选择->:"); scanf("%d", &input); while (input) { init(board, ROWS);//初始化棋盘 print(board,ROWS);//打印棋盘 play(board, ROWS);//玩游戏 menu(); scanf("%d", &input); } printf("游戏结束\n"); return 0; }
相关文章推荐
- C语言实现简易版三子棋
- c语言实现简易三子棋游戏
- c语言简易实现linux终端
- 理解C语言(二) 堆的工作机制- 一个简易的动态内存管理器实现
- C语言"黑框框"下不忍直视的三子棋实现
- C语言实现三子棋
- 简易小游戏扫雷——C语言编程实现
- C语言链表实现的简易学生成绩管理系统
- 【C语言】用C语言实现三子棋游戏
- 【C语言】简易扫雷游戏——C语言实现
- 【C语言】实现一个好玩的三子棋
- 用c语言实现三子棋的游戏
- c语言实现小游戏_三子棋
- c语言小程序之三子棋小游戏的实现
- 三子棋游戏(c语言实现)
- C语言“黑框框”下简易扫雷实现
- 通过简单的C语言编程实现一个简易…
- C语言实现三子棋游戏
- 【C语言】简易实现八进制转十进制(最大四位数)
- 三子棋的C语言实现