C语言编程实现三子棋
来源:互联网 发布:吉他教学软件 编辑:程序博客网 时间:2024/05/18 00:56
源码:
1.函数头:
#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#define ROW 3//棋盘初始化大小#define COL 3void init_board(char board[ROW][COL], int row, int col);//棋盘初始化void display_board(char board[ROW][COL], int row, int col);//棋盘打印void player_move(char board[ROW][COL], int row, int col);void computer_move(char board[ROW][COL], int row, int col);char check_win(char board[ROW][COL], int row, int col);#endif //__GAME_H__
2.主函数:
#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 };//棋盘数组srand((unsigned int)time(NULL));init_board(board, ROW, COL);while (1) //电脑先走,然后判断输赢,玩家走,接着判断输赢{computer_move(board, ROW, COL);if ((ret = check_win(board, ROW, COL)) != ' '){break;}display_board(board, ROW, COL);player_move(board, ROW, COL);if ((ret = check_win(board, ROW, COL)) != ' '){break;}display_board(board, ROW, COL);}if (ret == '*'){printf("you win!\n");}else if (ret == 'o'){printf("computer win!\n");}else if (ret == 'q'){printf("平局!");}display_board(board, ROW, COL);}int main(){int input = 0;do{menu();scanf("%d", &input);switch (input){case 0:break;case 1:game();break;default:printf("enter error! please enter again:\n");break;}}while(input);return 0;}
3.游戏函数主体:
#include "game.h"void init_board(char board[ROW][COL], int row, int col){memset(board, ' ', col*row*sizeof(char));//memset是以字节为单位,初始化内存块。当初始化一个字节单位的数组时,//可以用memset把每个数组单元初始化成任何你想要的值}void display_board(char board[ROW][COL], int row, int col){int i = 0;for (i = 0; i < row; i++){printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);if (i != 2){printf("---|---|---\n");}}}void player_move(char board[ROW][COL], int row, int col){int a = 0;int b = 0;while (1){printf("请输入坐标(a,b):\n");scanf("%d%d", &a, &b);a--;b--;if (((a >= 0) && (a <= 2)) &&((b >= 0) && (b <= 2))){if (board[a][b] == ' '){board[a][b] = '*';break;}else{printf("此处已落子!\n");}}else{printf("坐标错误!\n");}}}void computer_move(char board[ROW][COL], int row, int col){while (1){int a = rand() % row;int b = rand() % col;if (board[a][b] == ' '){board[a][b] = 'o';break;}}}static is_full(char board[ROW][COL], 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 check_win(char board[ROW][COL], 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][1] != ' '))return board[i][1];}for (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[0][2] == board[1][1])&& (board[1][1] == board[2][0])&& (board[1][1] != ' '))return board[1][1];if (is_full(board, row, col)){return 'q';}return ' ';}
阅读全文
0 0
- C语言编程实现三子棋
- c语言编程实现简单三子棋游戏
- c语言编程实现简单三子棋游戏
- C语言编程实现grep
- 龙格库塔C 语言编程实现
- C#编程实现多语言WinForm程序
- C语言编程实现图书检索功能
- C语言 实现 面向对象编程 OOC
- C语言实现的Socket编程
- c语言实现面向对象编程
- http协议C语言编程实现
- C语言实现面向对象编程
- 用C语言实现面向对象编程
- C语言编程实现西西弗斯串
- 用 C 语言实现面向对象编程
- C语言 实现 面向对象编程 OOC
- c语言编程实现数字全排列
- c语言实现面向对象编程
- Linux平台上SQLite数据库教程(一)——终端使用篇
- Java NioSocket 的用法
- eclipse查看快捷键及自主设置定义快捷键
- list集合导出Excel文件(二)
- 自己总结的web前端面试题之php
- C语言编程实现三子棋
- darknet_ros error shooting: undefined reference to `clReleaseMemObject@OPENCL_1.0'
- 利用spring AOP功能进行日志管理
- SSH框架搭建
- 341. Flatten Nested List Iterator
- 制作ZedBoard-linaro-desktop-ubuntu全过程之编译Linux内核
- Win7 安装VS2010, .net framework 4.0 失败,错误HRESULT 0xc8000222解决办法
- Linux中遇到问题时常用命令
- SQL SERVER 数据库备份压缩机制