出差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
分享到:
- 2006-02-24 17:05
- 浏览 1764
- 评论(0)
- 论坛回复 / 浏览 (0 / 2040)
- 查看更多
相关推荐
《康威生命游戏VB6源码解析》 康威生命游戏,全称为“Conway's Game of Life”,是由数学家约翰·康威在1970年提出的一种细胞自动机模型,它是一种模拟生物演化过程的抽象游戏。在这个游戏中,每个细胞有生与死两种...
在VB.NET环境中实现生命游戏,不仅可以帮助我们理解编程语言的基础知识,还能深入探讨复杂系统的行为。 VB.NET是微软开发的一种面向对象的编程语言,它是Visual Basic的现代版本,支持.NET框架,提供了丰富的库和...
用VB.NET编写的生命游戏,是一个很经典的程序!!!希望大家支持
【VB飞行游戏代码】是一个基于Visual Basic(VB)开发的3D飞行射击游戏实例,它为初学者提供了一个深入理解VB编程语言以及游戏开发技术的机会。在这个项目中,你可以学习到如何利用VB来构建基本的游戏框架,实现角色...
VB中可以使用矩形碰撞检测算法,判断飞船、子弹与敌机是否发生碰撞,从而决定是否扣除生命值或增加得分。 6. 文件处理:在“太空大战”的不同版本中(如1.7、1.8、1.6),可能包含了游戏的更新和改进。开发者可能...
- **游戏结束条件**:游戏可能设定有生命值,当生命值耗尽或者敌人达到一定数量时,游戏结束。VB可以通过条件语句实现这些逻辑。 4. **系统兼容性** 提供的源码已经在Win7 64位系统下测试通过,这意味着VB编写的...
设置一个定时器,每隔一定时间触发Tick事件,进行游戏状态的更新,如角色移动、碰撞检测、生命值计算等。 第五,游戏中的动画效果通常通过改变图片的位置或帧来实现。在“超级马力”中,角色跳跃、奔跑等动作可以...
【标题】"tianwang.rar_vb 源码_天王_游戏数值_生命游戏"涉及的是一个基于Visual Basic(VB)编程语言的游戏修改工具的源代码,主要用于调整游戏中的“天王”角色的生命值等数值。这个压缩包包含了项目文件、编译...
VB射击游戏是一款基于Visual Basic(VB)编程语言开发的简易射击类游戏。VB是Microsoft公司推出的事件驱动编程工具,主要用于创建Windows应用程序。这款游戏利用VB的基本语法、控件和图形功能,为玩家提供了一种互动...
在"格斗游戏VB代码"这个项目中,我们可以深入理解VB在游戏开发中的应用。 【游戏框架构建】 在VB中开发格斗游戏,首先要建立一个基本的游戏框架。这包括游戏主循环、用户输入处理、游戏状态管理等。主循环是游戏的...
5. **变量和数据结构**:游戏中会用到各种变量来存储状态,如分数、生命值等。VB支持基本数据类型(如Integer、String)以及更复杂的数据结构,如数组和集合,用于存储大量游戏数据。 6. **条件语句和循环**:`If.....
5. **对象管理**:怪物和玩家都是游戏中的对象,它们有自己的属性(如生命值、攻击力)和行为(如移动、攻击)。在VB中,这些可以通过类(Class)来实现。 【标签】揭示了游戏的几个技术特点: 1. **控件**:VB提供...
《VB.NET编程实践:打砖块小游戏开发详解》 VB.NET是一种基于.NET Framework的编程语言,由微软公司推出,主要用于Windows应用开发。本篇将详细探讨如何使用VB.NET编写一款简单但趣味横生的打砖块小游戏。在这个...
这个项目不仅展示了生命游戏的基本原理,还涉及到了OpenGL图形编程、VB界面设计和DLL的使用,对于学习图形学、编程和软件工程的学生或开发者来说,是一个很好的实践案例。通过分析和修改这个项目,可以深入理解生命...
《直升机空战游戏 VB 版源代码解析》 在IT领域,尤其是游戏开发中,学习和理解源代码是提升技能的重要途径。今天我们要探讨的是一个使用VB(Visual Basic)编程语言开发的直升机空战游戏。VB,作为微软的可视化编程...
4. **变量和数据类型**:在VB中,我们需要声明和使用变量来存储游戏状态,如分数、生命值等。数据类型如Integer(整数)、Double(浮点数)、Boolean(布尔)等决定了变量可以存储的数据种类。 5. **数组和集合**:...
游戏中的分数、生命值、时间等都是通过变量来跟踪的。 4. **流程控制结构**:循环(For...Next, Do...Loop)和条件语句(If...Then...Else)是控制程序流程的关键。例如,在游戏循环中,可能会使用While或For循环来...
6. **游戏逻辑**:包括得分系统、生命值、难度等级等,需要编写相应的逻辑代码来处理这些功能。 7. **用户交互界面**:VB6.0提供丰富的控件库,用于创建游戏的启动界面、设置菜单、游戏提示等,提升用户体验。 源...
2. **对象建模(Object-Oriented Programming)**:坦克、墙壁、子弹等游戏元素都是通过类来定义的,每个类有自己的属性(如位置、速度、生命值)和方法(如移动、开火、碰撞检测)。VB.Net的面向对象特性使得这种...
游戏修改器通常用于改变游戏中的数值参数,如生命值、分数、资源等,为玩家提供不同寻常的游戏体验。 在这个项目中,我们看到几个关键的文件: 1. **Module1.bas, Module2.bas, Module3.bas**:这些是VB的模块文件...