VB课程设计报告

时间:2024.11.16

               VB课程设计报告

                     

  课程题目: 动物管理员游戏    难度:4星

姓名:束方婷    学号:912101500202                          

  题目分析

 “动物管理员”是一款非常有趣的游戏,有很多的变种。本题目要求编制一个玩法相对简单,但是编程却不简单的版本。如图,

程序的界面分为三部分,左边部分是一个由88列动物图标组成的游戏区,使用者通过鼠标单击两个相邻的图标使之交换位置,如果交换位置之后某类动物图标在同一行或同一列上出现三个或三个以上相邻的情况,表示这些相邻的动物被“捕获”。

最右边是成绩显示区,显示出当前共捕获了每种动物个多少只以及总的数量。

游戏区和成绩显示区的交接处是时间显示区,在游戏过程中剩余时间越来越少,深色部分越来越短,直到游戏结束。游戏结束时,捕获的动物越多则水平越高。

  具体功能

1程序启动时,游戏区随机分布各类动物的图标。图标共有7种,如图

     依次是长颈鹿,猩猩,大熊猫,河马,鳄鱼和大象。每种动物有两种表情,上面一行是未捕获时的表情,下面一行是被捕获时的表情。

     程序启动时,有可能出现同一行或同一列上有三个以上同种动物相邻,这种情况也算成绩。

   2)用户使用鼠标单击图标时,被单击的图标变红,交换位置之后,图标的颜色变为正常。

   3)如果用户单击了不相邻的图标,程序发出“错误音”且不变换位置。如果单击的是相邻图标但交换位置之后并不能使三个以上同种图标相邻,则会交换回原来的位置同时发出“错误音”。

      如果交换位置后出现相邻图标,所有满足相邻关系的图标以被捕获的表情闪烁(动物张嘴)后消失,形成的空位由上方的图标下落后填补,最上面形成的空位由随机生成的图标填补。消失的图标个数会作为成绩加到右边的成绩显示区,同时播放悦耳的“成功声”。

   4)很多情况下,往往会有多个相邻关系同时形成。交叉或在不同位置同时形成多个相邻关系。所以,程序即时判断游戏区形成的所有相邻关系,并进行处理和加分。

     有时,“消掉”相邻图标,上方的图标下落后,使得原来不相邻的图标成了相邻关系,这时应判断和处理整个游戏区的图标相邻关系,直到所有的图标都不构成三三相邻的关系。

   5)程序游戏时间共2分钟,游戏过程中每秒钟发出一声时钟的滴答声,并且时间显示区的蓝条越来越短。游戏时间到时,发出闹钟的“闹铃声”,游戏区所有图标的背景变为红色,并显示出“Game over”字样。这时游戏结束,鼠标不能再单击图标。如图

6)为了清楚的表达图标的变换,图标的消去和下落等动作,程序使用了延时。例如,单击两个相邻图标后,隔200ms才交换它们的位置,判断相邻后,隔200ms才消去,再隔200ms才将上面的图标下移……在延时过程中,用户的鼠标单击是无效的,这时鼠标指针变为;当允许单击时,鼠标指针变为

7)对于本游戏,要取得高分,除了应具有敏锐的洞察力和快速的反应力,还要有好运气。因为,有时一次变换位置后会引起“连锁反应”得很多分,而有时无论怎样交换位置都不能形成三三相邻关系

  设计实现

1)为了方便数据的管理和编程,定义三个全局数组

Option Base 0

Public Grid(7, 7) As Integer            '游戏区的动物图标分布

Public Meet(7, 7) As Boolean            '保存形成相邻关系的位置

Public Score(7) As Integer              '已捕获的每种动物的数量

(2)  实现动物图标的产生功能

Private Sub Form_Load()                       

   Dim i As Integer, j As Integer

   Randomize                                 ·’初始化随机数

   For i = 0 To 7

       For j = 0 To 7

           Grid(i, j) = Int(Rnd * 7)         '随机生产动物图标

       Next

   Next

   For i = 0 To 7

       For j = 0 To 7                              '画图标

 picGrid.PaintPicture PC1.GraphicCell(Grid(i, j)), i * 34, j * 34

       Next

   Next

  

