`
metaphy
  • 浏览: 344547 次
  • 性别: Icon_minigender_1
  • 来自: 大西洋底
社区版块
存档分类
最新评论

"生命游戏",VB

阅读更多

出差tmd累死,还用VB 做,还tmd这点米,无聊,写个小东西:


“生命游戏”

本世纪70年代,人们曾疯魔一种被称作“生命游戏”的小游戏,这种游戏相当简单。假设有一个像棋盘一样的方格网,每个方格中放置一个生命细胞,生命细胞只有两种状态:“生”或“死”。游戏规则如下:
1、如果一个细胞周围有3个细胞为生(一个细胞周围共有8个细胞),则该细胞为生,即该细胞若原先为死,则转为生,若原先为生,则保持不变;
2、如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变;
3、在其它情况下,该细胞为死,即该细胞若原先为生,则转为死,若原先为死,则保持不变。

依此规则进行迭代变化,使细胞生生死死,会得到一些有趣的结果。该游戏之所以被称为“生命游戏”,是因为其简单的游戏规则,反映了自然界中的生存规律:如果一个生命,其周围的同类生命太少的话,会因为得不到帮助而死亡;如果太多,则会因为得不到足够的资源而死亡。


VB project “生命游戏”
1.界面很简单,一个Start button,一个label
2.代码:

'by metaphy 
'2006-2-24
Option Explicit

Private AWIDTH As Integer
Private AHEIGHT As Integer
Private AX As Integer
Private AY As Integer
Private SIDELEN As Integer
Private orgStat As Variant      '细胞初始态
Private endStat As Variant      '结束态

'初始常量
Private Sub Form_Load()
'    mainfrm.BackColor = RGB(180, 180, 180)
    AX = 50
    AY = 50
    SIDELEN = 105
    AWIDTH = 100
    AHEIGHT = 70
    ReDim orgStat(100, 70) As Integer
    ReDim endStat(100, 70) As Integer
End Sub

'画布初始
Private Sub initCanvas()
    Dim i, j As Integer
    For i = 0 To AWIDTH
         Line (AX + i * SIDELEN, AY)-(AX + i * SIDELEN, AY + AHEIGHT * SIDELEN)
    Next
    
    For j = 0 To AHEIGHT
        Line (AX, AY + j * SIDELEN)-(AX + AWIDTH * SIDELEN, AY + j * SIDELEN)
    Next
End Sub

'画布重画
Private Sub reCanvas()
    Dim i, j As Integer
    
    For i = 0 To AWIDTH - 1
        For j = 0 To AHEIGHT - 1
            If endStat(i, j) = 1 Then
                'Line (AX + i * SIDELEN, AY + j * SIDELEN)-(AX + (i + 1) * SIDELEN, AY + (j + 1) * SIDELEN), RGB(255, 255, 0), BF
                Line (AX + i * SIDELEN + 1, AY + j * SIDELEN - 1)-(AX + (i + 1) * SIDELEN + 1, AY + (j + 1) * SIDELEN - 1), RGB(0, 0, 0), BF
            Else
                Line (AX + i * SIDELEN + 1, AY + j * SIDELEN - 1)-(AX + (i + 1) * SIDELEN + 1, AY + (j + 1) * SIDELEN - 1), RGB(255, 255, 255), BF
            End If
            
            If i = AWIDTH - 1 Then Line (AX, AY + j * SIDELEN)-(AX + AWIDTH * SIDELEN, AY + j * SIDELEN)
        Next
                
        Line (AX + i * SIDELEN, AY)-(AX + i * SIDELEN, AY + AHEIGHT * SIDELEN)

    Next
    
    i = AWIDTH
    j = AHEIGHT
    Line (AX + i * SIDELEN, AY)-(AX + i * SIDELEN, AY + AHEIGHT * SIDELEN)
    Line (AX, AY + j * SIDELEN)-(AX + AWIDTH * SIDELEN, AY + j * SIDELEN)
End Sub

'迭代,得到细胞状态
Private Sub changeState(times As Integer)
    Dim i, j, tim As Integer
    Dim lives As Integer
    
    For i = 0 To AWIDTH - 1
        For j = 0 To AHEIGHT - 1
            Randomize
            orgStat(i, j) = Int(2 * Rnd)
            endStat(i, j) = 0
        Next
    Next
    
    For tim = 0 To times - 1
        For i = 1 To AWIDTH - 2     '最外面一层不参与
            For j = 1 To AHEIGHT - 2
                lives = 0
                lives = orgStat(i - 1, j - 1) + orgStat(i, j - 1) + orgStat(i + 1, j - 1) _
                    + orgStat(i - 1, j) + orgStat(i + 1, j) _
                    + orgStat(i - 1, j + 1) + orgStat(i, j + 1) + orgStat(i + 1, j + 1)
                If lives = 2 Then
                    endStat(i, j) = orgStat(i, j)
                ElseIf lives = 3 Then
                    endStat(i, j) = 1
                Else
                    endStat(i, j) = 0
                End If
                
            Next
        Next
        
        For i = 0 To AWIDTH
            For j = 0 To AHEIGHT
                orgStat(i, j) = endStat(i, j)
            Next
        Next
    Next
    
End Sub

'显示部分信息
Private Sub someInfo(times As String)
    Label1.Caption = "迭代次数:" + times


End Sub
Private Sub Start_Click()
    Dim times As Integer
    Randomize
    times = Int(200 * Rnd + 1)
    Call someInfo(Str(times))
    
    Call changeState(times)
    Call reCanvas
    
End Sub

 

分享到:
评论

相关推荐

    康威生命游戏vb6源码

    《康威生命游戏VB6源码解析》 康威生命游戏,全称为“Conway's Game of Life”,是由数学家约翰·康威在1970年提出的一种细胞自动机模型,它是一种模拟生物演化过程的抽象游戏。在这个游戏中,每个细胞有生与死两种...

    VB.NET 生命游戏

    在VB.NET环境中实现生命游戏,不仅可以帮助我们理解编程语言的基础知识,还能深入探讨复杂系统的行为。 VB.NET是微软开发的一种面向对象的编程语言,它是Visual Basic的现代版本,支持.NET框架,提供了丰富的库和...

    用VB.NET编写的生命游戏,是一个很经典的程序!!!希望大家支持

    用VB.NET编写的生命游戏,是一个很经典的程序!!!希望大家支持

    VB飞行游戏代码

    【VB飞行游戏代码】是一个基于Visual Basic(VB)开发的3D飞行射击游戏实例,它为初学者提供了一个深入理解VB编程语言以及游戏开发技术的机会。在这个项目中,你可以学习到如何利用VB来构建基本的游戏框架,实现角色...

    VB做的游戏

    VB中可以使用矩形碰撞检测算法,判断飞船、子弹与敌机是否发生碰撞,从而决定是否扣除生命值或增加得分。 6. 文件处理:在“太空大战”的不同版本中(如1.7、1.8、1.6),可能包含了游戏的更新和改进。开发者可能...

    vb编写简易射击游戏

    - **游戏结束条件**:游戏可能设定有生命值,当生命值耗尽或者敌人达到一定数量时,游戏结束。VB可以通过条件语句实现这些逻辑。 4. **系统兼容性** 提供的源码已经在Win7 64位系统下测试通过,这意味着VB编写的...

    vb实现游戏超级马力

    设置一个定时器,每隔一定时间触发Tick事件,进行游戏状态的更新,如角色移动、碰撞检测、生命值计算等。 第五,游戏中的动画效果通常通过改变图片的位置或帧来实现。在“超级马力”中,角色跳跃、奔跑等动作可以...

    tianwang.rar_vb 源码_天王_游戏数值_生命游戏

    【标题】"tianwang.rar_vb 源码_天王_游戏数值_生命游戏"涉及的是一个基于Visual Basic(VB)编程语言的游戏修改工具的源代码,主要用于调整游戏中的“天王”角色的生命值等数值。这个压缩包包含了项目文件、编译...

    vb射击游戏.rar

    VB射击游戏是一款基于Visual Basic(VB)编程语言开发的简易射击类游戏。VB是Microsoft公司推出的事件驱动编程工具,主要用于创建Windows应用程序。这款游戏利用VB的基本语法、控件和图形功能,为玩家提供了一种互动...

    格斗游戏VB代码

    在"格斗游戏VB代码"这个项目中,我们可以深入理解VB在游戏开发中的应用。 【游戏框架构建】 在VB中开发格斗游戏,首先要建立一个基本的游戏框架。这包括游戏主循环、用户输入处理、游戏状态管理等。主循环是游戏的...

    vb的小游戏代码

    5. **变量和数据结构**:游戏中会用到各种变量来存储状态,如分数、生命值等。VB支持基本数据类型(如Integer、String)以及更复杂的数据结构,如数组和集合,用于存储大量游戏数据。 6. **条件语句和循环**:`If.....

    用vb做的即时战斗游戏

    5. **对象管理**:怪物和玩家都是游戏中的对象,它们有自己的属性(如生命值、攻击力)和行为(如移动、攻击)。在VB中,这些可以通过类(Class)来实现。 【标签】揭示了游戏的几个技术特点: 1. **控件**:VB提供...

    用vb.net编写的小游戏

    《VB.NET编程实践:打砖块小游戏开发详解》 VB.NET是一种基于.NET Framework的编程语言,由微软公司推出,主要用于Windows应用开发。本篇将详细探讨如何使用VB.NET编写一款简单但趣味横生的打砖块小游戏。在这个...

    生命游戏OPENGL

    这个项目不仅展示了生命游戏的基本原理,还涉及到了OpenGL图形编程、VB界面设计和DLL的使用,对于学习图形学、编程和软件工程的学生或开发者来说,是一个很好的实践案例。通过分析和修改这个项目,可以深入理解生命...

    直升机空战游戏 vb 版(源代码)

    《直升机空战游戏 VB 版源代码解析》 在IT领域,尤其是游戏开发中,学习和理解源代码是提升技能的重要途径。今天我们要探讨的是一个使用VB(Visual Basic)编程语言开发的直升机空战游戏。VB,作为微软的可视化编程...

    vb小游戏

    4. **变量和数据类型**:在VB中,我们需要声明和使用变量来存储游戏状态,如分数、生命值等。数据类型如Integer(整数)、Double(浮点数)、Boolean(布尔)等决定了变量可以存储的数据种类。 5. **数组和集合**:...

    很有意思的vb编的小游戏 希望对大家学习vb有帮助

    游戏中的分数、生命值、时间等都是通过变量来跟踪的。 4. **流程控制结构**:循环(For...Next, Do...Loop)和条件语句(If...Then...Else)是控制程序流程的关键。例如,在游戏循环中,可能会使用While或For循环来...

    vb6.0打飞机小游戏代码

    6. **游戏逻辑**:包括得分系统、生命值、难度等级等,需要编写相应的逻辑代码来处理这些功能。 7. **用户交互界面**:VB6.0提供丰富的控件库,用于创建游戏的启动界面、设置菜单、游戏提示等,提升用户体验。 源...

    VB.Net坦克大战游戏

    2. **对象建模(Object-Oriented Programming)**:坦克、墙壁、子弹等游戏元素都是通过类来定义的,每个类有自己的属性(如位置、速度、生命值)和方法(如移动、开火、碰撞检测)。VB.Net的面向对象特性使得这种...

    VB编写的游戏修改器源码

    游戏修改器通常用于改变游戏中的数值参数,如生命值、分数、资源等,为玩家提供不同寻常的游戏体验。 在这个项目中,我们看到几个关键的文件: 1. **Module1.bas, Module2.bas, Module3.bas**:这些是VB的模块文件...

Global site tag (gtag.js) - Google Analytics