内容摘要
本有游戏主要针对指法练习,并提供字母和单词两种选择。根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。同时本游戏提供显示时间,得分,正确率和失败个数的功能。当失败个数超过一定个数后,游戏结束并提示是否继续。
目录
内容摘要 1
1功能描述 3
1.1简单模式 3
1.2复杂模式 3
2概要设计 4
3详细设计 5
3.1窗体控件设计 5
3.2各模块功能 6
3.1.1随机产生字母和选取单词函数 6
3.1.2窗体 6
3.1.3开始按钮 7
3.1.4暂停按钮 8
3.1.5退出按钮 8
3.1.6键盘事件 8
3.1.7计时器1 9
3.1.8计时器2 10
3.3程序调试及运行结果 11
3.4效果及存在的问题 13
4心得体会 14
参考文献 15
1功能描述
图1 游戏开始界
1.1简单模式
本模式提供字母练习。当用户运行游戏,选择简单模式后,点击开始按钮开始练习,并开始计时。游戏开始后,随机掉下一些字母,敲击对应键盘,字母消失。如果字母掉落到底部,则掉落个数增加1个。当掉落个数为26时,游戏结束,并提示用户是否继续。游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。
1.2复杂模式
本模式提供单词练习。当用户运行游戏,选择复杂模式后,点击开始按钮开始练习,并开始计时。游戏开始后,随机掉下一些单词,输入对应单词(如果输错,敲空格清除),并敲空格键,单词消失。如果单词掉落到底部,则掉落个数增加1个。当掉落个数为26时,游戏结束,并提示用户是否继续。游戏过程中按“暂停”按钮暂停有游戏,按“退出”按钮退出游戏。
2概要设计
流程图
游戏过程中可以按“暂停”按钮暂停有游戏,并且停止计时。按“退出”按钮退出游戏
3详细设计
3.1窗体控件设计
图3.1 窗体界面
部分窗体控件及其属性
对象
属性
属性值
Form1
Caption
打字游戏
KeyPreview
True
HScroll1
Max
160
Min
40
Value
100
表3.1 控件及属性值
3.2各模块功能
3.1.1随机产生字母和选取单词函数
Private Function suiji() '随机产生字母和随机选取单词函数
Dim a As Integer
Dim b As String
Randomize
word = Array("sway", "sneak", "naked", "maple", "ample", "lough", "plasma", "tude", "plague", "pledge", "play", "prowl", "pluckbandit", "gangster", "commemorate", "solar", "elipse", "luna", "lunatic", "tumble", "mortal", "moral", "fade", "flinch", "spout", "sprout", "spurn", "spoil", "sparrow", "sprain", "plasma", "mare", "malady", "glisten", "bereave", "glimme", "rslim", "crave", "amiable", "able", "blizzard", "lizard", "bruise", "bromide", "place", "bale") '存放供练习的单词
b = Int(Rnd * (UBound(word) + 1)) '产生单词序号
a = Int((122 - 97 + 1) * Rnd + 97) '产生97到122之间的整数
If Option1.Value Then
suiji = Chr(a) '如果选择简单单选框,则函数的返回值为小写字母
Else
suiji = word(b) '如果选择复杂单选框,则函数的返回值为单词
End If
End Function
3.1.2窗体
Private Sub Form_Load()
Text1.Top = -1000
Label6.Caption = "正确率:0"
Label4.Caption = "时间 00:00:00"
Timer2.Enabled = False
Timer1.Enabled = False
Label2.BackStyle = 0
Label3.BackStyle = 0
Label4.BackStyle = 0
Label5.BackStyle = 0
Label6.BackStyle = 0 '将标签2到6的背景设为透明
For i = 0 To Label1.Count - 1
Label1(i).Visible = False '将标签Label1(1)到Label1(5)的初始状态设为不可见
Label1(i).Top = 600 * (i + 1) '设置字母或单词的的位置
Label1(i).Caption = suiji '最初出现的字母或者单词
Label1(i).FontSize = 25 '设置字体大小
Label1(i).AutoSize = True '标签大小自动可调
Label1(i).BackStyle = 0 '透明
Next
Label3.Caption = "掉落个数:" & n
Label5.Caption = "当前得分:" & h
Label2.ForeColor = RGB(0, 255, 0)
Label5.ForeColor = RGB(0, 255, 0)
Label3.ForeColor = RGB(0, 255, 0)
Label6.ForeColor = RGB(255, 0, 0)
Label4.ForeColor = RGB(255, 0, 255) '设置字体颜色
End Sub
3.1.3开始按钮
Public Sub Command1_Click() '开始按钮
Dim i%
If Option2.Value Then
i = MsgBox("输入单词后,请按空格键确认", , "注意") '操作提示
End If
For i = 0 To Label1.Count - 1
Label1(i).Visible = True
Label1(i).Caption = suiji
Label1(i).ForeColor = RGB(Rnd * 255, Rnd * 255, Rnd * 255) '随机产生字母,单词,颜色随机
Next
Timer1.Enabled = True
Timer2.Enabled = True
HScroll1.Enabled = False
Option1.Enabled = False
Option2.Enabled = False
Command1.Enabled = False '将计时器,速度调节,难度选择和开始按钮禁用
Text1.SetFocus '将焦点转移到文本框
End Sub
3.1.4暂停按钮
Private Sub Command2_Click() '暂停按钮
Timer1.Enabled = False
Timer2.Enabled = False
End Sub
3.1.5退出按钮
Private Sub Command3_Click() '退出按钮
If MsgBox("确定要退出?", vbYesNo) = vbYes Then
MsgBox "得分" & h & "分", , "成绩" '退出提示
Unload Me '关闭窗体
End If
End Sub
3.1.6键盘事件
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim b As Integer
Dim c As Integer
If KeyAscii >= 97 And KeyAscii <= 122 Then
ci = ci + Chr(KeyAscii) '将输入的单词赋值给空字符串ci
End If
b = -1
c = -1
If Option1.Value Then '选择简单
For i = 0 To Label1.Count - 1 '遍历所有产生字母
If Label1(i).Caption = Chr(KeyAscii) Then '判断产生的字母和输入的字母是否相等
If Label1(i).Top > b Then '判断字母是否已经落出
c = i
End If
End If
Next
Else
If KeyAscii = 32 Then '如果敲了空格,则进行单词比较操作
For i = 0 To Label1.Count - 1 '遍历所有产生字母
If Label1(i).Caption = ci Then '判断产生的单词和输入的单词是否相等
If Label1(i).Top > b Then '判断字母是否已经落出
c = i
End If
End If
Next
ci = ""
End If
End If
If c > -1 Then