C_and_CPP 板


LINE

目前正在进行写生命游戏的程式 说明 生命游戏(game of life)为1970年由英国数学家J. H. Conway所提出,某一细胞的邻居 包括上、下、左、右、左上、左下、右上与右下相邻之细胞,游戏规则如下: 孤单死亡:如果细胞的邻居小於一个,则该细胞在下一次状态将死亡。 拥挤死亡:如果细胞的邻居在四个以上,则该细胞在下一次状态将死亡。 稳定:如果细胞的邻居为二个或三个,则下一次状态为稳定存活。 复活:如果某位置原无细胞存活,而该位置的邻居为三个,则该位置将复活一细胞。 在24*24的方格中模拟各世代生物体的状态 程式写出来compile有过 可是生物体都没有死亡的现象,一直不断增加到饱和 不晓得是什麽缘故 可以麻烦各位帮忙看看吗@@ 谢谢<(_ _)> #include "stdafx.h" #include "consola.h" #include "iostream" #include "time.h" using namespace std; void showlife ( void ); void nextlife ( void ); int checksquare ( int , int ); void copylife ( void ); int lifeA[24][24] = {0}; int lifeB[24][24] = {0}; int _tmain(int argc, _TCHAR* argv[]) { srand ( time(NULL) ); // initial life for ( int i = 0; i < 300; i++ ) { int x = rand() % 24; int y = rand() % 24; lifeA[x][y] = 1; } while (1) { showlife(); delay(1000); nextlife(); copylife(); } gotoxy(40,20); system("pause"); return 0; } void showlife ( void ) { for ( int i = 0; i < 24; i++ ) { for ( int j = 0; j < 24; j++ ) { if( lifeA[i][j] == 1 ) { gotoxy(i,j); textcolor( LIGHTGREEN ); cout << "o" ; } } } } void nextlife ( void ) { // There are three conditions: // Condition 1: born for ( int i = 0; i < 24; i++ ) { for ( int j = 0; j < 24; j++ ) { if ( lifeA[i][j] == 0 && checksquare(i,j) == 3) { lifeB[i][j] = 1; } } } // Condition 2: dead for ( int i = 0; i < 24; i++ ) { for ( int j = 0; j < 24; j++ ) { if ( lifeA[i][j] == 1 && checksquare(i,j) >= 4 || checksquare(i,j) <= 1) { lifeB[i][j] = 0; } } } // Condition 3: live for ( int i = 0; i < 24; i++ ) { for ( int j = 0; j < 24; j++ ) { if ( lifeA[i][j] == 1 && checksquare(i,j) == 2 || checksquare(i,j) == 3 ) { lifeB[i][j] = 1; } } } } int checksquare ( int x, int y ) { int sum = 0; if ( lifeA[x-1][y-1] == 1 ) // upper left { sum = sum + 1; } if ( lifeA[x][y-1] == 1 ) // upper middle { sum = sum + 1; } if ( lifeA[x+1][y-1] == 1 ) // upper right { sum = sum + 1; } if ( lifeA[x-1][y] == 1 ) // left { sum = sum + 1; } if ( lifeA[x+1][y] == 1 ) // right { sum = sum + 1; } if ( lifeA[x-1][y+1] == 1 ) // lower left { sum = sum + 1; } if ( lifeA[x][y+1] == 1 ) // lower middle { sum = sum + 1; } if ( lifeA[x+1][y+1] == 1 ) // lower right { sum = sum + 1; } return sum; } void copylife ( void ) { for ( int i = 0; i < 24; i++ ) { for ( int j = 0; j < 24; j++ ) { lifeA[i][j] = lifeB[i][j]; } } } --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.5.44
1F:推 ledia:没有把旧的画面清掉 12/08 10:02







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP