内容摘要
本有游戏主要针对指法练习,并提供字母和单词两种选择。根据用户自身情况,可以进行速度调节,以达到最佳的练习效果。同时本游戏提供显示时间,得分,正确率和失败个数的功能。当失败个数超过一定个数后,游戏结束并提示是否继续。
内容摘要 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