博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三子棋
阅读量:3944 次
发布时间:2019-05-24

本文共 3277 字,大约阅读时间需要 10 分钟。

对于三子棋,可以通过多文件编译来实现完成它,是代码看起来简洁明了。

1.进行chess.h文件的声明定义

`#define _CRT_SECURE_NO_WARNINGS 1#ifndef _CHESS_H_#define _CHESS_H_#include 
#include
#include
#pragma warning(disable:4996)#define ROW 3#define COL 3void ShowUI();void Game();void ComputerMove(char board[][COL], int row, int col);void ShowBoard(char board[][COL], int row, int col);char Judge(char board[][COL], int row, int col);void PlayerMove(char board[][COL], int row, int col);#endif在这里插入代码片

2.书写主函数

#define _CRT_SECURE_NO_WARNINGS 1#include "chess.h"int main(){	int select = 0;	int quit = 0;	while (!quit){		ShowUI();		scanf("%d", &select);		switch (select){		case 1:			Game();			break;		case 2:			quit = 1;			printf("Bye,Bye!\n");			break;		default:			printf("Please Enter Again!\n");			break;		}	}	system("pause");	return 0;}

3.写出核心代码,对个个模块进行封装,明确其需要实现的功能。

#define _CRT_SECURE_NO_WARNINGS 1#include "chess.h"void ShowUI(){	printf("##################################\n");	printf("## 1. Play              2. Exit ##\n");	printf("##################################\n");	printf("Please Select:> ");}void ComputerMove(char board[][COL], int row, int col){	while (1){		int x = rand() % row;		int y = rand() % col;		if (board[x][y] == ' '){			board[x][y] = 'O';			break;		}	}}void PlayerMove(char board[][COL], int row, int col){	int x, y;	while (1){		printf("Please Enter Your Pos(x,y):>  ");		scanf("%d %d", &x, &y);		if (x >= 1 && x <= row && y >= 1 && y <= col){			if (board[x - 1][y - 1] == ' '){				board[x - 1][y - 1] = 'X';				break;			}			else{				printf("Enter Pos Is Not OK, Try Again!\n");			}		}		else{			printf("Enter Error, Try Again!\n");		}	}}char Judge(char board[][COL], int row, int col){	int i = 0;	int j = 0;	for (; i < row; i++){		if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && \			board[i][0] != ' '){			return board[i][0];		}	}	for (i = 0; i < col; i++){		if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && \			board[0][i] != ' '){			return board[0][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];	}	for (i = 0; i < row; i++){		for (j = 0; j < col; j++){			if (board[i][j] == ' '){				return 'N';			}		}	}	return 'E';}void ShowBoard(char board[][COL], int row, int col){	printf("    1   2   3\n");	printf("-----------------\n");	int i = 0;	int j = 0;	for (; i < row; i++){		printf("%d |", i + 1);		for (j = 0; j < col; j++){			printf(" %c |", board[i][j]);		}		printf("\n-----------------\n");	}	printf("\n");}void Game(){	char board[ROW][COL];	memset(board, ' ', sizeof(board));	char result = 'N';	srand((unsigned long)time(NULL));	while (1){		system("cls");		ComputerMove(board, ROW, COL);		ShowBoard(board, ROW, COL);		result = Judge(board, ROW, COL);		if (result != 'N'){//'X' 'O' 'E' 'N'			break;		}		PlayerMove(board, ROW, COL);		ShowBoard(board, ROW, COL);		result = Judge(board, ROW, COL);		if (result != 'N'){//'X' 'O' 'E' 'N'			break;		}	}	switch (result){	case 'X':		printf("You Win! :)\n");		break;	case 'O':		printf("You Lose, Computer Win! :(\n");		break;	case 'E':		printf("平局,恭喜!\n");		break;	default:		break;	}}

这样一个简单的三子棋程序就完成了!

转载地址:http://frjwi.baihongyu.com/

你可能感兴趣的文章
《非诚勿扰2》台词
查看>>
《班扎古鲁白玛的沉默》仓央嘉措
查看>>
《十诫诗》仓央嘉措
查看>>
《那一世》仓央嘉措
查看>>
《我问佛》仓央嘉措
查看>>
Maven中指定得AspectJ依赖无法添加得解决方案
查看>>
Spring3注释装配的最佳实践
查看>>
Mac Vi常用键
查看>>
jchardet字符编码自动检测工具
查看>>
使用Maven Archetype生成工程报错的解决
查看>>
System.getProperty()系统参数
查看>>
Linux系统下批量删除.svn目录
查看>>
大数据行业应用趋势
查看>>
Mac + Rails3 + MongoDB的Demo工程搭建
查看>>
隐藏于Python内的设计之禅彩蛋
查看>>
VSCode配置C/C++环境
查看>>
OTB测试之Visual Tracker Benchmark v1.0全过程配置流程
查看>>
缓存在Springboot应用中的使用
查看>>
Linux(一)- 认识Linux
查看>>
Linux(二)- Linux常用命令
查看>>