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

C語(yǔ)言版五子棋游戲的實(shí)現(xiàn)代碼

 更新時(shí)間:2021年07月29日 11:30:07   作者:涇箐  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言版五子棋游戲的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

這次看了幾位大佬的做法,我們也做了很多修改嘗試。算是第一次嘗試合作完成項(xiàng)目。

我認(rèn)為學(xué)到的東西:

1、第一次嘗試寫項(xiàng)目,把函數(shù)分到不同的.c文件中后更好看了一些。
2、在研究過(guò)程中應(yīng)該分清主次。代碼正確運(yùn)行才是基礎(chǔ)要求,其他什么美化界面,調(diào)字體調(diào)顏色都并非重點(diǎn)。
3、從代碼中學(xué)到的,①是采用落子數(shù)來(lái)判斷該輪到黑方下還是白方下(落子數(shù)為2的倍數(shù)時(shí)黑方下,否則白方下),這樣也能判斷出是哪一方勝利,而且落子數(shù)還可以判斷棋盤是否下滿(==16*16時(shí)棋盤落滿,平局) ②是勝利條件的判斷,以中間子為參考,看兩邊的四個(gè)子是否和他顏色相同。

規(guī)則

在一個(gè)1616的棋盤上,黑白雙方交替落子,每次落下子后如果棋盤上出現(xiàn)了五個(gè)同色棋子橫向/豎向/斜向連接,則該方勝利。如果在棋盤下滿后(即下了1616個(gè)子后)仍未分出勝負(fù),則為平局。

邏輯

初始化棋盤,是一個(gè)16*16的二維數(shù)組(定義宏 N=16),一開(kāi)始每一格都初始化為0。用一個(gè)不斷++的落子數(shù)變量%2來(lái)判斷本回合是黑方下還是白方下,;每次玩家輸入橫縱坐標(biāo),該處的變量值改變(黑子為1,白子為2)。每次落子判斷全盤是否有五子連珠,如果有則結(jié)束游戲,如果沒(méi)有則繼續(xù)下。當(dāng)落子數(shù)達(dá)到N*N即棋盤下滿,還沒(méi)有出現(xiàn)五子連珠時(shí),則判斷為平局,結(jié)束游戲。

五子棋勝負(fù)條件判斷

判斷原理:

勝負(fù)的判斷是在每顆棋子落下之后進(jìn)行,所以用這一子的坐標(biāo)為基準(zhǔn)前后左右斜各個(gè)方向來(lái)看是否取勝。

具體思想:

按照五子棋規(guī)則,當(dāng)一方的棋子,在橫向,縱向或斜向連續(xù)五個(gè)均為同一用戶的棋子時(shí),代表勝利。
另外,勝利判斷只需要在一個(gè)新子落子時(shí)判斷,且僅需要判斷新子所在的四條線上(縱橫加兩個(gè)斜線)是否滿足條件即可。
所以,可以以新子坐標(biāo)為基準(zhǔn)點(diǎn),判斷四次。
比如橫向的,需要判斷左側(cè)和右側(cè)連續(xù)的同類棋子個(gè)數(shù),如果左側(cè)+右側(cè)+1(自身)總數(shù)>=5,則為勝利。
在判斷勝利的時(shí)候,首先我們要排除空子的情況,然后當(dāng)兩個(gè)斜線的時(shí)候, 無(wú)勝情況下,判斷直線,當(dāng)為兩斜線及直線無(wú)勝情況下,判斷橫線。

參考代碼如下:

int win()
{
 extern int arr[100][100];
 int k = 0,l = 0;
 int flag = 0; 
 for(k=2;k<N-2;k++) 
  for(l=2;l<N-2;l++)
  {
   if(arr[k][l]!=0&&arr[k-2][l-2]==arr[k][l]&&arr[k-1][l-1]==arr[k][l]&&arr[k+1][l+1]==arr[k][l]&&arr[k+2][l+2]==arr[k][l])
   {
    flag=1;
    break;
   }
   if(arr[k][l]!=0&&arr[k+2][l-2]==arr[k][l]&&arr[k+1][l-1]==arr[k][l]&&arr[k-1][l+1]==arr[k][l]&&arr[k-2][l+2]==arr[k][l])
   {
    flag=1;
    break;
   }
  }
 if(flag==0) 
  for(k=0;k<N;k++)
   for(l=2;l<N-2;l++)
   {
    if(arr[k][l]!=0&&arr[k][l-2]==arr[k][l]&&arr[k][l-1]==arr[k][l]&&arr[k][l+1]==arr[k][l]&&arr[k][l+2]==arr[k][l])
    {
     flag=1;
     break;
    }
   }
 if(flag==0) 
  for(k=2;k<N-2;k++)
   for(l=0;l<N;l++)
   {
    if(arr[k][l]!=0&&arr[k+2][l]==arr[k][l]&&arr[k+1][l]==arr[k][l]&&arr[k-1][l]==arr[k][l]&&arr[k-2][l]==arr[k][l])
    {
     flag=1;
     break;
    }
   }
 return flag; 
}

注:

1.中的arr[k][l]!=0是排除空子的情況。
2.最后返回判斷結(jié)果時(shí), 有勝為1,無(wú)為0,誰(shuí)勝無(wú)必要判斷,因?yàn)椋l(shuí)尾手了的一定是勝的。

演示

開(kāi)始

輸入坐標(biāo)

第二回合

游戲結(jié)束

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

相關(guān)文章

  • c++ 數(shù)組定義及初始化詳解

    c++ 數(shù)組定義及初始化詳解

    這篇文章主要介紹了c++ 數(shù)組定義及初始化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • C語(yǔ)言全面梳理結(jié)構(gòu)體知識(shí)點(diǎn)

    C語(yǔ)言全面梳理結(jié)構(gòu)體知識(shí)點(diǎn)

    結(jié)構(gòu)體是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)體的每個(gè)成員可以是不同類型的變量。本文將通過(guò)示例為大家詳細(xì)講講C語(yǔ)言中結(jié)構(gòu)體的使用,需要的可以參考一下
    2022-07-07
  • C、C++線性表基本操作的詳細(xì)介紹

    C、C++線性表基本操作的詳細(xì)介紹

    這篇文章主要給大家介紹了關(guān)于C、C++線性表基本操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 一文帶你學(xué)習(xí)C/C++中的<Windows.h>庫(kù)

    一文帶你學(xué)習(xí)C/C++中的<Windows.h>庫(kù)

    c語(yǔ)言 #include<windows.h>是寫window程序需要的重要頭文件,下面這篇文章主要給大家介紹了C/C++中<Windows.h>庫(kù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • C/C++實(shí)現(xiàn)全排列算法的示例代碼

    C/C++實(shí)現(xiàn)全排列算法的示例代碼

    本文主要介紹了C/C++實(shí)現(xiàn)全排列算法的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • 淺析順序結(jié)構(gòu)存儲(chǔ)的棧

    淺析順序結(jié)構(gòu)存儲(chǔ)的棧

    這篇文章主要介紹了順序結(jié)構(gòu)存儲(chǔ)的棧,有需要的朋友可以參考一下
    2014-01-01
  • Qt 實(shí)現(xiàn)鋼筆畫線效果示例及詳細(xì)原理

    Qt 實(shí)現(xiàn)鋼筆畫線效果示例及詳細(xì)原理

    這篇文章主要介紹了Qt 實(shí)現(xiàn)鋼筆畫線效果示例及詳細(xì)原理,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • OpenCV實(shí)現(xiàn)人臉檢測(cè)

    OpenCV實(shí)現(xiàn)人臉檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)人臉檢測(cè)的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++基本用法實(shí)踐之智能指針詳解

    C++基本用法實(shí)踐之智能指針詳解

    為了減少手動(dòng)管理內(nèi)存帶來(lái)的困擾,c++提出了智能指針,可以幫助我們進(jìn)行內(nèi)存管理,下面小編就來(lái)和大家簡(jiǎn)單聊聊C++中智能指針的基本用法吧
    2023-07-07
  • C++中繼承(inheritance)詳解及其作用介紹

    C++中繼承(inheritance)詳解及其作用介紹

    這篇文章主要介紹了C++中繼承(inheritance)詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論