资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

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

三子棋主要功能分析:

九江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元起,快前往官网查看详情吧


分享名称:简易三子棋实现-创新互联
文章源于:http://cdkjz.cn/article/ddosde.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220