For i = 0 To 6

       picScore.PaintPicture PC3.GraphicCell(i), 0, i * 34     

 '显示成绩区的图标

Next

Call ShowScore

ProgressBar1.Value = 120

Mode = 3

End Sub

Private Sub ShowScore()                        '显示总成绩

    Dim i As Integer

    For i = 0 To 7

        ShowNum 34, i * 34 + 5, Format(Score(i), "000")

    Next

End Sub

Private Sub ShowNum(x As Integer, y As Integer, s As String)

    Dim i As Integer

    For i = 1 To Len(s)

        picScore.PaintPicture PC4.GraphicCell(CInt(Mid(s, i, 1))), x + 18 * (i - 1), y

    Next

End Sub

(3)实现已完成动物图标搜索

Private Sub Exchange(x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer)

    Dim e As Integer

    e = Grid(x1, y1)

    Grid(x1, y1) = Grid(x2, y2)

    Grid(x2, y2) = e

    Call ReDraw(x1, y1)

    Call ReDraw(x2, y2)

End Sub

Private Function Compare() As Integer

    Dim k As Integer, n As Integer

    Dim kind As Integer, num As Integer

    Dim i As Integer, j As Integer

    Erase Meet

'            '横向搜索

   

    For i = 0 To 7

        num = 1

        kind = Grid(i, 0)

        For j = 1 To 7

            If Grid(i, j) = kind Then

                num = num + 1

            Else

                If num >= 3 Then

                    For k = j - 1 To j - num Step -1

                        Meet(i, k) = True

                    Next

                End If

                kind = Grid(i, j)

                num = 1

            End If

        Next

        If num >= 3 Then

            For k = j - 1 To j - num Step -1

                Meet(i, k) = True

            Next

        End If

    Next

(4)记录成绩

num = 0

    For i = 0 To 7

        For j = 0 To 7

            If Meet(i, j) Then

                num = num + 1

                Score(Grid(i, j)) = Score(Grid(i, j)) + 1

            End If

        Next

    Next

  

    Score(7) = Score(7) + num       '总成绩

(5)附加模块

Option Explicit

Option Base 0

Public Grid(7, 7) As Integer            '每格的动物

Public Meet(7, 7) As Boolean            '判断组成

Public Score(7) As Integer              '每种动物的数量

Public SelX1 As Integer                '被点击的两个位置

Public SelY1 As Integer

Public SelX2 As Integer

Public SelY2 As Integer

Public Mode As Integer

'-1,禁止状态

'0,正常状态,1:被选一个,2:被选两个,互换位置前,

'3:互换位置后,以一种颜色显示成组

'4:以第二种颜色显示成组的图标.

'5:使用白色绘制,显示空缺

'6:消去成组,填补空白.

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Public Const SND_ASYNC = &H1         '  play asynchronously

Public Const SND_LOOP = &H8         '  loop the sound until next sndPlaySound

Public Const SND_MEMORY = &H4         '  lpszSoundName points to a memory file

Public Const SND_NODEFAULT = &H2         '  silence not default, if sound not found

Public Const SND_NOSTOP = &H10        '  don't stop any currently playing sound

Public Const SND_NOWAIT = &H2000  ’don't wait if the driver is busy

总结

(1)首先,这个程序的主代码不完全是我自己编的,很多很大的内容都是参考的学长的,同时也参考书上给的提示,包括了picture clip控件,progress bar控件以及MM control多媒体控件。研习程序的过程中,我碰到了很多困难,即使参照着已有的程序,但是程序过于复杂,知识掌握的不够透彻,我又通过对书本的进一步学习与研究,终于对这个程序有了足够的认识。使一些困难得到了解决。

   (2)程序每次加载都会出错,虽然能够运行,但总是找不到问题出在哪儿,这是这个程序最致命的缺点。

   (3)本程序使用了时间控制且只能是2min,很不灵活。可使游戏时间可调,如总成绩达到某个数值或所有动物个数都超过某个数目时增加时间。  

