Pace 7 (实现三子棋小游戏[拓展为多子棋])
来源:互联网 发布:安卓版千里眼偷窥软件 编辑:程序博客网 时间:2024/06/11 17:53
game.h
#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 5#define COL 5void GAME(char bor[ROW][COL],int row, int col);void print_bor(char bor[ROW][COL], int row, int col);void People(char bor[ROW][COL], int row, int col);void Computer(char bor[ROW][COL], int row, int col);int Is_win(char bor[ROW][COL], int row, int col);int IF_FULL(char bor[ROW][COL], int row, int col);void Init(char bor[ROW][COL], int row, int col);#endif __GAME_H__game.c
#include "game.h"void Init(char bor[ROW][COL], int row, int col) //初始化数组,使数组每个字符都为空格{memset(bor, ' ', col*row*sizeof(char));}void menu() //打印菜单{printf("*************************\n");printf("*** 1:PLAY 0:OUT ***\n");printf("*************************\n");}void print_bor(char bor[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 (j == col - 1)printf(" %c ", bor[i][j]);elseprintf(" %c |", bor[i][j]);}printf("\n");for (j = 0; j < col; j++){if (i < row - 1)printf("--- ");}printf("\n");}}void People(char bor[ROW][COL], int row, int col) //人下棋,显示为#{int x = 0;int y = 0;printf("请输入一个坐标:>");while (1){scanf("%d%d", &x, &y);if ((x > 0) && (x <= row) && (y > 0) && (y <= col)){if (bor[x - 1][y - 1]==' '){bor[x - 1][y - 1] = '#';break;}else{printf("下标有误,请重新输入:>");}}elseprintf("下标有误,请重新输入:>");}}void Computer(char bor[ROW][COL], int row, int col) //电脑走,产生随机数,显示为${int x = 0;int y = 0;printf("电脑走:\n");while (1){x = rand() % row;y = rand() % col;if (bor[x][y]==' '){bor[x][y] = '$';break;}}}int Is_win(char bor[ROW][COL], int row, int col) //判断输赢,返回#则玩家获胜,返回$则电脑获胜。{int i = 0;int j = 0;int count = 0;for (i = 0; i < row; i++){count = 0;for (j = 0; j < col-1; j++){if ( (bor[i][j] == bor[i][j + 1]) && ( bor[i][j] != ' ') )count++;else break;if (count == row - 1)return bor[i][1];}}for (i = 0; i < col; i++){count = 0;for (j = 0; j < col-1; j++){if ((bor[j][i] == bor[j + 1][i]) && (bor[j][i] != ' '))count++;else break;if (count == row - 1)return bor[j][1];}}for (i = 0; i < row-1; i++){count = 0;if ((bor[i][i] == bor[i + 1][i + 1]) && (bor[0][0] != ' '))count++;else break;if (count == row - 1)return bor[0][0];}for (i = 0; i < row-1; i++){count = 0;if ((bor[i][row - 1 - i] == bor[i + 1][row - 2 - i]) && (bor[row-1][0] != ' '))count++;else break;if (count == row - 1)return bor[row-1][0];}return 0;}int IF_FULL(char bor[ROW][COL], int row, int col) //判断棋满,返回f{int i = 0;int j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){if (bor[i][j]==' ')return 1;}}return 'f';}
test,c
#include "game.h"void GAME(char bor[ROW][COL], int row, int col){int g = 0;int ret = 0;print_bor(bor, row, col);while (1){People(bor, row, col);print_bor(bor, row, col);ret = Is_win(bor, row, col);if (ret == '#' || ret == '$')break;ret = IF_FULL(bor, row, col);if (ret == 'f')break;Computer(bor, row, col);print_bor(bor, row, col);ret = Is_win(bor, row, col);if (ret == '#' || ret == '$')break;ret = IF_FULL(bor, row, col);if (ret == 'f')break;}if (ret == '#'){printf("玩家获胜!\n");}if (ret == '$'){printf("电脑获胜!\n");}if (ret == 'f'){printf("平局!\n");}}int main(){char bor[ROW][COL] = { 0 };int input = 0;srand((unsigned int)time(NULL));do{Init(bor, ROW, COL);menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:GAME(bor, ROW, COL);break;case 0:break;default: printf("请输入1/0:\n");break;}} while (input);system("pause");return 0;}
阅读全文
0 0
- Pace 7 (实现三子棋小游戏[拓展为多子棋])
- Pace 8 (C语言实现扫雷小游戏)
- 三子棋小游戏的实现
- 小游戏三子棋的实现
- 三子棋小游戏实现
- 小游戏之三子棋的实现
- C语言实现小游戏---三子棋
- 小游戏 | 井字棋(三子棋)的C语言实现
- 简单的小游戏---代码实现三子棋
- 用C语言实现三子棋小游戏
- C语言实现简易三子棋小游戏
- C语言实现简单的三子棋小游戏
- 小游戏三子棋的C语言代码实现
- pace简介
- C语言实现小游戏(一)
- C语言实现小游戏(二)
- 小游戏--三子棋(任意几子棋)
- 三子棋小游戏
- daterangepicker-- 日期区间选择器
- Openstack Nova-docker的安装配置(Mitaka版本)
- Linux——线程基础
- 实验3: Linux文件管理
- [noip2013]积木大赛 题解
- Pace 7 (实现三子棋小游戏[拓展为多子棋])
- CONCAT/GROUP_CONCAT用法
- C语言之基础部分一(数据类型)
- linux下安装 mysql,以及简易Makefile的编写
- 关于IOS体统弹框和摇一摇弹框 不响应摇一摇
- UVa445 Periodic Strings
- 不忘初心
- Web Service (013---webservice使用Jquery、Ajax请求WebService)
- 文件的操作上传