VB入门教程2创建迷宫.docx

上传人:b****3 文档编号:26831275 上传时间:2023-06-23 格式:DOCX 页数:27 大小:93.97KB
下载 相关 举报
VB入门教程2创建迷宫.docx_第1页
第1页 / 共27页
VB入门教程2创建迷宫.docx_第2页
第2页 / 共27页
VB入门教程2创建迷宫.docx_第3页
第3页 / 共27页
VB入门教程2创建迷宫.docx_第4页
第4页 / 共27页
VB入门教程2创建迷宫.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

VB入门教程2创建迷宫.docx

《VB入门教程2创建迷宫.docx》由会员分享,可在线阅读,更多相关《VB入门教程2创建迷宫.docx(27页珍藏版)》请在冰豆网上搜索。

VB入门教程2创建迷宫.docx

VB入门教程2创建迷宫

教程2:

创建迷宫

VisualStudio2010

本教程中将构建一个迷宫游戏,在该游戏中,用户必须将鼠标指针从起点移动到终点,而不触碰到任何墙。

 您将学习如何:

∙使用 Panel 容器布局窗体。

∙使用 Label 控件构建迷宫。

∙编写代码以显示消息框。

∙为鼠标事件设置事件处理程序。

∙在程序中播放声音。

∙使用类组织代码。

以下是迷宫的玩法:

鼠标指针从迷宫的左上角开始移动。

 用户在迷宫中移动鼠标指针时,小心不要将鼠标指针触碰到任何墙。

 如果鼠标指针触碰到某面墙,它将自动跳回到起点。

 但如果鼠标指针到达迷宫结尾处的“完成”标签,则将打开“Congratulations”(祝贺)消息框,此时游戏结束。

当您完成时,程序将类似下图所示。

在本教程中创建的游戏

 说明

在本教程中,同时涉及VisualC#和VisualBasic,因此请关注特定于您使用的编程语言的信息。

相关主题

标题

说明

步骤1:

创建项目并向窗体添加面板

通过创建项目并添加 Panel 容器开始操作。

步骤2:

使用标签构建迷宫

通过将多个 Label 控件添加到窗体中来构建迷宫。

步骤3:

结束游戏

通过使用“完成”标签来结束迷宫游戏。

步骤4:

添加方法来重新启动游戏

编写自己的方法以重新开始迷宫游戏。

步骤5:

为每面墙添加一个MouseEnter事件处理程序

添加事件处理程序,以便在鼠标指针触碰到墙时将指针发送回起点。

步骤6:

添加SoundPlayer

开始向迷宫游戏中添加声音。

步骤7:

向窗体中添加代码以播放声音

调用每个 SoundPlayer'sPlay() 方法以便在适当的时间播放声音。

步骤8:

运行程序并尝试其他功能

运行并测试程序。

 尝试其他功能,例如更改声音和颜色。

©2016Microsoft

步骤1:

创建项目并向窗体添加面板

VisualStudio2010

创建迷宫游戏的第一步是创建项目并向窗体添加 Panel 容器。

创建项目并添加Panel容器

1.在“文件”菜单上,单击“新建项目”。

2.如果没有使用VisualStudio学习版,您需要先选择一种语言。

 从“安装的模板”列表中选择“C#”或“VisualBasic”。

3.单击“Windows窗体应用程序”图标,然后键入“Maze”作为名称。

4.设置窗体属性:

a.使用指针拖动右下角来调整窗体的大小。

 观察集成开发环境(IDE)的右下角。

 状态栏中会显示窗体的大小。

 继续拖动直到窗体的宽度和高度均为650像素。

 可以构建一个更小或更大的迷宫,因此可使窗体具有所需的任意大小。

状态栏中的大小

 

b.在窗体达到适当大小后,请将“Text”属性设置为“迷宫”。

c.若要使用户无法调整窗体的大小,请将“FormBorderStyle”属性设置为“Fixed3D”。

d.通过将“MaximizeBox”属性设置为“False”可以禁用窗体的标题栏中的“最大化”按钮。

此时您已有一个具有固定大小的窗体,用户无法将该窗体最大化。

 说明

在创建新窗体时,默认情况下会对窗体进行相应设置,使用户能够通过两种方式来调整窗体的大小:

