生命游戏代码Word格式.docx
- 文档编号:21569144
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:17.82KB
生命游戏代码Word格式.docx
《生命游戏代码Word格式.docx》由会员分享,可在线阅读,更多相关《生命游戏代码Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
//定义二维世界
015
IMAGEimgLive,imgEmpty;
//定义活细胞和无细胞区域的图案
016
017
018
019
//函数声明
020
voidInit();
//初始化
021
voidSquareWorld();
//创建一个细胞以方形分布的世界
022
voidRandWorld();
//创建一个细胞随机分布的世界
023
voidPaintWorld();
//绘制世界
024
voidEvolution();
//进化
025
026
027
028
//主函数
029
intmain()
030
{
031
Init();
032
intSpeed=500;
//游戏速度(毫秒)
033
034
while(true)
035
{
036
if(kbhit()||Speed==900)
037
038
charc=getch();
039
040
if(c=='
'
&
&
Speed!
=900)
041
c=getch();
042
043
if(c>
='
0'
c<
9'
)
044
Speed=('
-c)*100;
045
046
switch(c)
047
048
case'
s'
:
049
S'
050
SquareWorld();
//产生默认的细胞以方形分布的世界
051
break;
052
053
r'
054
R'
055
RandWorld();
056
057
058
caseVK_ESCAPE:
059
gotoEND;
060
}
061
062
063
Evolution();
064
PaintWorld();
065
066
if(Speed!
=900)//速度为900时,为按任意键单步执行
067
Sleep(Speed);
068
069
070
END:
071
closegraph();
072
return0;
073
}
074
075
076
077
078
//函数定义
079
080
//初始化
081
voidInit()
082
083
//创建绘图窗口
084
initgraph(640,480);
085
086
//设置随机种子
087
srand((unsigned)time(NULL));
088
089
//调整世界图案的大小
090
Resize(&
imgLive,4,4);
091
imgEmpty,4,4);
092
093
//绘制有生命世界的图案
094
SetWorkingImage(&
imgLive);
095
setcolor(GREEN);
096
setfillstyle(GREEN);
097
fillellipse(0,0,3,3);
098
099
//绘制无生命世界的图案
100
imgEmpty);
101
setcolor(DARKGRAY);
102
rectangle(1,1,2,2);
103
104
//恢复对默认窗口的绘图
105
SetWorkingImage(NULL);
106
107
//输出简单说明
108
setfont(24,0,"
黑体"
);
109
outtextxy(254,18,"
生命游戏"
110
RECTr={440,60,620,460};
111
setfont(12,0,"
宋体"
112
drawtext("
生命游戏简介:
\n 生命游戏包括一个二维矩形世界,这个世界中的每个方格居住\
113
着一个活着的或死了的细胞。
一个细胞在下一个时刻生死取决于相邻八个方格中活着的细胞\
114
的数量。
如果一个细胞周围的活细胞数量多于3个,这个细胞会因为资源匮乏而在下一个时\
115
刻死去;
如果一个位置周围有3个活细胞,则该位置在下一个时刻将诞生一个新的细胞;
如\
116
果一个位置周围有2个活细胞,则该位置的细胞生死状态保持不变;
如果一个细胞周围的活\
117
细胞少于2个,那么这个细胞会因太孤单而死去。
这样整个生命世界才不至于太过荒凉或拥\
118
挤,而是一种动态的平衡。
\n\n游戏控制:
\n0-9:
调节速度(慢--快)\nESC:
退出\n空格:
\
119
暂停|继续\nS:
创建细胞以方形分布的世界\nR:
创建细胞随机分布的世界"
120
r,DT_WORDBREAK);
121
122
123
124
125
126
//创建一个细胞以方形分布的世界
127
voidSquareWorld()
128
129
memset(world,0,102*102*sizeof(__int8));
130
131
for(intx=1;
x<
=100;
x++)
132
world[x][1]=world[x][100]=1;
133
134
for(inty=1;
y<
y++)
135
world[1][y]=world[100][y]=1;
136
137
138
//创建一个细胞随机分布的世界
139
voidRandWorld()
140
141
142
143
world[x][y]=rand()%2;
144
145
146
//绘制世界
147
voidPaintWorld()
148
149
150
151
putimage(16+x*4,56+y*4,world[x][y]?
imgLive:
152
153
154
//进化
155
voidEvolution()
156
157
__int8tmp[102][102]={0};
//临时数组
158
intsum;
159
160
161
162
163
164
//计算周围活着的生命数量
165
sum=world[x+1][y]+world[x+1][y-1]+world[x][y-1]+world[x-1][y-1]
166
+world[x-1][y]+world[x-1][y+1]+world[x][y+1]+world[x+1][y+1];
167
168
//计算当前位置的生命状态
169
switch(sum)
170
171
case3:
tmp[x][y]=1;
172
case2:
tmp[x][y]=world[x][y];
173
default:
tmp[x][y]=0;
174
175
176
177
178
//将临时数组恢复为世界
179
memcpy(world,tmp,102*102*sizeof(__int8));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 生命 游戏 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)