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

基于C語言實現(xiàn)簡單五子棋游戲

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

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

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

今天遇到一個學弟在實現(xiàn)的時候遇到一些問題,所以將實現(xiàn)的過程記錄下

水平有限,僅供參考,互相交流,共同進步。

#include<stdio.h>
#include<windows.h>
?
int main()
{
?
? ? int i,j;//表示棋盤橫縱坐標
? ? /*************************************************
? ? *
? ? *繪制表格需要的字符:┌ ┬ ┐├ ┼ ┤└ ┴ ┘│─●○
? ? *數(shù)組的值0表示黑棋,1表示白棋,2表示該位置沒有棋
? ? *
? ? */
? ? 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("請輸入棋子位置(棋盤大小為20*20),如2,2: ");
? ? ? ? scanf("%d,%d", &i,&j);
?
? ? ? ? if(i<1 || i >20 || j<1 || j>20)
? ? ? ? {
? ? ? ? ? ? printf("輸入的位置超出了棋盤的范圍,請重新輸入!\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ù)棋盤對應位置屬性,繪制最新狀態(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;
? ? ? ? ? ? ? ? //如果檢測到該有棋子,則檢查與該棋子有關的是否可以贏
? ? ? ? ? ? ? ? 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("重新開始,還是退出?重新開始請按y/Y,退出請按任意鍵:");
? ? fflush(stdin);
? ? op = getchar();
?
? ? if(('y' == op) ||( 'Y' == op))
? ? {
? ? ? ? system("cls");
? ? ? ? printf("已經(jīng)重新開始了,請輸入第一顆棋子的坐標:\n\n\n");
? ? ? ? goto again;
? ? }
?
}

效果圖:

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

相關文章

  • 數(shù)據(jù)結構課程設計-用棧實現(xiàn)表達式求值的方法詳解

    數(shù)據(jù)結構課程設計-用棧實現(xiàn)表達式求值的方法詳解

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

    C語言實現(xiàn)個人通訊錄管理系統(tǒng)

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

    opencv學習筆記C++繪制灰度直方圖

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

    C++抽象基類講解

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

    c_str()的用法詳細解析

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

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

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

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

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

    詳解圖的應用(最小生成樹、拓撲排序、關鍵路徑、最短路徑)

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

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

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

    C語言中的5種簡單排序算法(適合小白)

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

最新評論