用户可以拖动窗体的边和角或单击“最大化”按钮来使窗体最大化。

 如果希望确保用户无法调整窗体的大小,请禁用这两个选项。

 将“FormBorderStyle”属性设置为任一固定样式可阻止用户调整窗体的大小,但用户仍可以单击“最大化”按钮。

 这就是同时需要禁用“MaximizeBox”属性的原因。

接下来,您需要创建一个用于构建迷宫的游戏场。

 您可以使用 Panel 控件执行此操作。

 面板是一类容器控件,可让您对一组控件进行布局。

 与其他一些容器(如“TableLayoutPanel”容器和“FlowLayoutPanel”容器)不同,面板不会重新排列它所包含的控件。

 这样一来,您就可以自由地将控件放置在所需位置,但与TableLayoutPanel或FlowLayoutPanel不同的是,面板在用户调整窗口的大小时不会提供任何帮助。

5.转到工具箱中的“容器”组并双击“Panel”以将面板添加到窗体。

 选定面板后,面板的左上角应显示一个移动句柄图标,如下所示。

移动句柄

6.拖动面板直到它接近于窗体左上角。

 在拖动面板时,您应注意IDE的一个有用功能:

一旦面板与窗体的上边缘或左边缘之间达到某个特定距离,面板就会嵌入到位,并且面板边缘和窗体边缘之间会显示一条蓝色分隔线。

 可以利用此分隔线轻松对齐面板,使其各个边缘与窗体边缘之间的距离完全相同。

 一旦您看到顶部和左侧的蓝色分隔线,请释放鼠标按钮以将面板放置到位。

 蓝色分隔线如下所示。

蓝色分隔线

拖动右下角的拖动句柄,直到面板的右侧和底部嵌入到位。

7.由于您希望用户看到迷宫的边缘,因此您需要为迷宫提供一个可视边框。

 选择面板并将其“BorderStyle”属性设置为“Fixed3D”。

8.通过单击如下所示的“全部保存”工具栏按钮来保存项目。

“全部保存”按钮

9.若要运行程序,请按F5或单击如下所示的“启动调试”工具栏按钮。

启动“调试”工具栏按钮

在运行时,窗体应与以下图片类似。

初始迷宫窗体

