tft每日頭條

 > 生活

 > c語言三子棋怎麼玩

c語言三子棋怎麼玩

生活 更新时间:2024-07-20 17:15:56

制作該遊戲需要用到數組的相關知識,包括數組的設定、排列方式等。我們的這個遊戲就是要将一個三行三列的數組制作成三子棋的棋盤,玩家下一棋打印一次判斷是否達到勝利條件,然後電腦下一棋打印一次判斷是否達到勝利條件,了解了具體的步驟之後,我們就可以将整體的框架搭建起來:

#include"game.h" void menu() { printf("**************************\n"); printf("******1.play 0.exit****\n"); printf("**************************\n"); } //遊戲的算法實現 void game() { int ret = 0; //數組存棋盤信息 char board[ROW][COL] = { 0 }; //初始化棋盤 InitBoard(board,ROW,COL); //打印棋盤 DisplayBoard(board,ROW,COL); //下棋 /*ComputerMore(board, ROW, COL);*/ //電腦下棋 while (1) { //玩家下棋 PlayerMove(board,ROW,COL); //打印棋盤 DisplayBoard(board, ROW, COL); //判斷是否勝利 ret = IsWin(board,ROW,COL); if (ret != 'C') { break; } //電腦下棋 ComputerMore(board, ROW, COL); //打印棋盤 DisplayBoard(board, ROW, COL); //判斷是否勝利 ret = IsWin(board,ROW,COL); if (ret != 'C') { break; } } if (ret == '*') { printf("玩家勝利!\n"); } else if (ret == '#') { printf("你輸了\n"); } else { printf("平局\n"); } } void test() { int input = 0; srand((unsigned int)time(NULL)); do { menu(); printf("請選擇:>"); scanf("%d", &input); switch (input) { case 1: game(); break; case 0: printf("退出遊戲"); break; default: printf("選擇錯誤,重新選擇:>"); break; } } while (input); } int main() { test(); return 0; }

将整體框架構建完成之後,我們在繼續遊戲主體的編譯,我們在創立一個源文件來存放遊戲主體算法的内容,首先先對棋盤進行初始化,并将棋盤打印,玩家需要輸入坐标來達到下棋的目的,比如第一行第一列我們輸入1 1,第二行第二列我們輸入2 2,如果輸入的坐标上已經被占用系統會提示”被占用“當電腦或者玩家完成三子連線的情況時,遊戲勝利或失敗,否則則為平局。具體代碼如下:

#include"game.h" //棋盤初始化 void InitBoard(char board[ROW][COL], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i ) { for (j = 0; j < col; j ) { board[i][j] = ' '; } } } //棋盤打印 void DisplayBoard(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i ) { int j = 0; for (j = 0; j < col; j ) { printf(" %c ", board[i][j]); if (j < col - 1) printf("|"); } printf("\n"); if (i < row - 1) { for (j = 0; j < col; j ) { printf("---"); if (j < col - 1) printf("|"); } } printf("\n"); } } void PlayerMove(char board[ROW][COL], int row, int col) { int x = 0; int y = 0; printf("玩家走"); while (1) { printf("請輸入坐标"); scanf("%d%d", &x, &y); //判斷x,y的合法性 if (x >= 1 && x <= row && y >= 1 && y <= col) { if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = '*'; break; } else { printf("被占用"); } } else { printf("坐标不合理,請重新輸入"); } } } void ComputerMore(char board[ROW][COL], int row, int col) { int x = 0; int y = 0; printf("電腦走:>\n"); while (1) { x = rand() % row; y = rand() % col; if (board[x][y] == ' ') { board[x][y] = '#'; break; } } } int IsFull(char board[ROW][COL], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i ) { for (j = 0; j < col; j ) { if (board[i][j] == ' ') return 0; } } return 1; } char IsWin(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i ) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != ' ') { return board[i][1]; } } for (i = 0; i < col; i ) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' ') { return board[1][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[2][0] != ' ') return board[2][0]; //判斷是否平局 if (1 == IsFull(board, ROW, COL)) { return 'Q'; } return 'C'; }

至此三子棋的全部内容編譯完成,在創立一個頭文件game.h來聲明函數的應用。

#define ROW 3 #define COL 3 #include<stdio.h> #include<stdlib.h> #include<time.h> void InitBoard(char board[ROW][COL], int row, int col); void DisplayBoard(char board[ROW][COL], int row, int col); void PlayerMove(char board[ROW][COL], int row, int col); void ComputerMore(char board[ROW][COL], int row, int col); char IsWin(char board[ROW][COL], int row, int col); int IsFull(char board[ROW][COL], int row, int col); //四種狀态: //玩家赢 --* //電腦赢 --# //平局 --Q //繼續 --C

練手小習題:雞兔同籠問題

有若幹隻雞兔同在一個籠子裡,從上面數,有35個頭,從下面數,有94隻腳。問籠中各有多少隻雞和兔?

思路分析:(頭總數-雞的頭數)x 4 雞的頭數x2=94

代碼示例:

#include "stdio.h" int main() { int Rabbit,Chick; printf("雞兔同籠問題:\n"); for(Chick=0;Chick<35;Chick ) { for(Rabbit=9;Rabbit<35;Rabbit ){ if(Chick*2 Rabbit*4==94 && Chick Rabbit ==35 ){ printf("雞的數量為%d 兔子的數量為%d\n",Chick,Rabbit); } } } return 0; }

另外,對于準備學習C/C 編程的小夥伴,如果你想更好的提升你的編程核心能力(内功)不妨從現在開始!

編程學習書籍分享:

c語言三子棋怎麼玩(井字棋實現及其源碼展示)1

編程學習視頻分享:

c語言三子棋怎麼玩(井字棋實現及其源碼展示)2

整理分享(多年學習的源碼、項目實戰視頻、項目筆記,基礎入門教程)

歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!

對于C/C 感興趣可以關注小編在後台私信我:【編程交流】一起來學習哦!可以領取一些C/C 的項目學習視頻資料哦!已經設置好了關鍵詞自動回複,自動領取就好了!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved