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

C語言編寫五子棋游戲

 更新時(shí)間:2020年02月06日 08:32:49   作者:weixin_46265516  
這篇文章主要為大家詳細(xì)介紹了C語言編寫五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語言編寫五子棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

一、構(gòu)建棋盤

首先可以用一個(gè)二維數(shù)組來構(gòu)建棋盤,下標(biāo)表示位置,內(nèi)容表示黑子白子或者空位。當(dāng)數(shù)組內(nèi)容為1時(shí),該位置為白字,當(dāng)數(shù)組為0時(shí),該位置為白子,空位輸出+

int w[11][11], flag = 0;
 int a, b;
 
 for (int k = 0; k < 11; k++)
   printf("第%d列\(zhòng)t", k);
  printf("\n");
  for (int i = 0; i < 11; i++) {
   for (int j = 0; j < 11; j++) {
    if (w[i][j] == 0) printf("黑\t");
    else if (w[i][j] == 1) printf("白\t");
    else printf("+\t");
   }
   printf("第%d行\(zhòng)n\n", i);
  }

二、判斷位置超范圍與錯(cuò)誤輸入

當(dāng)輸入的棋子坐標(biāo)超出范圍或者該位置已經(jīng)存在棋子,則再次輸入棋子坐標(biāo)。其中flag作為標(biāo)志作為判別黑手白手的標(biāo)志。

if (flag == 0) {
   printf("黑色下棋\n");
   scanf("%d %d", &a, &b);
   while (a < 0 || a>10 || b < 0 || b>10) {
    printf("此位置超出范圍,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   while (w[a][b] == 0 || w[a][b] == 1)   
   {
    printf("此位置已有棋子,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   flag = 1;
   w[a][b] = 0;
  }
  else {
   printf("白色下棋\n");
   scanf("%d %d", &a, &b);
   while (a < 0 || a>10 || b < 0 || b>10) {
    printf("此位置超出范圍,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   while (w[a][b] == 0 || w[a][b] == 1)
   {
    printf("此位置已有棋子,請重新輸入:");
    scanf("%d %d", &a, &b);
   }

三、判斷勝負(fù)

在五子棋中,出現(xiàn)五個(gè)棋子排成一排或者一列或者斜排即可判為勝出。每當(dāng)落下一個(gè)棋子,對該棋子前后上下斜排五個(gè)棋子進(jìn)行判別,超過五個(gè)連續(xù)的一樣顏色的棋子則勝出。

int A = 1, B = 1, jieguo = 0, C = 1, D = 1;
  int x = 1, y = 1, m = 1, n = 1;
  if (w[a][b] == 1) {
   for (int i = 1; i < 5; i++) {
    if (w[a][b + i] == 1) A++;
    else break;    
   }
   for (int i = 1; i < 5; i++) {
    if (w[a][b - i] == 1) A++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a+i][b] == 1) C++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a - i][b] == 1) C++;
    else break;
   }
   if (A > 4 || C > 4) jieguo = 1;//白棋勝利標(biāo)志
   else {
    for (int i = 1; i < 5; i++) {
     if (w[a+i][b + i] == 1) x++;
     else break;
    }
    for (int i = 1; i < 5; i++) {
     if (w[a-i][b - i] == 1) x++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a + i][b-i] == 1) y++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a - i][b+i] == 1) y++;
     else break;
    }
    if (x > 4 || y > 4) jieguo = 1;
   }
  }
  if (w[a][b] == 0) {
   for (int i = 1; i < 5; i++) {
    if (w[a][b + i] == 0) B++;
    else break;
   }
   for (int i = 1; i < 5; i++) {
    if (w[a][b - i] == 0) B++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a + i][b] == 0) D++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a - i][b] == 0) D++;
    else break;
   }
   if (B > 4 || D > 4) jieguo = 2;//黑棋勝利標(biāo)志
   else {
    for (int i = 1; i < 5; i++) {
     if (w[a + i][b + i] == 0) m++;
     else break;
    }
    for (int i = 1; i < 5; i++) {
     if (w[a - i][b - i] == 0) m++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a + i][b - i] == 0) n++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a - i][b + i] == 0) n++;
     else break;
    }
    if (m > 4 || n > 4) jieguo = 2;
   }
  }

程序完成

四、演示結(jié)果

五、源代碼

