龟兔赛跑.docx
- 文档编号:27978146
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:12
- 大小:191.94KB
龟兔赛跑.docx
《龟兔赛跑.docx》由会员分享,可在线阅读,更多相关《龟兔赛跑.docx(12页珍藏版)》请在冰豆网上搜索。
龟兔赛跑
VisualBasic课程设计
说明书
题目:
龟兔赛跑游戏开发
姓名:
****
学号:
***********
指导教师:
*******
综合成绩:
2012年10月
1设计目的
编写一款龟兔赛跑游戏,两个用户通过键盘控制比赛对象(龟和兔)进行赛跑比赛,且用户的按键是互不干扰的,谁最早跑到终点谁就获胜。
先设计界面,其中“龟”和“兔”的图标可以通过Image图像控件来显示,“跑道”可由PictureBox图片框控件担当。
Image控件在PictureBox控件上移动产生运动效果。
用Timer定时器控件来表示龟兔赛跑的时间。
程序需要处理KeyDown等键盘事件。
2软件功能介绍
(1)程序参考界面如图1所示,开始时“龟”和“兔”分别位于两条跑道的起点。
使用鼠标单击“狐狸”(裁判)按钮,该按钮右面闪烁3次“预备”字样,然后显示“开始”进入比赛状态。
(2)赛跑开始后,用户1轮流按“a”和“s”键,用户2轮流按“;”和“‘”(单引号)键,分别使龟兔沿着跑道向右前进。
每按两次键才能使图标移动一次,按键越快,相应的图标就跑的越快。
计时牌显示各自所用时间,如图2所示。
当两个动物都到达终点时,显示谁是胜者,如图3所示。
游戏过程中,通过“游戏速度”滚动条可调节动物每前进一步的距离。
(3)游戏在进入预备状态之前,按键是不能使两个动物移动的;在“预备”按钮状态时(即在起跑之前),若按键移动动物程序认为是抢跑,显示如4所示的信息,必须重新开始游戏。
(4)程序使用了图5所示的菜单。
选择“开局”命令使程序全部归位并重新开始。
“自述文件”菜单命令用“记事本”程序打开并显示说明文件(Readme.txt)。
3模块及内部控件列表
Form1
Caption
龟兔赛跑
Command1
Style
1-Graphical
Picture
狐狸图片
Label1
Caption
Font
宋体、二号
Label2
Caption
慢
Font
宋体、小四
Label3
Caption
快
Font
宋体、小四
Label4
Caption
起点
Font
宋体、二号
Label5
Caption
终点
Font
宋体、二号
PictureBox
Name
p1
PictureBox
Name
p2
Image
Name
p3
Picture
兔子图片
Image
Name
p4
Picture
乌龟图片
Frame1
Caption
游戏速度
Font
宋体、小四
Text1
Text
Font
宋体、二号
Text2
Text
Font
宋体、二号
Timer1
Interval
800
Timer2
Interval
1
Timer3
Interval
1
4源程序清单列表
PubliciAsInteger,mAsInteger,nAsInteger,kAsInteger
PrivateSubCommand1_Click()
Label1.Caption="预备!
"
HScroll1.Value=80
Text2.Text="0:
00:
00"
Text1.Text="0:
00:
00"
Timer2.Enabled=False
Timer3.Enabled=False
n=0
k=0
p3.Left=0
p4.Left=0
i=1
Timer1.Enabled=True
EndSub
PrivateSuba1_Click()
Command1_Click'调用下拉菜单的“开始”,使软件运行
EndSub
PrivateSuba2_Click()
End'调用下拉菜单的“退出”,退出运行界面
EndSub
PrivateSubb1_Click()
Shell"桌面\龟兔赛跑\自述文件.txt"'调用下拉菜单的“自述文件”,跳出说明文件
EndSub
PrivateSubb2_Click()
MsgBox"版本1.0"&Chr(13)&"如有不足,请多多完善",48,"关于龟兔赛跑"'调用下拉菜单的“关于龟兔赛跑”,跳出该软件相关信息
EndSub
PrivateSubForm_KeyDown(KeyCodeAsInteger,ShiftAsInteger)'调用键盘
DimjAsInteger
j=HScroll1.Value
Staticblin1AsBoolean
Staticblin2AsBoolean
IfKeyCode=vbKeyAOrKeyCode=vbKeySThen
Ifi<8Then
Text2.Text="抢跑"
MsgBox"兔选手抢跑,重来!
",16,"犯规"'显示提示界面
Text2.Text="0:
00:
00"
Text1.Text="0:
00:
00"
n=0
k=0
i=1
ExitSub
EndIf
EndIf
Ifblin1=FalseAndi=8Then
IfKeyCode=vbKeyAThen
p3.Left=p3.Left+j
blin1=Notblin1
blin2=Notblin2
EndIf
EndIf
Ifblin2=TrueAndi=8Then
IfKeyCode=vbKeySThen
p3.Left=p3.Left+j
blin2=Notblin2
blin1=Notblin1'必须两按键都按才会使得图片移动
EndIf
EndIf
Staticblin3AsBoolean
Staticblin4AsBoolean
IfKeyCode=222OrKeyCode=186Then
Ifi<8Then
Text2.Text="抢跑"
MsgBox"龟选手抢跑,重来!
",16,"犯规"
i=1
Text2.Text="0:
00:
00"
n=0
k=0
ExitSub
EndIf
EndIf
Ifblin3=FalseAndi=8Then
IfKeyCode=186Then
p4.Left=p4.Left+j
blin3=Notblin3
blin4=Notblin4
EndIf
EndIf
Ifblin4=TrueAndi=8Then
IfKeyCode=222Then
p4.Left=p4.Left+j
blin4=Notblin4
blin3=Notblin3
EndIf
EndIf
Ifp3.Left>=p1.Width-p3.WidthThen
Timer3.Enabled=False
p3.Left=p1.Width-p3.Width'图片到达PictureBox的右端时,停止计时
EndIf
Ifp4.Left>=p2.Width-p4.WidthThen
Timer2.Enabled=False
p4.Left=p2.Width-p4.Width
EndIf
Ifp3.Left>=p1.Width-p3.WidthAndp4.Left>=p2.Width-p4.WidthThen
Ifn>kThen'比较两Text文本的时间
MsgBox"龟选手您赢了!
",48,"龟兔赛跑"'显示提示界面
Label1.Visible=False
Timer2.Enabled=False
Timer3.Enabled=False
k=0
n=0
Text1.Text="0:
00:
00"
Text2.Text="0:
00:
00"
p3.Left=0
p4.Left=0
EndIf
Ifk>nThen
MsgBox"兔选手您赢了!
",48,"龟兔赛跑"
Label1.Visible=False
Timer2.Enabled=False
Timer3.Enabled=False
k=0
n=0
Text1.Text="0:
00:
00"
Text2.Text="0:
00:
00"
p3.Left=0
p4.Left=0
EndIf
EndIf
EndSub
PrivateSubTimer1_Timer()
StaticblinsAsBoolean
Label1.Visible=blins
i=i+1
blins=Notblins
Ifi=8Then
Beep'显示“开始!
”时,同时发出提示音
Label1.Caption="开始!
"
Label1.Visible=True
Timer2.Enabled=True
Timer3.Enabled=True
Timer1.Enabled=False
EndIf
EndSub
PrivateSubTimer3_Timer()
n=n+1
n0=nMod60'计时器的“秒”
n1=(n\60)Mod60'计时器的“分”
n2=((n\60)\60)Mod60'计时器的“时”
Text1.Text=Right(("0"&CStr(n2)),2)&":
"&Right(("0"+CStr(n1)),2)&":
"&Right("0"&CStr(n0),2)'Text文本中显示时间的跳动
EndSub
PrivateSubTimer2_Timer()
k=k+1
k0=kMod60
k1=(k\60)Mod60
k2=((k\60)\60)Mod60
Text2.Text=Right(("0"&CStr(k2)),2)&":
"&Right(("0"+CStr(k1)),2)&":
"&Right("0"&CStr(k0),2)
EndSub
5程序分析
参考程序中两个用户的按键是互不干扰的,即只要用户1连续按了“a”和“s”键,“兔”就会前进一步。
该游戏必须两按键都按才会使得图片向前移动,否则就不会触动图片的移动事件,这就要求参赛者的手速要快。
同时这程序也有防抢跑的功能,从而保证比赛的公正性,而且,这也考验了参赛者的反应能力,能在开始后最快的做出反应。
该游戏要求必须两参赛者都到达终点才会有结果出现,这就考验了参与者的坚持精神,我想这种设计是有益的。
当然,我们的设计还有不足的,首先是我觉得我们的游戏还可以再有益智性一点,可以让两参赛者的按键产生干扰,这样就更考验他们的手速了,游戏更具挑战性,更能体现按钮速度越快胜利的可能性越大,也会更有趣一点。
还有就是在一位选手快到终点,或者二者差距过大时,我们可以在界面上显示一些提示文字,或者一些加油鼓劲的话来激励参赛者。
同时,我们可以细分一下速度,并且,做一个最好记录的保存。
当一个参赛者到达终点时,他的时间控件就停止运行并且记录下来跟以后的进行比较,做成排行榜样式。
6程序设计心的
为期两周的vb课程设计很快就结束了,通过对此程序的编写,相当于对本学期所学部分内容进行了一次总结,在这段时间里我锻炼了发现,解决实际问题的能力。
学会了自主学习,自我提高和自我完善,学以致用。
我认为作为学习程序设计最重要的一点是要注重理解一些重要的概念。
VB程序设计本身并不复杂,翻开一本程序设计学习的书籍,看到的无非就是变量,函数,条件语句,循环语句等概念。
但要真正能进行程序设计,需要深入理解这些概念。
其次,自己动手编写程序。
程序设计入门阶段要经常自己动手抄写或编写一些小程序,亲自动手进行程序设计是创造性思维应用的体现,是培养逻辑思维的好方法。
因此一定要多动手编写程序,而且要从小程序开发开始,逐渐提高写程序的能力。
只有不断的从自己的程序中积累经验,从中进步,才能写出好的程序。
这道课程设计花了我们一到两周的时间,几人合作,老师的帮忙才完成。
刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。
下一步是上网查,找到了些与我们题目相似的。
系统开发中也遇到了不少问题,开始时数据库虽然组建好了,但是一直连接不上,参考了教材才解决了这个问题。
该系统存在一定的局限性和缺点,其中的一个没有解决的问题是:
在运行程序时,虽然界面上有速度调节,但在调节时运行不起来。
程序需要处理KeyDown等键盘事件。
因为多个控件具有KeyDown事件,必须使用SetFocus方法和LostFocus事件将输入焦点锁定在某个控件上,编写这个控件的KeyDown事件过程即可。
虽然本系统比较简单,但是还是花了不少时间和功夫,为了完成这个系统,也学到了不少知识。
看来多动手还是很重要的,书本上的知识不运用到实际情况也只能是一纸空文。
课程设计让我们学习与实践相结合提高了我们对书本知识的理解和运用能力,锻炼了我的学习能力,在今后的学习中还要继续加强自相互学习与实践的能力。
7参考资料
[1]《VisualBasic程序设计教程》牛又奇、孙建国苏州大学出版社2010年版
[2]《VisualBasic程序设计教程》(6.0版)龚沛曾、陆慰民、杨志强北京高等教育出版社2001年版
[3]《VisualBasic6.0基础与应用》周丰治高等教育出版社2001年版
[4]《VisualBasic6.0程序设计教程》(第二版)罗朝盛北京人民邮电出版社2005年版
[5]《算法与程序设计》陶增乐浙江教育出版社2007年6月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 赛跑