簡易三子棋實現(xiàn)-創(chuàng)新互聯(lián)

三子棋主要功能分析:

九江ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
  • 簡易游戲界面
  • 下棋及對應(yīng)棋盤的打印
  • 勝負(fù)判斷

簡易三子棋實現(xiàn)的基本子函數(shù):

  1. ? 界面函數(shù)
  2. ? 棋盤初始化
  3. ? 棋盤打印
  4. ? 玩家、電腦下棋函數(shù)
  5. 判斷函數(shù)

    界面函數(shù):

    void manu() {
    
    		printf("*************************\n");
    		printf("*****   welcome!  *******\n");
    		printf("*****    1:play   *******\n");
    		printf("*****    2:quit   *******\n");
    		printf("*************************\n");
            //界面函數(shù)只要是用于main函數(shù)中循環(huán)調(diào)用
    		
    }

    棋盤初始化

    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] = ' ';//初始化為‘ ’方便后續(xù)打印
    		}
    	}
    
    }

    棋盤打印函數(shù)

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?上圖為打印界面樣式,采用每一個小格打印兩行,第一行為“ %c ”加‘|’第二行為---加‘|’,最后一列不打印‘|’,在最后一行中不打印---,由此寫成一下循環(huán)

    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");
    		}
    	}
    }

    下棋函數(shù)

    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函數(shù)在進(jìn)入函數(shù)前調(diào)用
    		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;
    		}
    	}
    }

    判斷函數(shù)

    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;
    }

    主函數(shù)

    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;
    		}
    		
    	}

    結(jié)果展示

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

分享名稱:簡易三子棋實現(xiàn)-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article14/ddosde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、虛擬主機全網(wǎng)營銷推廣、移動網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)