int main() {
 int w[11][11], flag = 0;
 int a, b;
 while (1) {
  if (flag == 0) {
   printf("黑色下棋\n");
   scanf("%d %d", &a, &b);
   while (a < 0 || a>10 || b < 0 || b>10) {
    printf("此位置超出范圍,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   while (w[a][b] == 0 || w[a][b] == 1)   
   {
    printf("此位置已有棋子,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   flag = 1;
   w[a][b] = 0;
  }
  else {
   printf("白色下棋\n");
   scanf("%d %d", &a, &b);
   while (a < 0 || a>10 || b < 0 || b>10) {
    printf("此位置超出范圍,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   while (w[a][b] == 0 || w[a][b] == 1)
   {
    printf("此位置已有棋子,請重新輸入:");
    scanf("%d %d", &a, &b);
   }
   flag = 0;
   w[a][b] = 1;
  }
  
  int A = 1, B = 1, jieguo = 0, C = 1, D = 1;
  int x = 1, y = 1, m = 1, n = 1;
  if (w[a][b] == 1) {
   for (int i = 1; i < 5; i++) {
    if (w[a][b + i] == 1) A++;
    else break;    
   }
   for (int i = 1; i < 5; i++) {
    if (w[a][b - i] == 1) A++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a+i][b] == 1) C++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a - i][b] == 1) C++;
    else break;
   }
   if (A > 4 || C > 4) jieguo = 1;//白棋勝利標(biāo)志
   else {
    for (int i = 1; i < 5; i++) {
     if (w[a+i][b + i] == 1) x++;
     else break;
    }
    for (int i = 1; i < 5; i++) {
     if (w[a-i][b - i] == 1) x++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a + i][b-i] == 1) y++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a - i][b+i] == 1) y++;
     else break;
    }
    if (x > 4 || y > 4) jieguo = 1;
   }
  }
  if (w[a][b] == 0) {
   for (int i = 1; i < 5; i++) {
    if (w[a][b + i] == 0) B++;
    else break;
   }
   for (int i = 1; i < 5; i++) {
    if (w[a][b - i] == 0) B++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a + i][b] == 0) D++;
    else break;
   }
   for (int i = 1; i < 5; i++)
   {
    if (w[a - i][b] == 0) D++;
    else break;
   }
   if (B > 4 || D > 4) jieguo = 2;//黑棋勝利標(biāo)志
   else {
    for (int i = 1; i < 5; i++) {
     if (w[a + i][b + i] == 0) m++;
     else break;
    }
    for (int i = 1; i < 5; i++) {
     if (w[a - i][b - i] == 0) m++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a + i][b - i] == 0) n++;
     else break;
    }
    for (int i = 1; i < 5; i++)
    {
     if (w[a - i][b + i] == 0) n++;
     else break;
    }
    if (m > 4 || n > 4) jieguo = 2;
   }
  }
 
  for (int k = 0; k < 11; k++)
   printf("第%d列\(zhòng)t", k);
  printf("\n");
  for (int i = 0; i < 11; i++) {
   for (int j = 0; j < 11; j++) {
    if (w[i][j] == 0) printf("黑\t");
    else if (w[i][j] == 1) printf("白\t");
    else printf("+\t");
   }
   printf("第%d行\(zhòng)n\n", i);
  }
  if (jieguo == 1) {
   printf("白棋勝利");
   break;
  }
  if (jieguo == 2) {
   printf("黑棋勝利");
   break;
  }
 }
 return 0;
}

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

相關(guān)文章

  • C++實(shí)現(xiàn)LeetCode(207.課程清單)

    C++實(shí)現(xiàn)LeetCode(207.課程清單)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(207.課程清單),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言實(shí)現(xiàn)紙牌計(jì)算24點(diǎn)小游戲

    C語言實(shí)現(xiàn)紙牌計(jì)算24點(diǎn)小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)紙牌計(jì)算24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C++類的分離式寫法介紹示例

    C++類的分離式寫法介紹示例

    今天小編就為大家分享一篇關(guān)于C++類的分離式寫法介紹示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言簡明講解歸并排序的應(yīng)用

    C語言簡明講解歸并排序的應(yīng)用

    這篇文章主要介紹了 c語言排序之歸并排序,歸并就是把兩個(gè)或多個(gè)序列合并,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序的圖文教程

    Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序的圖文教程

    這篇文章主要介紹了Visual?Studio?2022使用MinGW來編譯調(diào)試C/C++程序,以實(shí)例來簡單介紹一下VS2022中如何使用MinGW來編譯、調(diào)試C/C++程序,需要的朋友可以參考下
    2022-08-08
  • C++ 11和C++98相比有哪些新特性

    C++ 11和C++98相比有哪些新特性

    C++11標(biāo)準(zhǔn)提供了許多有用的新特性。這篇文章特別針對使C++11和C++98相比看上去像一門新語言的特性
    2017-03-03
  • C++函數(shù)pyrUp和pyrDown來實(shí)現(xiàn)圖像金字塔功能

    C++函數(shù)pyrUp和pyrDown來實(shí)現(xiàn)圖像金字塔功能

    這篇文章主要介紹了C++函數(shù)pyrUp和pyrDown來實(shí)現(xiàn)圖像金字塔功能,如何使用OpenCV函數(shù) pyrUp 和 pyrDown 對圖像進(jìn)行向上和向下采樣,需要的朋友可以參考下
    2017-03-03
  • C語言的Struct Hack筆記

    C語言的Struct Hack筆記

    這篇文章主要介紹了C語言的Struct Hack例子,個(gè)人的一篇筆記,需要的朋友可以參考下吧
    2014-04-04
  • C語言算法的時(shí)間復(fù)雜度和空間復(fù)雜度

    C語言算法的時(shí)間復(fù)雜度和空間復(fù)雜度

    這篇文章主要介紹了C語言算法的時(shí)間復(fù)雜度和空間復(fù)雜度,算法在編寫成可執(zhí)行程序后,運(yùn)行時(shí)需要耗費(fèi)時(shí)間資源和空間(內(nèi)存)資源,更多相關(guān)需要的朋友可以參考一下
    2022-07-07
  • C/C++如何實(shí)現(xiàn)循環(huán)左移,循環(huán)右移

    C/C++如何實(shí)現(xiàn)循環(huán)左移,循環(huán)右移

    這篇文章主要介紹了C/C++如何實(shí)現(xiàn)循環(huán)左移,循環(huán)右移,具有很好的參考價(jià)值,希望對大家有所幫助。具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論