已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
生命游戏源代码*定义生命游戏参数*Dim gridSize As Integer 格网大小Dim gridNumberCol As Long 列格网数Dim gridNumberRow As Long 行格网数Dim gridMatrix() As Byte 格网矩阵Dim gridMTemp() As Byte 格网临时矩阵Dim intervalTime As Long 演化间隔时间Dim gridFillColor As Long 格网填充颜色Dim developTimes As Long 演化次数Dim liveNumbers As Long 存活个数*初始化生命游戏参数*Private Sub initLifeConfig() gridSize = txtGridSize.Text intervalTime = txtTime.Text gridNumberCol = Int(picLife.ScaleWidth / gridSize) + 1 gridNumberRow = Int(picLife.ScaleHeight / gridSize) + 1 txtCANumber.Text = CLng(gridNumberCol * gridNumberRow / 3) Label6.Caption = 不能超过 & gridNumberCol * gridNumberRow & 个 ReDim gridMatrix(0 To gridNumberCol - 1, 0 To gridNumberRow - 1) ReDim gridMTemp(0 To gridNumberCol - 1, 0 To gridNumberRow - 1) gridFillColor = vbGreen picLife.FillStyle = 0 picLife.FillColor = gridFillColor picLife.BackColor = vbWhite timerLife.Enabled = False timerLife.Interval = intervalTime developTimes = 0 liveNumbers = 0End Sub*输出某个元胞的状态*Private Sub printgridcolor(ByVal i As Long, ByVal j As Long, ByVal k As Long) If k = 1 Then picLife.Line (i * gridSize, j * gridSize)-(i + 1) * gridSize - 1, (j + 1) * gridSize - 1), gridFillColor, B ElseIf k = 0 Then picLife.FillColor = vbWhite picLife.Line (i * gridSize, j * gridSize)-(i + 1) * gridSize - 1, (j + 1) * gridSize - 1), vbWhite, B picLife.FillColor = gridFillColor End IfEnd Sub*输出元胞状态*Private Sub exportLifeStatus() picLife.Cls For i = 0 To gridNumberCol - 1 For j = 0 To gridNumberRow - 1 If gridMatrix(i, j) = 1 Then Call printgridcolor(i, j, 1) Next j Next iEnd Sub*元胞演化(需要完成的部分!)*Private Sub lifeDelevoping() Dim neighborLiveNumber As Byte 记录邻域存活的元胞数 Dim row As Integer, col As Integer 记录元胞所在的行和列 neighborLiveNumber = 0 初始化邻域存活的元胞数 需要用到的变量: gridNumberCol As Long 列格网数 gridNumberRow As Long 行格网数 gridMatrix() As Byte 格网矩阵,当前的CA格局,大小:gridNumberCol * gridNumberRow,下标从0开始 gridMTemp() As Byte 格网临时矩阵,下一回合的CA格局,大小:gridNumberCol * gridNumberRow,下标从0开始 以上两个二维数组的下标,先Col后Row 元胞状态说明:死亡的元胞为0,存活的元胞为1 -开始生命元胞的演化- For row = 0 To gridNumberRow - 1 For col = 0 To gridNumberCol - 1 -判断邻域存活的元胞数- Dim i As Integer, j As Integer Your code For i = row - 1 To row + 1 For j = col - 1 To col + 1 If (j = 0 And i = 0) And (j gridNumberCol And i 3 Or neighborLiveNumber 2 Then gridMTemp(col, row) = 0 Else gridMTemp(col, row) = 1 End If End If neighborLiveNumber = 0 Next col Next row -生命元胞演化结束- -返回元胞的状态,并显示在格网上- For i = 0 To gridNumberCol - 1 For j = 0 To gridNumberRow - 1 gridMatrix(i, j) = gridMTemp(i, j) Next j Next i Call exportLifeStatus -End Sub*初始化窗体外观*Private Sub initFormVisible() If frmLife.WindowState = 1 Then Exit Sub framConfig.Top = 0 framConfig.Left = 10 framConfig.Width = frmLife.ScaleWidth - 20 picLife.Top = framConfig.Top + framConfig.Height + 10 picLife.Left = framConfig.Left picLife.Width = framConfig.Width picLife.Height = frmLife.ScaleHeight - picLife.Top - 10 framConfig2.Left = (framConfig.Width - framConfig2.Width) / 2End Sub*Private Sub cmdBegin_Click() timerLife.Enabled = TrueEnd SubPrivate Sub cmdEnd_Click() timerLife.Enabled = False For i = 0 To gridNumberCol - 1 For j = 0 To gridNumberRow - 1 If gridMatrix(i, j) = 1 Then liveNumbers = liveNumbers + 1 End If Next j Next i lblLiveNumbers.Caption = liveNumbers liveNumbers = 0End SubPrivate Sub cmdExit_Click() EndEnd SubPrivate Sub cmdRandomCA_Click() -随机生成一定数目存活的元胞- Dim liveNumber As Long Dim liveNumberTotal As Long liveNumber = 0 liveNumberTotal = txtCANumber.Text timerLife.Enabled = False picLife.Cls For i = 0 To gridNumberCol - 1 For j = 0 To gridNumberRow - 1 gridMatrix(i, j) = 0 Next j Next i Do While liveNumber = liveNumberTotal i = Int(gridNumberCol * Rnd) j = Int(gridNumberRow * Rnd) If gridMatrix(i, j) = 0 Then liveNumber = liveNumber + 1 gridMatrix(i, j) = 1 Call printgridcolor(i, j, 1) End If Loop End SubPrivate Sub cmdReset_Click() developTimes = 0 Call initLifeConfigEnd SubPrivate Sub Form_Load() Call initFormVisible Call initLifeConfigEnd SubPrivate Sub Form_Resize() -resize时,重置窗体参数- Call initFormVisible Call initLifeConfigEnd SubPrivate Sub picLife_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) -鼠标按下给定元胞初始状态- i = Int(X / gridSize) j = Int(Y / gridSize) If gridMatrix(i, j) = 0 Then gridMatrix(i, j) = 1 Call printgridcolor(i, j, 1) Else gridMatrix(i, j) = 0 Call printgridcolor(i, j, 0) End IfEnd SubPrivate Sub timerLife_Timer() developTimes = developTimes + 1 lblTimes.Caption = t= & developTimes & 次 Call lifeDelevoping If developTimes = 1 Or developTimes = 10 Or developTimes = 20 Or developTimes = 50 Or developTimes = 100 Or developTimes = 200 Or developTimes = 500 Or developTimes = 1000 Then timerLife.Enabled = False For i = 0 To gridNumberCol - 1 For j = 0 To gridNumberRow - 1 If gridMatrix(i, j) = 1 Then liveNumbers = liveNumbers + 1 Next j Next i lbl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年部编版新教材语文四年级上册第八单元测试题及答案
- 2026年最难的iq测试题及答案
- 2026年死困监测测试题及答案
- 2026内蒙古呼伦贝尔市机关事务服务中心竞争性比选2人(7-7)参考题库及完整答案详解【夺冠】
- 2025浙江交工集团股份有限公司建筑工业化事业部招聘28人笔试历年典型考点题库附带答案详解
- 2025山西太原市面向劳务派遣人员招聘2人考试历年常考点+创新题答案详解
- 2025四川内江市威远县国有资产经营有限公司石板河旅游区招聘2人笔试历年难易错考点试卷带答案解析
- CN114611317B 基于树状拓扑结构的多方向随机抛光路径生成方法 (西南交通大学)
- 2026浙江温州市洞头人才发展有限公司招聘2人(7-2)备考题库附参考答案详解(培优A卷)
- 2026重庆市铜梁区市民服务和营商环境促进中心公益性岗位招聘3人备考题库附答案详解(巩固)
- 2026中国平煤神马控股集团专科层次毕业生招聘110人笔试历年常考点试题专练附带答案详解
- 2026年政工员考试题库及答案
- 2026年河南省中考真题道德与法治试卷和答案
- 2026中国航空发动机集团总部招聘36人笔试备考题库及答案详解
- 2026年新课标人教版六年级数学上册全册教案
- 防灾减灾安全知识普及课件
- 精神科物理治疗工作制度
- 北京市第四中学2026届高一数学第二学期期末联考试题含解析
- 探索绿色能源点亮未来生活-小学六年级综合实践活动教学设计
- 闲鱼培训教学课件
- 2026江苏盐业集团秋招面笔试题及答案
评论
0/150
提交评论