(4)可增加用户登录、成绩记录、查询和排行榜等功能。

     


第二篇:VB程序设计报告


广西

课程程序设计说明书

 课题名称  简易记事本的模仿设计                                           

                

                 学   院  电气工程学院               

                      专   业        自动化         

                      班   级           093                  

姓  名  谢金富(0902100513

指导教师:      陈苏        

 2011 年  12  月  22  日

      

简易记事本的模仿设计

RichTextBox控件是用于输入和编辑文本的控件, 但它比常规的TextBox控件具有更高级的格式特性。RichTextBox控件提供了一些属性,通过这些属性,可对该控件中任何部分的文本使用不同的格式。用这些属性,可以将文本变为粗体或斜体、改变文本的颜色、创建上标或下标、调整段落的左右缩进值、使用悬挂式缩进以及动态地向该控件中充填嵌入位图( .BMP)、图标(:lc.ICO)、Microsoft Excel的电子表格和Microsoft Word文档等对象。                                                                        

RichTextBox控件对于内容的处理提供了多种手段。打开时,可以用RTF格式或ASCII文本格式打开或保存文件;可以使用该控件的方法(LoadFile和SaveFile),直接读写文件;也可以用该控件的属性,比如SelRTF和TextRTF,结合文件输入、输出语句读写文件, 将.rtf文件的内容装入RichTextBox控件。编辑时,可将其它文件(比如从“资源管理器”中)的内容直接拖人该控件;或者将其它应用程序(比如Microsoft Word)中使用文件的突出显示部分直接拖人该控件;还可以通过设置FileName属性,将.rtf或.txt文件的内容装入该控件。打印时,可用SelPrint方法打印RichTextBox控件中的全部或部分文本。将RichTextBox控件绑定到Data控件,可以处理Microsoft Access数据库的Memo字段或者其它大型数据库中的文字段(例如Sybase数据库、Microsoft SQL Server数据库中的TEXT数据类型)。

RichTextBox件的主要用途是其一作为“无底”的文本框,可用于编写阅读较大的文本文件的应用程序;其二在应用程序中实现功能完备的文本编辑器。

一、       预定功能

新建:新建立一个记事本文档。

保存:重命名一个名字,保存文档。

打开:将打开一个已经存储在计算机中的文件(*.txt或*.rtf文件)。

退出:指退出这个记事本程序。

编辑:能对文本进行复制、剪切、粘贴,也可以改变文本字体、颜色、大小。

查找:类似Word文档的查找功能,通过输入关键字,词进行查找。

二、       设计界面

记事本界面有以下几部分组成:

标题栏:自定义图标和记事本标题。

菜单栏:包括文件、编辑、搜索和帮助主题。

三、       主要功能说明

主要功能:

(1)       文本打开、新建、保存等基本操作:

(2)文本编辑功能:

(3)文本查找功能:

(4)记事本帮助主题:

功能说明:

(1)       基本操作:能够打开计算机中存储的*.txt或*.rtf文件,进行读写操作,记事本拥有一个很好的优点:就是打开速度快,文件小。通过记事本可以很方便地打开比较小文本文档。

(2)       编辑操作:对文本匡中的文档内容进行编辑。通过对文本进行复制、剪切、粘贴,方便了用户的操作。使得记事本能够像Word一样,不仅可以查看文本,还能对其进行修改。

(3)       搜索操作:如果一篇文章太长,使用搜索功能可以马上找到要寻找的内容,通过输入关键字进行查找。如果要查找多个相同文本内容,可以通过“查找下一个”来逐一查找。

(4)       使用说明:一个简单的记事本使用指南。“关于”的内容一般都是作者的版权说明以及程序版本。

四、    运行效果

新建:通过文件---新建,来打开一个新文档,新建后的文档是以“未命名”为标题的

打开操作:文件----打开,选择要打开的文档“新建文档.txt”

保存操作:文件----保存;另存为xie,txt保存在F盘。

2.编辑操作:

复制:打开123.txt,选中第一句,复制到第二句中间

剪切和粘贴:把复制的内容剪切掉,粘贴在最后一句后面。

3.查找操作

查找:搜索---查找,通过查找“二极管”两个字为例

程序不足之处:当点击右上角关闭按钮时,不能弹出保存对话框给读者进行

操作,容易丢失数据,其次是没有对字体进行设计,,再者,没有如同word文档一样有快捷键设置,程序的运行界面也没有很好的进行设置,这些都是需要改进的地方

五、      程序设计过程

第一步:界面设计

新建一个标准EXE工程,将其Caption属性改为“记事本”,点击Icon属性给它找个合适的Icon图标。单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到Microsoft RichText Box 6.0和公共对话框Microsoft Common Dialog 6.0并选中它们,单击“确定”按钮。这时左边的工具栏上出现了刚才新添的两个控件。在窗体上绘制RichText Box和Commn Dialog,其中RichText Box的大小和位置可不用理睬,可以在代码中处理它,要把它的ScrollBar属性设为2-rtfVertical,这样在打开和编辑文件时垂直滚动条才可用。

第二步:编辑菜单。

调出菜单编辑器,做如下几个菜单:

一.   文件菜单:

文件(第一层) mnuFile    

新建(第二层) mnuNew    Ctrl+N

打开(第二层) mnuOpen   Ctrl+O

保存(第二层) mnuSave    Ctrl+S

退出(第二层) mnuExit    F5

二.   编辑菜单:

编辑(第一层) mnuEdit

复制(第二层) mnuCopy   Ctrl+C

剪切(第二层) mnuCut    Ctrl+T

粘贴(第二层) mnuPaste   Ctrl+V

删除(第二层) delete     Del

全选(第二层) mnuSelecAll   Ctrl+A

三.搜索菜单:

搜索(第一层) mnuSearch

查找(第二层) mnuFind   Ctrl+F

查找下一个(第二层) mnuFindOn  F3

四.帮助菜单:

帮助(第一层) mnuHelp

使用说明(第二层) mnuUsage

关于(第二层) mnuAbout

六、心得体会

通过编这个简易记事本,我觉得编程不是一项轻松的活,尤其是一个人开发制作软件时,那工作量就多了。没有一定的坐功、细心程度及耐性那是绝对做不到的。有时,把程序做完了需要调试运行,但是就是不能达到自已设计的效果和目的,也许就是因为一个符号或一个字母,就得花上个几个小时,半天,甚至更长。越是这样越不能灰心,应该放松心态,一点一滴的去查。只要有一颗永不退缩的心,我们就一定能找到问题所在,最后一定能露出开心的笑容,也一定能找到成功者的感觉。所以编程能很好的锻炼人的意志。

同时,我觉得良好的编程习惯是必不可少的。在很多人的编程语言中,用“+”来连接字符串,这样容易导致歧义。良好的习惯是用“&”来连接字符串。此外,变量命名应大小写,语句错落有秩。还有,尽量使用Debug.print进行调试,在很多人的调试中,习惯用MsgBox来跟踪变量值。其实用Debug.print不仅可以达到同样的功效,而且在程序最后编译过程中,会被忽略.MsgBox必须手动注释或删除。

附录:程序代码

Dim sFind As String

Dim FileType, FiType As String

Private Sub delete_Click()

RichTextBox1.SelText = ""

End Sub

Private Sub Form_Load()

Me.Height = 6000

Me.Width = 9000

End Sub

Private Sub Form_Resize()

On Error Resume Next

RichTextBox1.Top = 20

RichTextBox1.Left = 20

RichTextBox1.Height = ScaleHeight - 40

RichTextBox1.Width = ScaleWidth - 40

End Sub

Private Sub mnuNew_Click()

Dim i As Integer

i = MsgBox("是否保存", 4, "警告")

If i <> 7 Then

CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"

CommonDialog1.ShowSave

FileType = CommonDialog1.FileTitle

FiType = LCase(Right(FileType, 3))

FileName = CommonDialog1.FileName

Else

RichTextBox1.Text = ""

FileName = "未命名"

Me.Caption = FileName

End If

End Sub

Private Sub mnuOpen_Click()

CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"

CommonDialog1.ShowOpen

RichTextBox1.Text = ""

FileName = CommonDialog1.FileName

RichTextBox1.LoadFile FileName

Me.Caption = "私人记事本:" & FileName

End Sub

Private Sub mnuSave_Click()

CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"

CommonDialog1.ShowSave

FileType = CommonDialog1.FileTitle

FiType = LCase(Right(FileType, 3))

FileName = CommonDialog1.FileName

Select Case FiType

Case "txt"

RichTextBox1.SaveFile FileName, rtfText

Case "rtf"

RichTextBox1.SaveFile FileName, rtfRTF

Case "*.*"

RichTextBox1.SaveFile FileName

End Select

Me.Caption = "私人记事本:" & FileName

End Sub

Private Sub mnuExit_Click()

Dim i As Integer

i = MsgBox("是否保存", 4, "警告")

If i <> 7 Then

CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"

CommonDialog1.ShowSave

FileType = CommonDialog1.FileTitle

FiType = LCase(Right(FileType, 3))

FileName = CommonDialog1.FileName

Select Case FiType

Case "txt"

RichTextBox1.SaveFile FileName, rtfText

Case "rtf"

RichTextBox1.SaveFile FileName, rtfRTF

Case "*.*"

RichTextBox1.SaveFile FileName

End Select

Else

End

End If

End Sub

Private Sub mnuCopy_Click()

Clipboard.Clear

Clipboard.SetText RichTextBox1.SelText

End Sub

Private Sub mnuCut_Click()

Clipboard.Clear

Clipboard.SetText RichTextBox1.SelText

RichTextBox1.SelText = ""

End Sub

Private Sub mnuSelectAll_Click()

RichTextBox1.SelStart = 0

RichTextBox1.SelLength = Len(RichTextBox1.Text)

End Sub

Private Sub mnuPaste_Click()

RichTextBox1.SelText = Clipboard.GetText

End Sub

Private Sub mnuFind_Click()

sFind = InputBox("请输入要查找的字、词:", "查找内容", sFind)

RichTextBox1.Find sFind

End Sub

Private Sub mnuFindOn_Click()

RichTextBox1.SelStart = RichTextBox1.SelStart + RichTextBox1.SelLength + 1

RichTextBox1.Find sFind, , Len(RichTextBox1)

End Sub

Private Sub mnuAbout_Click()

MsgBox "私人记事本 . 版权所有.翻版必究", vbOKOnly, "关于"

End Sub

Private Sub OLE1_Updated(Code As Integer)

End Sub

Private Sub mnuUsage_Click()

On Error GoTo handler

RichTextBox1.LoadFile "Readme.txt", rtfText '注释:请写好Readme.txt文件并存入程序所在文件夹中

Me.Caption = "私人记事本:" & "使用说明"

Exit Sub

handler:

MsgBox "使用说明文档可能已经被移除,请与作者联系。", vbOKOnly, " 错误信息"

End Sub

Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = 2 Then

PopupMenu mnuEdit, vbPopupMenuLeftAlign

Else

Exit Sub

End If

End Sub

Private Sub RichTextBox1_KeyUp(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeySpace Then

RichTextBox1.SelFontName = CommonDialog1.FontName

End If

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

If MsgBox("是否需要保存?", vbQuestion + vbYesNo) = vbYes Then

CommonDialog1.Filter = "文本文档(*.txt)|*.txt|RTF文档(*.rtf)|*.rtf|所有文件(*.*)|*.*"

CommonDialog1.ShowSave

FileType = CommonDialog1.FileTitle

FiType = LCase(Right(FileType, 3))

FileName = CommonDialog1.FileName

Select Case FiType

Case "txt"

RichTextBox1.SaveFile FileName, rtfText

Case "rtf"

RichTextBox1.SaveFile FileName, rtfRTF

Case "*.*"

RichTextBox1.SaveFile FileName

End Select

Else

Cancel = False

End If

End Sub

参考资料:

(1)《Visual basic 程序设计教程》第三版 龚沛曾 杨志强等编,高等教育出版社

(2)http://wenku.baidu.com/view/ec5926c7aa00b52acfc7ca92.html

(3)http://wenku.baidu.com/view/4d078519227916888486d7da.html

(4)http://wenku.baidu.com/search?word=vb%BC%C7%CA%C2%B1%BE%C9%E8%BC%C6%B1%A8%B8%E6&lm=0&od=0

更多相关推荐:
课程设计报告

1课程设计目的课程设计是船舶设计原理课程重要的实践性教学环节是培养学生掌握船舶设计基本原理和能力的技术基础主尺度论证与总布置设计是船舶总体设计的重要组成部分通过课程设计的训练力求使学生实现从学生到船舶设计师的角...

课程设计报告内容

一设计目的1强化上机动手能力在理论和实践的基础上进一步巩固数据结构课程学习的内容掌握工程化软件设计的基本方法2掌握图的创建和应用3掌握迪杰斯特拉以及Prim等基本算法思想4掌握if语句及switch语句的运用方...

课程设计报告

中国计量学院信息工程学院课程设计报告课程设计名称系统设计与仿真课程计二级学院信息工程学院专业班级10电信2班学姓成绩号名1000301232廖壁波指导老师20xx年12月13日中国计量学院信息工程学院课程设计报...

课程设计报告模板

信息科学与工程学院高级语言程序设计课程设计报告学生成绩管理系统学科专业计算机科学与技术班级1301学号指导教师唐郑熠讲师学生二零年月目录目录1设计任务12需求分析121基础功能122扩展功能13系统概要设计13...

课程设计报告

扬州大学数据结构课程设计报告课题名称姓名学院系科班级指导老师日期自来水管架设问题广陵学院陈宏建1一课程设计的题目自来水管理架设问题问题描述若要在扬州大学的八个居民区A区B区C区D区E区F区G区H区之间架设自来水...

课程设计报告

系统软件课程设计时钟中断与进程调度学号姓名指导教师11070319许明秀金雪云20xx年12月一报告摘要进程调度是操作系统十分重要的一个部分在操作系统的设计过程中进程调度和时钟中断形成了密不可分的关系系统时钟定...

计算机高级语言课程设计报告—学生成绩管理系统

计算机高级语言课程设计报告学生成绩管理系统班级:学号:姓名:日期:20##年1月18日一.课程设计题目与要求实习题目:学生成绩管理系统【实习内容】C++语言,面向对象的分析与设计。【基本要求】学生成绩管理是高等…

网页课程设计与报告

存档资料成绩:华东交通大学理工学院课程设计报告书所属课程名称网页设计与制作课程设计题目网站首页分院电信分院专业班级信息管理与信息系统1班学号##学生姓名何XX指导教师##20##年12月24日目录第一章绪论..…

简易温度控制系统(课设报告)

长安大学单片机课程设计-简易温度控制系统-专业:电气工程及其自动化学号:姓名:指导老师:时间:20##.12.30摘要随着科技的不断进步,在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已…

Java课程设计报告模板

Java程序设计课程设计报告(20##--20##年度第1学期)Hannio塔专业:计算机科学技术(网络工程)学生姓名:##班级:B计算机##学号:##指导教师:##完成日期:20##年1月8日目录目录...2…

计算机网络课程设计报告

计算机网络课程设计报告一.课程设计的题目、目的及要求.........................................................2二.课程设计的内容(分析和设计).....…

软件课程设计报告

任务书北京信息科技大学计算机软件基础课程设计题目从某个源点到其余各顶点的最短路径学院专业学生姓名班级学号指导老师起止时间任务书1摘要摘要本次课程设计的问题假设西安北京沈阳武汉4个城市构成小型交通网4个城市表示图...

课程设计报告(33篇)