欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單五子棋游戲

 更新時(shí)間:2022年03月25日 09:52:02   作者:行者三個(gè)石  
這篇文章主要為大家詳細(xì)介紹了基于C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

五子棋大家都玩兒過(guò),所以規(guī)則就不介紹了

今天遇到一個(gè)學(xué)弟在實(shí)現(xiàn)的時(shí)候遇到一些問(wèn)題,所以將實(shí)現(xiàn)的過(guò)程記錄下

水平有限,僅供參考,互相交流,共同進(jìn)步。

#include<stdio.h>
#include<windows.h>
?
int main()
{
?
? ? int i,j;//表示棋盤橫縱坐標(biāo)
? ? /*************************************************
? ? *
? ? *繪制表格需要的字符:┌ ┬ ┐├ ┼ ┤└ ┴ ┘│─●○
? ? *數(shù)組的值0表示黑棋,1表示白棋,2表示該位置沒(méi)有棋
? ? *
? ? */
? ? int qipan[20][20];
? ? int color=0;//0表示黑棋(圓圈),1表示白棋
? ? int iTemp = 0,jTemp = 0,countTemp = 0;
? ? int colorFlag = 0;
? ? char op;
?
again:
?
? ? for(i=0;i<20;i++)
? ? ? ? for(j=0;j<20;j++)
? ? ? ? ? ? qipan[i][j]=2;
?
? ? while(1)
? ? {
? ? ? ? printf("請(qǐng)輸入棋子位置(棋盤大小為20*20),如2,2: ");
? ? ? ? scanf("%d,%d", &i,&j);
?
? ? ? ? if(i<1 || i >20 || j<1 || j>20)
? ? ? ? {
? ? ? ? ? ? printf("輸入的位置超出了棋盤的范圍,請(qǐng)重新輸入!\n");
? ? ? ? ? ? continue;
? ? ? ? }
?
? ? ? ? if((2 != qipan[i-1][j-1]))
? ? ? ? {
? ? ? ? ? ? printf("提示:該位置已經(jīng)有棋子了!\n");
? ? ? ? ? ? fflush(stdin);
? ? ? ? ? ? continue;
? ? ? ? }
?
? ? ? ? color=(color+1)%2;//獲取棋盤棋子屬性
? ? ? ? qipan[i-1][j-1]=color;//將該位置棋子屬性給棋盤
?
? ? ? ? //根據(jù)棋盤對(duì)應(yīng)位置屬性,繪制最新狀態(tài)的棋盤,一行行繪制,邊緣特別處理
? ? ? ? for(i=1;i<=20;i++)
? ? ? ? {
? ? ? ? ? ? //第一行
? ? ? ? ? ? if(i==1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //第一列
? ? ? ? ? ? ? ? if(qipan[i-1][0]==1)
? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? if(qipan[i-1][0]==0)
? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? if(qipan[i-1][0]==2)
? ? ? ? ? ? ? ? ? ? printf("┌ ");
?
? ? ? ? ? ? ? ? //第2-19列
? ? ? ? ? ? ? ? for(j=2;j<=19;j++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==1)
? ? ? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==0)
? ? ? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==2)
? ? ? ? ? ? ? ? ? ? ? ? printf("┬ ");
? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? //第20列
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==1)
? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==0)
? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==2)
? ? ? ? ? ? ? ? ? ? printf("┐ ");
?
? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? }
?
? ? ? ? ? ? //第2-19行
? ? ? ? ? ? if(i<=19 && i>=2)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //第一列
? ? ? ? ? ? ? ? if(qipan[i-1][0]==1)
? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? if(qipan[i-1][0]==0)
? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? if(qipan[i-1][0]==2)
? ? ? ? ? ? ? ? ? ? printf("├ ");
?
? ? ? ? ? ? ? ? //第2-19列
? ? ? ? ? ? ? ? for(j=2;j<=19;j++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==1)
? ? ? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==0)
? ? ? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==2)
? ? ? ? ? ? ? ? ? ? ? ? printf("┼ ");
? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? //第20列
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==1)
? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==0)
? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==2)
? ? ? ? ? ? ? ? ? ? printf("┤ ");
?
? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? }
?
? ? ? ? ? ? //第20行
? ? ? ? ? ? if(i==20)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if(qipan[i-1][0]==1)
? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? if(qipan[i-1][0]==0)
? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? if(qipan[i-1][0]==2)
? ? ? ? ? ? ? ? ? ? printf("└ ");
?
? ? ? ? ? ? ? ? for(j=2;j<=19;j++)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==1)
? ? ? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==0)
? ? ? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==2)
? ? ? ? ? ? ? ? ? ? ? ? printf("┴ ");
? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==1)
? ? ? ? ? ? ? ? ? ? printf("●");
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==0)
? ? ? ? ? ? ? ? ? ? printf("○");
? ? ? ? ? ? ? ? if(qipan[i-1][j-1]==2)
? ? ? ? ? ? ? ? ? ? printf("┘ ");
?
? ? ? ? ? ? ? ? ? ? printf("\n");
? ? ? ? ? ? }
?
? ? ? ? }
?
? ? ? ? //判斷輸贏
? ? ? ? for(i=0;i<20;i++)
? ? ? ? {
? ? ? ? ? ? for(j=0;j<20;j++)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? //count = 0;
? ? ? ? ? ? ? ? //如果檢測(cè)到該有棋子,則檢查與該棋子有關(guān)的是否可以贏
? ? ? ? ? ? ? ? if(2 != qipan[i][j] )
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? colorFlag = qipan[i][j];
? ? ? ? ? ? ? ? ? ? countTemp = 1;
? ? ? ? ? ? ? ? ? ? iTemp = i;
? ? ? ? ? ? ? ? ? ? jTemp = j;
?
? ? ? ? ? ? ? ? ? ? //該棋子橫向上是否可以贏
? ? ? ? ? ? ? ? ? ? while((++jTemp<20 )&&( 5 != countTemp ))
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? if(colorFlag == qipan[i][jTemp])
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(5 == countTemp)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(0 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("黑棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if(1 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("白棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? goto whileEnd;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp = 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? //縱向可以贏
? ? ? ? ? ? ? ? ? ? iTemp = i;
? ? ? ? ? ? ? ? ? ? jTemp = j;
? ? ? ? ? ? ? ? ? ? countTemp = 1;
? ? ? ? ? ? ? ? ? ? while((++iTemp<20 )&&(5 !=countTemp))
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? if(colorFlag == qipan[iTemp][j])
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(5 == countTemp)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(0 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("黑棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if(1 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("白棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? goto whileEnd;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp= 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? //斜向,從左上到右下方向檢查
? ? ? ? ? ? ? ? ? ? iTemp = i;
? ? ? ? ? ? ? ? ? ? jTemp = j;
? ? ? ? ? ? ? ? ? ? countTemp = 1;
? ? ? ? ? ? ? ? ? ? while((++iTemp<20 )&&(++jTemp<20 )&&(5 !=countTemp))
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? if(colorFlag == qipan[iTemp][jTemp])
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(5 == countTemp)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(0 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("黑棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if(1 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("白棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? goto whileEnd;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp = 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? ? ? //斜向,從右上到左下方向檢查
? ? ? ? ? ? ? ? ? ? iTemp = i;
? ? ? ? ? ? ? ? ? ? jTemp = j;
? ? ? ? ? ? ? ? ? ? countTemp = 1;
? ? ? ? ? ? ? ? ? ? while((++iTemp>=0 )&&(--jTemp>=0)&&(5 !=countTemp))
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? if(colorFlag == qipan[iTemp][jTemp])
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp++;
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(5 == countTemp)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(0 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("黑棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else if(1 == colorFlag)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? printf("白棋贏了!\n");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? goto whileEnd;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? countTemp = 0;
? ? ? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? }
?
? ? ? ? }
?
? ? }
whileEnd:
? ? printf("重新開始,還是退出?重新開始請(qǐng)按y/Y,退出請(qǐng)按任意鍵:");
? ? fflush(stdin);
? ? op = getchar();
?
? ? if(('y' == op) ||( 'Y' == op))
? ? {
? ? ? ? system("cls");
? ? ? ? printf("已經(jīng)重新開始了,請(qǐng)輸入第一顆棋子的坐標(biāo):\n\n\n");
? ? ? ? goto again;
? ? }
?
}

效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-用棧實(shí)現(xiàn)表達(dá)式求值的方法詳解

    數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)-用棧實(shí)現(xiàn)表達(dá)式求值的方法詳解

    本篇文章是對(duì)在c語(yǔ)言中用棧實(shí)現(xiàn)表達(dá)式求值的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)個(gè)人通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • opencv學(xué)習(xí)筆記C++繪制灰度直方圖

    opencv學(xué)習(xí)筆記C++繪制灰度直方圖

    這篇文章主要為大家介紹了opencv學(xué)習(xí)筆記C++繪制灰度直方圖的實(shí)現(xiàn)代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • C++抽象基類講解

    C++抽象基類講解

    這篇文章主要介紹了C++抽象基類講解,象基類abstract base class簡(jiǎn)稱ABC,C++實(shí)現(xiàn)繼承的時(shí)候,需要保證派生類和基類之間是一種is-a的關(guān)系。在大多數(shù)時(shí)刻,這樣的關(guān)系是沒(méi)有問(wèn)題的,然而在一些特殊的情況可能會(huì)遇到問(wèn)題,下面來(lái)看看文章的具體介紹吧
    2022-01-01
  • c_str()的用法詳細(xì)解析

    c_str()的用法詳細(xì)解析

    c_str()就是把string類對(duì)象轉(zhuǎn)換成和c兼容的char *類型。這是為了與c語(yǔ)言兼容,在c語(yǔ)言中沒(méi)有string類型,故必須通過(guò)string類對(duì)象的成員函數(shù)c_str()把string 對(duì)象轉(zhuǎn)換成c中的字符串樣式
    2013-09-09
  • QT+OpenCV實(shí)現(xiàn)錄屏功能

    QT+OpenCV實(shí)現(xiàn)錄屏功能

    這篇文章主要為大家詳細(xì)介紹了QT+OpenCV實(shí)現(xiàn)錄屏功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++中引用處理的基本方法

    C++中引用處理的基本方法

    引用不是新定義了一個(gè)變量,而是給已經(jīng)存在的變量取了一個(gè)別名,編譯器不會(huì)為引用變量開辟內(nèi)存空間,他和他引用的變量共用一塊內(nèi)存空間,下面這篇文章主要給大家介紹了關(guān)于C++中引用處理的基本方法,需要的朋友可以參考下
    2022-12-12
  • 詳解圖的應(yīng)用(最小生成樹、拓?fù)渑判?、關(guān)鍵路徑、最短路徑)

    詳解圖的應(yīng)用(最小生成樹、拓?fù)渑判?、關(guān)鍵路徑、最短路徑)

    這篇文章主要介紹了圖的應(yīng)用(最小生成樹、拓?fù)渑判?、關(guān)鍵路徑、最短路徑),需要的朋友可以參考下
    2015-08-08
  • C語(yǔ)言 數(shù)組指針詳解及示例代碼

    C語(yǔ)言 數(shù)組指針詳解及示例代碼

    本文主要介紹C語(yǔ)言 數(shù)組指針,這里整理了相關(guān)資料并附示例待會(huì)及實(shí)現(xiàn)結(jié)果,幫助大家學(xué)習(xí)C語(yǔ)言中指針的知識(shí),有需要學(xué)習(xí)此部分內(nèi)容的朋友可以參考下
    2016-08-08
  • C語(yǔ)言中的5種簡(jiǎn)單排序算法(適合小白)

    C語(yǔ)言中的5種簡(jiǎn)單排序算法(適合小白)

    在編程練習(xí)時(shí)我們經(jīng)常會(huì)遇到一些將一串亂序的數(shù)字排列成有序的數(shù)列(遞增,遞減)的問(wèn)題,以此起到解決問(wèn)題的效果,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中的5種簡(jiǎn)單排序算法的相關(guān)資料,需要的朋友可以參考下
    2023-03-03

最新評(píng)論