三子棋
来源:互联网 发布:数控转塔冲床编程招聘 编辑:程序博客网 时间:2024/05/18 00:06
game.h#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#define ROWS 3#define COLS 3void game();char check_win(char arr[ROWS][COLS], int rows, int cols);static int is_full(char arr[ROWS][COLS], int rows, int cols);void init_board(char [ROWS][COLS], int rows, int cols);void player_move(char arr[ROWS][COLS], int rows, int cols);void computer_move(char arr[ROWS][COLS], int rows, int cols);#endifgame.c#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include"game.h"void init_board(char arr[ROWS][COLS], int rows,int cols){int i = 0;{for (i = 0; i <= rows; i++){printf("-------\n");if (i < rows){printf("|%c|%c|%c|\n", arr[i][0], arr[i][1], arr[i][2]);}}}}static int is_full(char arr[ROWS][COLS], int rows, int cols){int i = 0, j = 0;for (i = 0; i < rows; i++){for (j = 0; j < cols; j++){if (arr[i][j] == ' ')return 0;}}return 1;}char check_win(char arr[ROWS][COLS], int rows, int cols){int ret = 0;int i = 0;for (i = 0; i < rows; i++){if ((arr[i][0] == arr[i][1]) &&( arr[i][1] == arr[i][2])&&( arr[i][1] != ' '))return arr[i][0];}for (i = 0; i < cols; i++){if ((arr[0][i] == arr[1][i])&&( arr[1][i] == arr[2][i])&&( arr[1][i] != ' '))return arr[0][i];}if ((arr[0][0] == arr[1][1])&&( arr[1][1] == arr[2][2])&&( arr[1][1] != ' '))return arr[1][1];if ((arr[0][2] == arr[1][1])&& (arr[1][1] == arr[2][0])&&( arr[1][1] != ' '))return arr[1][1];if (is_full(arr, rows, cols))return 'q';return ' ';}void computer_move(char arr[ROWS][COLS], int rows, int cols){while (1){int x = rand() % 3;int y = rand() % 3;if (arr[x][y] == ' '){arr[x][y] = '0';break;}}}void player_move(char arr[ROWS][COLS], int rows, int cols){while (1){int i = 9;int j = 5;printf("输入坐标:");scanf("%d %d", &i, &j);//i,j前面要加&if ((i <= 3) && (j <= 3)){i--;j--;if (arr[i][j] == ' '){arr[i][j] = '*';break;}else{printf("重新输入这有棋子\n");}}else{printf("输入有误重新输入\n");}}}test.c
#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>#include<time.h>#include"game.h"void menu(){ printf("*******1.play**********\n"); printf("*******0.exit**********\n");}void game(){ char ret=1; int rows = 3; int cols = 3; /* char arr[ROWS][COLS] = { ' ' };*/ /*{ { ' ', ' ', ' ' }, { ' ', ' ', ' ' }, { ' ', ' ', ' ' }, };*///初始化数组 char arr[ROWS][COLS] = { ' '}; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { arr[i][j] = ' '; } } srand((unsigned int)time(NULL)); //init_board( arr,rows, cols);//显示数组 while (1) { printf("电脑走:\n"); computer_move(arr, rows, cols); if ((ret = check_win(arr, rows, cols)) != ' ') break; init_board(arr, rows, cols); printf("玩家走:\n"); player_move(arr, rows, cols); if ((ret =check_win(arr, rows, cols)) != ' ') break; init_board(arr, rows, cols); } if (ret == '0') printf("电脑赢\n"); else if (ret == '*') printf("玩家赢\n"); else if (ret == 'q') printf("平局\n"); init_board(arr, rows, cols);}int main(){ int input=0; do { menu();printf("请输入\n"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: ; break; default: printf("输入有误\n"); break; } } while (input);return 0;}
阅读全文
0 0
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋,
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 队列
- java虚拟机详解
- 前端仿真实现之Mock
- 流式大数据处理的三种框架:Storm,Spark和Samza
- JavaScript中简单的Math相关方法
- 三子棋
- 第七周-项目3
- 随机生成图,dijkstra算法求最短路径,深度、广度优先历遍【待更新其他算法】
- 基于koa2、vue2、mongodb的个人网站(前端序篇)
- 大数据学习22:Apache-Hadoop 2.8.1 集群部署
- <10/22>集训周记
- Nginx的一些基本功能
- 链队
- tomcat基础学习