三子棋
来源:互联网 发布:怎么注册淘宝 编辑:程序博客网 时间:2024/06/04 19:29
#define _CRT_SECURE_NO_WARNINGS 1#ifndef __GAME_H__#define __GAME_H__#include<stdlib.h>#include<stdio.h>#include<time.h>#include<string.h>enum OPTION{ EXIT,PLAY};#define COLS 3#define ROWS 3void init_board(char arr[ROWS][COLS], int row, int col);void display(char arr[ROWS][COLS], int row, int col);void player_move(char arr[ROWS][COLS], int row, int col);void computer_move(char arr[ROWS][COLS]);char is_win(char arr[ROWS][COLS], int row, int col);#endif//__GAME_H__
#include"game.h"void menu(){printf("*************************\n");printf("****** 0.EXIT *********\n"); printf("****** 1.PLAY0 *********\n");printf("*************************\n");}void game(){ int ret = 0; char arr[ROWS][COLS] = {0}; init_board(arr,ROWS, COLS); display(arr,ROWS, COLS); srand((unsigned int)time(NULL)); while(1) { player_move(arr,ROWS,COLS); if(ret = is_win(arr,ROWS,COLS) !=' ') break; display(arr,ROWS,COLS); computer_move(arr); if(ret = is_win(arr,ROWS,COLS) !=' ') break; display(arr,ROWS,COLS); } ret= is_win(arr,ROWS,COLS); if(ret == 'X') printf("玩家赢\n"); if(ret == '@') printf("电脑赢\n"); if(ret == 'f') printf("平局\n"); display(arr,ROWS,COLS); }int main(){int input = 0;do{ menu(); scanf("%d",&input); switch(input) { case 1: game();break; case 0: break; default: printf("选择错误\n");break; }}while(input); return 0;}
#include"game.h"void init_board(char arr[ROWS][COLS], int row, int col){ memset(arr, ' ', row*col);}void display(char arr[ROWS][COLS], int row, int col){ int i = 0; for(i=0; i<row; i++) { printf(" %c | %c | %c \n",arr[i][0],arr[i][1],arr[i][2]); if(i!=2) { printf("---|---|---\n"); } }}static int is_full( char arr[ROWS][COLS], int row, int col) { int i = 0;int j = 0;for(i=0;i<row;i++){ for(j=0;j<col;j++) { if(arr[i][j]==' ') return 0; }}return 'f';}void player_move(char arr[ROWS][COLS], int row, int col){ int i = 0; int j = 0; while(1) {printf("请输入下子位置:"); scanf("%d%d",&i,&j); if(((i>=1)&&(i<=3))&&((j>=1)&&(j<=3))) { if(arr[i-1][j-1] == ' ') { arr[i-1][j-1] = 'X'; break; } else { printf("该位置已落子\n"); } } else { printf("输入有误\n"); } }}void computer_move(char arr[ROWS][COLS]){ printf("电脑下子位置:"); while(1) { int i = rand()%3; int j = rand()%3; if(arr[i][j] == ' ') { printf("%d %d\n",i,j); arr[i][j] = '@'; break; } }}char is_win(char arr[ROWS][COLS], int row, int col){ int i = 0; //玩家赢 for(i=0;i<row;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<col;i++) { if((arr[0][i]==arr[1][i])&& (arr[1][i]==arr[2][i])&&(arr[0][i]!= ' '))return arr[0][i]; } if((arr[0][0]==arr[1][1])&& (arr[1][1]==arr[2][2])&&(arr[2][2]!= ' '))return arr[0][0]; if((arr[0][2]==arr[1][1])&& (arr[1][1]==arr[2][0])&&(arr[2][0]!= ' '))return arr[1][1]; if(is_full(arr, row, col)) { return 'f'; } return ' '; }
0 0
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋,
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 三子棋
- 关于iOS的重定向
- 如何提供一个短链(URL shorter)生成服务
- 使用Repeater中的OnItemCommand,OnItemDataBound
- [真格邦]JAVA-WEB常见面试题之Forward和Redirect的区别
- 利用$ajax实现远程登录判断
- 三子棋
- 上传文件或图片 type=file change事件只触发一次
- ios 判断图片是JPG或PNG
- windows缓冲区溢出漏洞攻击
- 路由器设置SS连接PS4的游戏用户常见问题
- Leetcode 449. Serialize and Deserialize BST (Medium) (cpp)
- 在ubuntu上搭建FTP服务器
- android studio 安装
- 文档摘要