简易三子棋实现-创新互联

三子棋主要功能分析:

九江ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
  • 简易游戏界面
  • 下棋及对应棋盘的打印
  • 胜负判断

简易三子棋实现的基本子函数:

  1.   界面函数
  2.   棋盘初始化
  3.   棋盘打印
  4.   玩家、电脑下棋函数
  5. 判断函数

    界面函数:

    void manu() {
    
    		printf("*************************\n");
    		printf("*****   welcome!  *******\n");
    		printf("*****    1:play   *******\n");
    		printf("*****    2:quit   *******\n");
    		printf("*************************\n");
            //界面函数只要是用于main函数中循环调用
    		
    }

    棋盘初始化

    void InitChess(char chess[ROW][COL], int row, int col) {
    	for (int i = 0; i< row; i++) {
    		for (int j = 0; j< col; j++) {
    			chess[i][j] = ' ';//初始化为‘ ’方便后续打印
    		}
    	}
    
    }

    棋盘打印函数

                                                   上图为打印界面样式,采用每一个小格打印两行,第一行为“ %c ”加‘|’第二行为---加‘|’,最后一列不打印‘|’,在最后一行中不打印---,由此写成一下循环

    void PrintBoard(char chess[ROW][COL], int row, int col) {
    	for (int i = 0; i< row; i++) {
    		for (int j = 0; j< col; j++) {
    			printf(" %c ", chess[i][j]);
    			if (j< row - 1)//最后一列不打印‘|’
    				printf("|");
    		}
    		printf("\n");
    		if (i< row - 1)//最后一行不打印---
     {
    			for (int j = 0; j< col; j++) {
    				printf("---");
    				if (j< row - 1)
    					printf("|");
    			}
    			printf("\n");
    		}
    	}
    }

    下棋函数

    void Player(char chess[ROW][COL], int row, int col) //玩家下棋
    {
    	int row1 = 0;
    	int col1 = 0;
    	while (1) {
    		printf("请输入位置>>");
    		scanf("%d %d", &row1, &col1);
    		if (row1 >ROW || row1<= 0 || col1 >COL || col1<= 0) {
    			printf("pos error\n");
    			continue;
    		}
    		if (chess[row1-1][col1-1] != ' ') {
    			printf("pose error\n");
    			continue;
    		}
    		else {
    			chess[row1-1][col1-1] = '#';
    			break;
    		}
    
    	}
    }
    void computer(char chess[ROW][COL], int row, int col) //电脑下棋
    {
    	while (1) {
    		int row1 = rand() % 3;//srand函数在进入函数前调用
    		int col1 = rand() % 3;
    		if (row1 >ROW || row1<= 0 || col1 >COL || col1<= 0) {
    			
    			continue;
    		}
    		if (chess[row1 - 1][col1 - 1] != ' ') {
    			
    			continue;
    		}
    		else {
    			chess[row1 - 1][col1 - 1] = '*';
    			break;
    		}
    	}
    }

    判断函数

    int  judge(char chess[ROW][COL], int row, int col) //简易判断,只考虑三子棋,没有写的更加深入
    {
    	for (int i = 0; i< ROW; i++) {
    		if (chess[i][1] == chess[i][2] && chess[i][2] == chess[i][0] && chess[i][1] == '#') {
    			return 1;
    		}
    	}
    	for (int i = 0; i< COL; i++) {
    		if (chess[1][i] == chess[2][i] && chess[2][i] == chess[0][i]&&chess[1][i]=='#') {
    			return 1;
    		}
    	}
    	if (chess[1][1] == chess[2][2] && chess[2][2] == chess[0][0]&&chess[0][0]=='#')
    		return 1;
    	if (chess[0][0] == chess[1][1] && chess[1][1] == chess[2][2] && chess[0][0] == '#')
    		return 1;
    
    
    	for (int i = 0; i< ROW; i++) {
    		if (chess[i][1] == chess[i][2] && chess[i][2] == chess[i][0] && chess[i][1] == '*') {
    			return -1;
    		}
    	}
    	for (int i = 0; i< COL; i++) {
    		if (chess[1][i] == chess[2][i] && chess[2][i] == chess[0][i] && chess[1][i] == '*') {
    			return -1;
    		}
    	}
    	if (chess[1][1] == chess[2][2] && chess[2][2] == chess[0][0] && chess[0][0] == '*')
    		return -1;
    	if (chess[0][0] == chess[1][1] && chess[1][1] == chess[2][2] && chess[0][0] == '*')
    		return -1;
    	return 0;
    }

    主函数

    int main() {
    	
    	int flag = 0;
    	while (1) {
    		manu();
    		scanf("%d", &flag);
    		switch (flag) {
    		case 1: game(); break;
    		case 2:return 0;
    		default:
    			printf("input error");
    			continue;
    			break;
    		}
    	}	
    }
    void game() {
    	srand((unsigned int)time(NULL));
    	char chess[ROW][COL];
    	int flag = 0;
    	InitChess(chess, ROW, COL);
    	PrintBoard(chess, ROW, COL);
    	while (1) {
    		Player(chess, ROW, COL);
    		PrintBoard(chess, ROW, COL);
    			flag = judge(chess, ROW, COL);
    			if (flag == 1) {
    				printf("You win\n");
    				return;
    			}
    			else if(flag== -1){
    				printf("You lose\n");
    				return;
    			}
    	
    		printf("电脑输入\n");
    		computer(chess, ROW, COL);
    		PrintBoard(chess, ROW, COL);
    		flag = judge(chess, ROW, COL);
    		if (flag == 1) {
    			printf("You win\n");
    			return;
    		}
    		else if (flag == -1) {
    			printf("You lose\n");
    			return;
    		}
    		
    	}

    结果展示

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

分享名称:简易三子棋实现-创新互联
分享路径:https://www.cdcxhl.com/article14/ddosde.html

成都网站建设公司_创新互联,为您提供网站策划虚拟主机全网营销推广移动网站建设品牌网站设计外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设