Presentation is loading. Please wait.

Presentation is loading. Please wait.

过程 过程通常是指程序设计中的一段完整代码,也被称为代码块,通常能完成某一完整的操作。 可反复调用 程序结构化 提高效率.

Similar presentations


Presentation on theme: "过程 过程通常是指程序设计中的一段完整代码,也被称为代码块,通常能完成某一完整的操作。 可反复调用 程序结构化 提高效率."— Presentation transcript:

1 过程 过程通常是指程序设计中的一段完整代码,也被称为代码块,通常能完成某一完整的操作。 可反复调用 程序结构化 提高效率

2 过程分类 Sub过程 Function过程

3 Sub过程 事件过程 通用Sub过程

4 Sub过程调用 [Call]过程名([参数列表])

5 Function过程 与Sub过程有许多相似之处 区别在于 Sub过程不直接返回值 Function过程则返回一个值

6 过程中的参数 实际参数:写在Sub过程或Function函数中的参数名称,而非具体参数值

7 参数传递方式 按值传递:ByVal 按引用传递:ByRef 默认值:按值传递:ByVal 实参将值传给形参 调用时形参值的改变不影响实参
实参将地址传给形参 调用时形参的值发生改变,实参也随之改变 默认值:按值传递:ByVal

8 程序分析 DIM  X,Y  As Integer Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click X = 5 Y = 3 Call proc(X, Y) Label1.TEXT = X Label2.TEXT = Y End Sub Sub proc(ByRef a As Integer, ByVal b As Integer)         a = a * a         b = b + b End Sub 程序运行后,单击命令按钮,则两个标签中显示的内容分别是多少,为什么?

9 变量的作用域 代码块级变量 过程级变量 模块级变量 全局变量

10 过程分类 Sub过程 Function过程

11 扫雷游戏 Mine-Sweeping Game

12 扫雷游戏 游戏规则: 程序启动即可开始扫雷标雷,共10颗雷 鼠标左键: 鼠标右键:
若为雷,则翻牌显示地雷,弹出警告“你触雷了”,游戏并没有结束,还可继续玩! 若不是雷,则显示周围雷的个数,并自动搜索相邻按钮周围的雷数直到遇到有雷按钮搜索结束 鼠标右键: 标雷

13 菜单设计 游戏 开始:可重置游戏,重新开始 退出:游戏结束 帮助 操作说明: 关于游戏:版本,制作者等信息

14 操作说明 第二个窗体面板

15 多个窗体 添加窗体的方法 窗体类型 一般窗体 关于窗体 。。。 窗体显示 窗体名.Show()

16 关于界面

17 程序开始启动 开始发生的事情用什么事件? 用什么控件表示布局? 一开始就设有雷,每次雷的布局都不同,如何布雷?

18 动态自动生成雷区控件 定义控件类型 定义控件属性 位置 宽度 高度 颜色 背景图 字体 文字 外形 定义控件的事件 控件的显示

19 变量设置的考虑 Dim chks(8, 8) As CheckBox() Dim startx As Integer = 40
Dim starty As Integer = 40 Dim buttonwidth As Integer = 30 Dim buttonheight As Integer = 30

20 布局 For i = 0 To 8 For j = 0 To 8 chks(i, j) = New CheckBox()
AddHandler chks(i, j).MouseUp, AddressOf ChksMouseUp chks(i, j).Text = "" chks(i, j).Checked = False chks(i, j).BackgroundImage = Nothing chks(i, j).BackgroundImageLayout = ImageLayout.Stretch chks(i, j).Enabled = True chks(i, j).BackColor = Color.LightGray chks(i, j).Width = buttonwidth chks(i, j).Height = buttonheight chks(i, j).Top = starty + i * buttonwidth chks(i, j).Left = startx + j * buttonheight Dim f As New Font("黑体", 12, FontStyle.Bold) chks(i, j).Font = f chks(i, j).Appearance = Appearance.Button Me.Controls.Add(chks(i, j)) chks(i, j).Show() chks(i, j).Tag = 0 Next

21 布雷 一共10个雷 用什么属性来判断是否为雷? 随机布雷 雷的位置随机

22 Math.Floor函数功能 返回小于或等于指定数字的最大整数。
Math.floor()将一个浮点值下舍入为最接近的整数。Math.floor()执行的操作不同于Math.round(),它总是进行下舍入,而不是上舍入或下舍入到最接近的整数。还中注意Math.floor()将负数舍入为更小的负数,而不是向0进行舍入。 例子     a = Math.floor(1.99);    // Result is 1.0     b = Math.floor(1.01);    // Result is 1.0     c = Math.floor(1.0);     // Result is 1.0     d = Math.floor(-1.01);   // Result is -2.0

23 布雷代码 Randomize() j = 0 While j <= 9 col =Math.floor(Rnd() * 9)
row = Math.floor(Rnd() * 9) If chks(row, col).Tag = 0 Then chks(row, col).Tag = 1 j = j + 1 End If End While

24 扫雷和标雷-鼠标抬起事件 判断雷所在位置 按右键—标雷 按左键 如果触雷,翻牌,并提示触雷 如果没有触雷,则递归搜索,显示周围雷的总数目

25 自定义过程—控件鼠标抬起事件 Private Sub ChksMouseUp(ByVal sender As System.Object, ByVal e As Windows.Forms.MouseEventArgs) End Sub

26 参考代码 Dim chk As CheckBox = sender
Dim row As Integer = (chk.Top - starty) \ buttonwidth Dim col As Integer = (chk.Left - startx) \ buttonheight If e.Button = Windows.Forms.MouseButtons.Left Then chk.Enabled = False chk.Checked = True If chk.Tag = 1 Then chk.BackgroundImage = My.Resources.mine MsgBox("你触雷了!!") Exit Sub Else chk.Text = AutoOpen(row, col) End If If e.Button = Windows.Forms.MouseButtons.Right Then chk.Text =

27 实现自动打开连续无雷区的功能 递归搜索 自定义Function函数 递归思想 周围8个位置循环逐个搜索,如果没有到达边界则统计周围类的个数
如果雷的个数为0,循环检查该位置是否检查过,如果没有检查过,则打上检查标记,并不能下次再点击,并以该位置为中心,再次逐个搜索其周围的雷数 返回周围雷的个数

28 递归搜索代码参考 Dim i, j As Integer Dim sum As Integer = 0
Function AutoOpen(ByVal row As Integer, ByVal col As Integer) As Integer Dim i, j As Integer Dim sum As Integer = 0 For i = row - 1 To row + 1 For j = col - 1 To col + 1 If Not (i > 8 Or i < 0 Or j > 8 Or j < 0) Then sum = sum + chks(i, j).Tag End If Next If sum = 0 Then Dim chk As CheckBox = chks(i, j) If chk.Enabled Then chk.Enabled = False chk.Checked = True chk.Text = AutoOpen(i, j) Return sum End Function

29 关键技术 二维数组 动态生成控件 控件的事件关联 随机函数 自定义过程 递归函数 参数传递 双重循环 While循环 IF选择语句 菜单
多个窗体 关于界面


Download ppt "过程 过程通常是指程序设计中的一段完整代码,也被称为代码块,通常能完成某一完整的操作。 可反复调用 程序结构化 提高效率."

Similar presentations


Ads by Google