Life Game生命遊戲的C 實現

2021-09-01 17:50:05 字數 1616 閱讀 6047

因為上了鮑老師的課,每週都要做一次課堂練習。所以大三才想起來開c++的坑= =

**是課上乙個半小時寫出來的。難免有考慮不周的地方。如果有什麼問題,請各位不吝賜教~

首先解釋一下life game。開局一張棋盤,隨便放幾個棋子,然後每回合棋盤做一次更新,對棋盤的每個格仔來說,看它周圍的9個鄰居在舊棋盤中的狀態,有兩個棋子則這個格仔下回合是有棋的,有三個棋子則這個格仔下回合狀態不變,其餘情況這個格仔下回合沒有棋子。(鮑老師語:三活兩不變其餘死)

實現思路嘛,陣列開一張棋盤(注意邊界問題,可以多開兩行兩列作為邊界這樣判斷起來方便一些),之後每個回合,先另開乙個棋盤儲存下舊棋盤,按舊棋盤的狀態去更新棋盤。

下面上**

life.h

#ifndef life_h_included

#define life_h_included

#define maxrow 20

#define maxcol 60

class life ;

#endif // life_h_included

life.cpp

#include "life.h"

#include using namespace std;

void life::initialize()

}int tmprow, tmpcol;

cout << "請輸入初始棋子的座標,以x y形式輸入,以-1 -1結束" << endl;

cin >> tmprow >> tmpcol;

// 判斷輸入合法性

while (tmprow != -1 && tmpcol != -1)

else

}else

if (flag)

else

}}void life::show()

else

}cout << endl;

}cout << endl;

}void life::judge()

}for (i = 1; i < maxrow + 1; i++) }}

tmpcount -= board[i][j]; // 去掉自己

// 計算棋子生死

if (tmpcount == 2)

else if (tmpcount == 3)

else }}

// 將新棋盤賦給舊棋盤

for (i = 1; i < maxrow + 1; i++) }}

main.cpp

#include "life.h"

#include "iostream"

using namespace std;

int main(void)

while (tmp == 'y' || tmp == 'y')

}cout << "感謝試玩!" << endl;

return 0;

}

執行結果就是這樣了

(這個是怎麼回事,擠扁了好可憐= =)

生命遊戲(c 雜談)

include include include include include using namespace std define width 1600 define height 1200 int arr width 20 1 height 20 1 int star 18 18 int cnt...

C語言小遊戲 生命遊戲

使用的是microsoft visual studio 2017開發環境 lifegame.cpp 定義控制台應用程式的入口點。include stdafx.h include include include include define high 25 define width 50 全域性變數 ...

用c語言演繹「生命遊戲」

本世紀70年代,人們曾瘋魔一種被稱作 生命遊戲 的小遊戲,這種遊戲相當簡單。假設有乙個像棋盤一樣的方格網,每個方格中放置乙個生命細胞,生命細胞只有兩種狀態 生 或 死 遊戲規則如下 1 如果乙個細胞周圍有3個細胞為生 乙個細胞周圍共有8個細胞 則該細胞為生,即該細胞若原先為死,則轉為生,若原先為生,...