亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語言數(shù)組實現(xiàn)三子棋應用實例

 更新時間:2022年01月11日 11:42:05   作者:?Yiiiiiiiiiiiiii  
這篇文章主要為大家詳細介紹了C語言數(shù)組實現(xiàn)三子棋應用實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言數(shù)組實現(xiàn)三子棋應用的具體代碼,供大家參考,具體內(nèi)容如下

三子棋:(拆分部分如下)

test.c 測試游戲邏輯

game.h關(guān)于游戲相關(guān)的函數(shù)聲明,符號聲明 頭文件的包含

game.c游戲相關(guān)函數(shù)的實現(xiàn)

游戲進行的過程:(4種)

1.玩家獲勝--*(游戲結(jié)束)

2.電腦獲勝--#(游戲結(jié)束)

3.平局--Q(游戲結(jié)束)

4.游戲繼續(xù)--C

IsWin函數(shù) 用來判斷游戲的狀態(tài)

game.c

#include"game.h"
#include<stdio.h>
//初始化棋盤的函數(shù)?
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)?
?? ??? ?{
?? ??? ??? ?int j=0;
?? ??? ??? ?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("玩家走:>\n");
?? ?while(1)
?? ?{
?? ??? ?printf("請輸入下棋的坐標:>");
?? ??? ?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]='*';
?? ??? ??? ??? ?break;
?? ??? ??? ?}?
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?printf("坐標被占用,請重新輸入\n");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?printf("坐標非法,請重新輸入\n");
?? ??? ?}
?? ?}
}
?
void ComputerMove(char board[ROW][COL],int row,int col)
{
?? ?printf("電腦走:>\n");
?? ?while(1)
?? ?{
?? ??? ?int x=rand()%row;
?? ??? ?int y=rand()%col;
?? ??? ?//判斷占用
?? ??? ?if(board[x][y]==' ')?
?? ??? ?{
?? ??? ??? ?board[x][y]='#';
?? ??? ??? ?break;
?? ??? ?}
}
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<ccol;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[1][1]!=' ')
?? ?{
?? ??? ?return board[1][1];
?? ?}
?? ?
?? ?//判斷平局--棋盤是否下滿,滿了返回1,不滿返回0
?? ?int ret=IsFull(board,row,col);
?? ?if(ret==1)
?? ?{
?? ??? ?return '0';
?? ?}?
?? ??
?? ?//繼續(xù)
?? ?return 'C';?? ??
}

game.h

//頭文件的包含?
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
?
//符號的定義?
#define ROW 3
#define COL 3
?
//函數(shù)的聲明
//初始化棋盤?
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 ComputerMove(char board[ROW][COL],int row,int col);
?
//判斷游戲是否出現(xiàn)輸贏?
char IsWin(char board[ROW][COL],int row,int col);

test.c

#include"game.h"http://引用頭文件?
void menu()
{
?? ?printf("*************************\n");
?? ?printf("***** ? ?1.play ? ?******\n");
?? ?printf("***** ? ?0.exit ? ?******\n");
?? ?printf("*************************\n");
}
void game()
{
?? ?//存儲數(shù)據(jù),二維數(shù)組
?? ?char board[ROW][COL];?
?? ?//初始化棋盤,初始化空格
?? ?InitBoard(board,ROW,COL);
?? ?//打印棋盤--本質(zhì)為打印數(shù)組內(nèi)容?
?? ?DisplayBoard(board,ROW,COL);?
?? ?char ret=0;//接受游戲狀態(tài)?
?? ?while(1)
?? ?{
?? ??? ?//玩家下棋
?? ??? ?PlayerMove(board,ROW,COL);
?? ??? ?DisplayBoard(board,ROW,COL);
?? ??? ?//判斷玩家是否獲勝?
?? ??? ?ret=IsWin(board,ROW,COL);
?? ??? ?if(ret!='C')
?? ??? ??? ?break;?
?? ??? ?
?? ??? ?//電腦下棋?
?? ??? ?ComputerMove(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");?? ?
?? ?}
?? ?DisplayBoard(board,ROW,COL);?? ?
}
int main()
{
?? ?int input=0;
?? ?srand((unsigned int)time(NULL));
?? ?do
?? ?{
?? ??? ?menu();
?? ??? ?printf("請選擇:>");
?? ??? ?scanf("%d",&input);
?? ??? ?switch(input)
?? ??? ?{
?? ??? ?case 1:
?? ??? ??? ?printf("三子棋游戲\n");
?? ??? ??? ?break;
?? ??? ?case 0:
?? ??? ??? ?printf("退出游戲\n");
?? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ?printf("選擇錯誤,重新選擇\n");
?? ??? ??? ?break;
?? ??? ?}
?? ?}while(input);
?? ?
}

部分游戲界面,如上圖所示 

具體思路見代碼中注釋所示

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語言qsort()函數(shù)的使用方法詳解

    C語言qsort()函數(shù)的使用方法詳解

    qsort是一個庫函數(shù),基于快速排序算法實現(xiàn)的一個排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言qsort()函數(shù)使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • C++中智能指針unique_ptr的實現(xiàn)詳解

    C++中智能指針unique_ptr的實現(xiàn)詳解

    智能指針本質(zhì)上并不神秘,其實就是?RAII?資源管理功能的自然展現(xiàn)而已,這篇文章主要為大家詳細介紹了如何實現(xiàn)?C++中智能指針的?unique_ptr,需要的可以了解下
    2024-01-01
  • C語言字符函數(shù)isalnum()和iscntrl()詳解

    C語言字符函數(shù)isalnum()和iscntrl()詳解

    大家好,本篇文章主要講的是C語言字符函數(shù)isalnum()和iscntrl()詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • 從匯編看c++中函數(shù)里面的static關(guān)鍵字的使用說明

    從匯編看c++中函數(shù)里面的static關(guān)鍵字的使用說明

    c++中的static關(guān)鍵字使得函數(shù)里面的局部變量的存活期不在局限于函數(shù)里面,而是變?yōu)樵谡麄€程序生命期里面都有效
    2013-05-05
  • C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)

    C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)

    C/C++實現(xiàn)矩陣的轉(zhuǎn)置(示例代碼)需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • 一文帶你簡單了解c++正則表達式

    一文帶你簡單了解c++正則表達式

    正則表達式在匹配字符串,驗證輸入合法性時經(jīng)常用到.C++?11標準庫中已經(jīng)支持了正則表達式,下面這篇文章主要給大家介紹了關(guān)于c++正則表達式的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • C語言封裝函數(shù)字符串練習匯總分享

    C語言封裝函數(shù)字符串練習匯總分享

    這篇文章主要介紹了C語言封裝函數(shù)字符串練習匯總分享,分享內(nèi)容有字符串查找、字符串拼接、字符串轉(zhuǎn)整數(shù)等內(nèi)容,需要而小伙伴可以參考一下
    2022-03-03
  • C語言文件操作詳解以及詳細步驟

    C語言文件操作詳解以及詳細步驟

    文件(file)一般指存儲在外部介質(zhì)上數(shù)據(jù)的集合,比如我們經(jīng)常使用的.txt,?.bmp,?jpg.?.exe,.rmvb等等,下面這篇文章主要給大家介紹了關(guān)于C語言文件操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 淺談C語言=與==的區(qū)別詳解

    淺談C語言=與==的區(qū)別詳解

    這篇文章主要介紹了淺談C語言=與==的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • 利用C/C++實現(xiàn)較完整貪吃蛇游戲

    利用C/C++實現(xiàn)較完整貪吃蛇游戲

    這篇文章主要為大家詳細介紹了利用C/C++實現(xiàn)較完整貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評論