10.在转到下一个教程步骤之前,请通过关闭窗体或单击“调试”工具栏上的“停止调试”工具栏按钮来停止程序。

 (在程序运行时,IDE将保持处于只读模式中。

继续或查看

∙若要转到下一个教程步骤,请参见步骤2:

使用标签构建迷宫。

∙若要返回概述主题,请参见教程2:

创建迷宫。

©2016Microsoft

步骤2:

使用标签构建迷宫

VisualStudio2010

现在是开始构建迷宫的时候了。

 可以通过向窗体添加多个 Label 控件来构建迷宫。

 通常使用标签来显示文本。

 但在此项目中,将使用标签在窗体上绘制一个彩色矩形来作为迷宫的墙。

使用标签构建迷宫

1.在Windows窗体设计器中,转到工具箱中的“公共控件”组,然后双击“Label”以使IDE向窗体添加标签。

2.设置几个属性,使标签成为一个大小可调整的矩形:

o将“AutoSize”属性设置为“False”。

o将“BackColor”属性设置为您喜欢的任何颜色。

 (对于此教程,从“Web”颜色选项卡中选择“RoyalBlue”。

o更改“Text”属性,通过选择文本“label1”并将其删除来清空此属性。

作为实心矩形的标签

此时,您的 Label 控件应为一个实心矩形。

 说明

这看起来似乎有些不正常,因为 Label 控件本来是应作为标签使用的。

 不过,在此情况下,此标签可以用作绘制块。

 编程的一个重要部分是了解工具箱(此示例中为IDE的工具箱)中的某个工具在什么情况下适用于特定作业,即使该作业不是此工具原本应用于的作业。

3.此时,您可以在构建迷宫时发挥您的创意。

 通过选择标签,并从“编辑”菜单中选择“复制”(或按Ctrl+C)来复制标签。

 然后,将标签粘贴多次。

 从“编辑”菜单中选择“粘贴”(或按Ctrl+V)。

 这将提供水平迷宫墙。

 选择其中的一面墙并拖动此墙,使其变得又高又窄。

 复制并粘贴此墙几次以提供垂直墙。

4.在面板周围拖动标签并创建迷宫。

 不要使通道过窄,否则您的游戏将很难玩。

 在左上角留出额外的空间,因为玩家将从该位置开始迷宫游戏。

 说明

您应该还记得,在您调整窗体的大小时,窗体的大小会显示在IDE的状态栏中。

 当您调整标签或任何其他控件的大小时,IDE会执行相同的操作。

 如果您愿意,您可以通过此操作来确保所有迷宫墙的宽度都相同。

在定位迷宫墙时,用于定位面板的IDE对齐栏也会很有用。

 也可以使用键盘上的箭头键对当前选定的控件位置进行微调。

 下图显示了状态栏中的大小。

5.状态栏中的大小

6.

7.在对迷宫进行布局后,转到工具箱中的“公共控件”组,然后重新双击“Label”一次。

 使用“属性”窗口中的“(Name)”行将标签命名为“finishLabel”,并将其“Text”属性更改为“完成”。

8.将新的“完成”标签拖动到迷宫的终点。

 这是用户需触碰的目标。

9.保存项目,然后重新运行程序。

 以下是已完成的迷宫窗体的示例。

 (迷宫的外观将有所不同。

已完成的迷宫窗体

继续或查看

∙若要转到下一个教程步骤,请参见步骤3:

结束游戏。

∙若要返回上一个教程步骤,请参见步骤1:

创建项目并向窗体添加面板。

©2016Microsoft

步骤3:

结束游戏

VisualStudio2010

若要结束游戏,请使用“完成”标签。

 可以通过为标签的MouseEnter事件添加事件处理程序来执行此操作。

 说明

如果您已完成“教程1:

创建图片查看器”,则您应了解事件处理程序。

 大多数控件都具有它们可引发的多个不同事件。

 图片查看器使用了 Button 控件的Click事件和 CheckBox 控件的CheckedChanged事件。

 在本教程中,将使用 Label 控件的MouseEnter事件,每当鼠标指针进入该控件时都将引发此事件。

 Label 控件具有四打以上的事件。

 其中的大多数事件都具有直观的名称,如“DoubleClick”、“Resize”和“TextChanged”。

 本教程后面会显示一个事件名称的列表。

结束游戏

1.选择“finishLabel”控件,然后单击位于“属性”窗口顶部的呈闪电形状的“事件”图标。

 单击此图标后,将显示控件的事件,而不是显示控件的属性。

 可以通过单击“属性”图标返回到属性列表。

 此时,将“属性”窗口保持原状,以便其显示“finishLabel”控件的所有事件。

 向下滚动到MouseEnter事件。

 图标和MouseEnter事件如下所示。

“事件”图标

“属性”图标

MouseEnter事件

2.双击“MouseEnter”一词。

 执行此操作后,IDE会自动将一个事件处理程序方法添加到窗体中,并在代码编辑器中显示该方法,如下所示。

C#

privatevoidfinishLabel_MouseEnter(objectsender,EventArgse)

{

}

 

每当鼠标指针进入此标签时,该事件处理程序方法都将运行。

3.您希望程序打开显示“Congratulations”(祝贺)的消息框,然后希望程序关闭。

 为此,您需要添加如下所示的代码行(带注释)。

C#

privatevoidfinishLabel_MouseEnter(objectsender,EventArgse)

{

//ShowacongratulatoryMessageBox,thenclosetheform.

MessageBox.Show("Congratulations!

");

Close();

}

 

 说明

您的 finishLabel_MouseEnter() 方法有两个语句。

 第一个语句将调用名为 Show() 的方法,此方法用于打开一个包含您在括号中放入的任何文本的消息框。

4.可以通过使用IDE浏览代码来了解有关所发生情况的更多信息。

 将鼠标指针置于“MessageBox”一词的上方。

 您应看到以下工具提示。

工具提示

 说明

IDE指明有一个名为 System.Windows.Forms.MessageBox 的类,并且您调用的 Show() 方法位于此类中。

 无需完全理解即可正确使用消息框,但附加信息会很有用。

对于第二个语句,每个窗体都有一个名为 Close() 的内置方法,此方法可促使窗体关闭。

 一些程序具有多个窗口,用户可以在这些窗口间进行切换。

 在使用此类程序时,它会关闭当前窗口,但程序的其余部分将保持运行。

 (例如,如果您同时打开了多个MicrosoftOfficeWord文档,则关闭一个文档窗口会关闭相应文档,但OfficeWord仍保持打开状态。

)不过,在只包含一个窗口的程序中,关闭该窗口会导致程序停止运行,因此关闭窗体即会关闭程序。

5.保存并运行程序。

 将鼠标指针移动到“完成”标签的上方。

 这将打开消息并关闭程序。

继续或查看

∙若要转到下一个教程步骤,请参见步骤4:

添加方法来重新启动游戏。

∙若要返回上一个教程步骤,请参见步骤2:

使用标签构建迷宫。

©2016Microsoft

步骤4:

添加方法来重新启动游戏

VisualStudio2010

您已了解IDE是如何自动将事件处理程序方法添加到程序的。

 您还可以编写方法并将其添加到代码中。

 许多程序员花费大量的时间来添加他们自己的方法。

 说明

如果有一组语句需要在不同的位置执行多次,则编写自己的方法会非常有用。

 这在编写程序时经常会发生。

例如,在创建此迷宫程序时,您希望此程序在启动时会自动将鼠标指针重新定位到面板的左上角。

 当用户将指针移到墙上时,您希望此程序将指针重新定位到起始位置。

 当用户将指针移出游戏场并再次返回时,您希望此程序将指针再次重新定位到起始位置。

可以使用三行代码将指针重新定位到起始点。

 不过,如果不必在程序中的多个不同位置编写这三行相同的代码,就能够节省时间了。

 如果将这三行代码放入某个方法(如名为 MoveToStart() 的方法)中,则只需编写这些代码一次。

 然后,无论您何时想要将指针移回到面板的左上角,只需调用 MoveToStart() 方法即可。

添加方法来重新启动游戏

1.通过右击“解决方案资源管理器”中的“Form1.cs”,并从菜单中选择“查看代码”,转到窗体的代码。

2.您应该会看到已添加的 finishLabel_MouseEnter() 方法。

 就在此方法的下面,添加一个新的 MoveToStart() 方法。

C#

privatevoidMoveToStart()

{

PointstartingPoint=panel1.Location;

startingPoint.Offset(10,10);

Cursor.Position=PointToScreen(startingPoint);

}

 

3.有一种特殊类型的注释,您可以将它添加到任何方法的上面,而且IDE会帮助您添加它。

 将光标放在新方法上面的行中。

 在VisualC#中,添加三个左斜线(///)。

 在VisualBasic中,添加三个单引号(''')。

 IDE会自动填充以下文本。

C#

///

///

///

privatevoidMoveToStart()

{

PointstartingPoint=panel1.Location;

startingPoint.Offset(10,10);

Cursor.Position=PointToScreen(startingPoint);

}

 

4.在两个摘要标记之间的行上,填充以下注释。

 (按Enter之后,IDE会根据编程语言自动添加带三个左斜线(///)或带三个单引号(''')的新行,以便您可以继续注释。

C#

///

///Movethepointertoapoint10pixelsdownandtotheright

///ofthestartingpointintheupper-leftcornerofthemaze.

///

 

 说明

您刚刚添加了XML注释。

 也许您还记得,当您将鼠标悬停在单词“MessageBox”上方时,IDE在工具提示中显示了信息。

 IDE会自动填充有关方法的工具提示。

 您放入XML注释中的所有内容都将出现在IDE的工具提示中,以及“IntelliSense”窗口中。

 一个程序若能包含多种方法会挺有用的。

 此外,如果在面板左上角的下方和右侧各10像素的位置放置一面墙,则可以在代码中改为(10,10)。

 尝试不同的数字,直至找到适用于迷宫的指针起始点。

5.添加方法之后,需要调用它。

 由于您希望程序能够在启动后立即将指针移到起始点,因此应在窗体启动后立即调用该方法。

 对于VisualC#,在窗体的代码中查找以下方法。

C#

publicForm1()

{

InitializeComponent();

}

 

对于VisualBasic,在窗体的代码中添加该方法。

 在 finishLabel_MouseEnter 方法前面,开始键入以下代码。

VB

PublicSubNew()

 

当您按Enter键移动到下一行时,IntelliSense应显示下面的代码来完成该方法。

VB

PublicSubNew()

'ThiscallisrequiredbyWindowsFormsDesigner.

InitializeComponent()

'AddanyinitializationaftertheInitializeComponent()call.

EndSub

 

这是一种称为构造函数的特殊方法。

 当创建窗体时,会执行一次该方法。

 现在,该方法要执行的所有操作是调用一个名为 InitializeComponent() 的方法。

 将在该方法中添加一行代码,以便调用刚才编写的新MoveToStart() 方法。

 在继续操作之前,请考虑若要使程序能够在调用 InitializeComponent() 方法之后立即调用 MoveToStart() 方法,需要在程序中添加哪些代码。

 说明

窗体构造函数中的 InitializeComponent() 方法是IDE编写的方法。

 此方法将向窗体中添加所有控件和组件,并设置它们的属性。

 每当您更改窗体或其控件的任意属性时,IDE都会相应地修改此方法。

 通过从“解决方案资源管理器”中打开文件Form1.Designer.cs,可以查看此方法。

 您不需要编辑 InitializeComponent() 方法的内容。

 而IDE会基于您在“设计”视图中创建的窗体负责执行此操作。

6.紧接在对 InitializeComponent() 方法的调用之后添加对 MoveToStart() 方法的调用。

 窗体代码应如以下所示。

C#

namespaceMaze

{

publicpartialclassForm1:

Form

{

publicForm1()

{

InitializeComponent();

MoveToStart();

}

privatevoidfinishLabel_MouseEnter(objectsender,EventArgse)

{

//ShowacongratulatoryMessageBox,thenclosetheform.

MessageBox.Show("Congratulations!

");

Close();

}

///

///Movethepointertoapoint10pixelsdownandtotheright

///ofthestartingpointintheupper-leftcornerofthemaze.

///

privatevoidMoveToStart()

{

PointstartingPoint=panel1.Location;

startingPoint.Offset(10,10);

Cursor.Position=PointToScreen(startingPoint);

}

}

}

 

请注意 InitializeComponent() 下面的对 MoveToStart() 方法的调用。

 如果使用VisualC#进行编程,请记得在此行结尾加上分号(;),否则程序将不会生成。

7.现在即可保存并运行程序。

 程序启动后,指针应自动重新定位到面板左上角的右侧稍微偏下的位置。

继续或查看

∙若要转到下一个教程步骤,请参见步骤5:

为每面墙添加一个MouseEnter事件处理程序。

∙若要返回上一个教程步骤,请参见步骤3:

结束游戏。

©2016Microsoft

步骤5:

为每面墙添加一个MouseEnter事件处理程序

VisualStudio2010

如果每当用户的鼠标指针接触到墙时都将该指针发送回起点,则将使迷宫游戏更加有趣并更具挑战性。

 在您进一步阅读之前,请先考虑如何做到这一点。

为每面墙添加一个MouseEnter事件处理程序

1.转到Windows窗体设计器,然后单击任一新添加的墙。

2.转到“属性”窗口,然后单击“事件”图标以显示此墙的事件。

 向下滚动到MouseEnter事件。

 键入文本wall_MouseEnter,然后按Enter,而不是双击该事件。

 “事件”图标和“属性”窗口如下所示。

“事件”图标

显示MouseEnter事件的“属性”窗口

 说明

如果您将事件名称直接键入“属性”窗口中的事件表时,则指示IDE创建一个具有该名称的事件处理程序并将其连接到控件的事件。

 您通常希望IDE选择事件名称,这是因为这些名称具有逻辑性,并且使用它们可使其他人能够更轻松地阅读并理解您的代码。

 当IDE为事件处理程序选择名称时,它会使用控件的名称和事件的名称。

 在此情况下,您不会更改墙的默认名称,这些默认名称为“label4”、“label18”、“label25”等。

 因此,如果单击名为“label12”的墙,则IDE会将事件处理程序命名为“label12_MouseEnter”。

 通过键入名称“wall_MouseEnter”,您将可以选择更适用的名称。

 这在为多个控件使用一个事件处理程序(本教程的后面将会遇到这种情况)时尤为重要。

3.按下Enter后,IDE将为您添加一个新的事件处理程序,并会将其连接到此墙的MouseEnter事件。

 新添加的代码应在您的代码编辑器中出现,如下所示。

 在VisualBasic中,特定标签可能不是代码中显示的Label8。

C#

privatevoidwall_MouseEnter(objectsender,EventArgse)

{

}

 

4.接下来,添加一个对 MoveToStart() 方法的调用和一个说明该方法的注释。

 首先转到您的方法并添加语句 MoveToStart()。

 “IntelliSense”窗口将打开,并显示以下内容。

“IntelliSense”窗口

当您添加 MoveToStart() 方法时,IDE会将此方法添加到“Int

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1