同人星球BBS -> 游戏制作 -> [转帖]制作游戏从这里开始-最简单的游戏制作教程! [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

littlewater 06-06-30 21:09

先发个SRC连接:http://www.angel-game.net/bbs/ShowPost.asp?id=5890

作者是 sandy_zc_1 : 以及她的签名 : 如果认为我的名字难记的话就叫Sandy吧,小珊迪也可以哟。*_-

以下是正文部分:
--------------------------------------------------------------------------------------------------------

到目前为止还不能在魔法学院发帖,只好先发在这里,请羽毛帮忙移过去。

说实在的,写一个“足够基础”的教程实在很累人,编此程序费了我几分钟,写此教程花了我一下午,为了让不会编程的人也能看懂,累呀~~


要是能放插图就好了……

最简单的游戏制作教程!

首先声明,如果你是编程高手那么没有必要看如此幼稚的帖子。
如果你不太会编程,而又对游戏制作很感兴趣,而且有耐心和意志,那么请往下看。

游戏制作是一类特殊的软件制作过程,它很复杂,需要各方面的知识和努力,而且对策

划要求很高……好了废话少说,进入正题。


这次我们要动真格的编一个真正属于自己的程序,作为游戏虽然很幼稚,但是却是编程的基础。

“石头剪子布”————未免太幼稚了吧?是的,所以说有水平的人和没耐心的人没有

必要看^_^ 不过一切高手都是从最简单最基础的地方一步步走过来的,不是吗?

编程首先得有专门的编程工具,这次我们选用的开发工具是VB,也就是Visual Basic 6

哎,别走呀,我保证你这次不用买专门的软件,你有Word吧?有它就行啦!(什么,没有?晕……)

打开你的Word,(本文中是以OfficeXP为准,其他版本的大同小异)你很快就会体会到VB的强大和应用的广泛,连Word中都集成着他的部分。

单击“工具”菜单,选择 宏->Visual Basic编辑器,怎么样,一个简化的VB就出现在你的眼前。

现在在这个崭新的界面中进入正式的 软件开发~~~

单击“插入”菜单,选择“用户窗体”,ok,看见了么?一个编辑状态的窗口出现了。
单击它,窗体四周会出现调整点,拖动他们就可以调整窗口的大小,很简单吧?

好了右键单击这个窗体,选择“属性”,屏幕左边应该出现一个属性窗口吧?下面列了

很长一串不知什么东西?这些都是这个窗体的属性啦。

在里面找,有一个Caption一栏看见没有?它的右边是什么呢?如果没错应该是

UserForm1吧!将它改为“石头剪子布”。
回头看看你的窗体,它的标题栏上已经是“石头剪子布”了,现在明白Caption属性是控

制什么的了吧?你也可以将它改成你喜欢的名字。

好了让我们接触VB中的另一概念——控件吧!你能找到工具箱吗?它里面盛的事很多很

好用的控件哟!(没找到?单击“视图”菜单,选择“工具箱”)
我们选择一个名叫“框架”的控件(就是画了一个方框上面有XYZ的那个,鼠标悬停会显

示“框架”),单击它,回头来再你的窗体上拉出一个矩形,就像在画图板里面画画一

样,这个“框架”就出现在你的窗体上了,顶部还有一个Frame1,我们下一步就是改掉

这个Frame1。单击这个框架,它的四周出现控制点说明已经被选中,先把它的大小调整

合适(你看着顺眼就行),回来在属性窗口把它的Caption属性从Frame1改成“我的选择

”(你选中哪个属性窗口就显示哪个的属性,所以改属性时确保你选中的是那个框架)


接下来我们要认识第二个控件,“选项按钮”,首先保证你的框架处于被选择状态,在

工具箱上选择它后(就是那个圆圈里面一个点),在框架中把它画出来,同样将它的

Caption属性由“OptionButton1”改为“石头” 调整好大小和位置,不要让它独占了整

个框架,因为你已经猜到了,接下来我们还要给它的下方再添上两个选项按钮,分别是

“剪子”和“布”。注意,本文中是将名称为“OptionButton2”的Caption改为“剪子

”,将“OptionButton3”的Caption改为“布”,它涉及下面的代码,所以不要弄错。
把他们摆得整齐些。

好了,这次保证整个窗体处于被选择状态,然后再那个“我的选择”框架右边另画一个

小点的框架,Caption属性改为“电脑的选择”。

保证这个新框架处于被选择状态,在工具栏里面单击一个新的控件——“标签”(就是

那个大写字母A),把它画在“电脑的选择”框架里面。它的Caption属性是“Label1”

吧?将它删掉,也就是Caption属性为空,提前不能知道人家的选择嘛!

在那个框架的外面下方放一个标签,这个没错应该是Label2吧,也将它的Caption属性改

为空,这个是用来显示结果的,最好醒目一点,在属性窗口中找,Font,找到了吗?右

边还是一个“宋体”对不?单击它,看见“宋体”右边的那个戴省略号的小按钮了吗?
单击它,出现一个新的“字体”设置窗口,把字号改大一点吧,再来个粗体,这下醒目

了。

好了,再在它下面添加一个新控件——“命令按钮”,调整好大小,Caption属性改为“

OK”(你现在应该知道Caption代表什么了吧)
这样,我们的界面设计就完成了!

littlewater 06-06-30 21:09
现在我们的程序还只有一个壳子,没有灵魂,代码才是一个程序的主体。
要学好代码并非一朝一夕就可以完成,这需要长时间的努力,不过这次程序的代码十分

简单,相信你一下就可以悟通的。

接下来就是代码编辑了,选择窗体,右键单击选择“察看代码”,你会看到一个新的窗

口。是不是已经有了这么几行:
Private Sub UserForm_Click()

End Sub
不要他,全部删除,直到你看到左上方的选项栏里面变成“通用”,右上方的变成“声

明”为止。
好了我们现在就要“声明”了(以下三行):

Dim MySelection1 As Integer
Dim ComputerSelection1 As Integer
Dim Result1 As String

最好不要粘贴过去,自己手动输入一下你会体会到VB的一些特性。

你看到“Dim”“As”等变成了蓝色,这些都是VB的保留字,保留字是什么?暂时不用搞

得太深,你只要知道保留字时VB“认得”的字就行了。
Dim是什么意思呢?它的作用是定义变量。(变量是什么你应该知道吧,不然你拿你初中

的数学书翻一下)
Dim MySelection1 As Integer的意思是:定义一个名叫“MySelection1”的Integer类

型的变量。
Integer是什么类型呢?它叫做 整型 ,也就是只能存储整数,占用两个字节,但不是任

何整数都能存储,必须是-32768到32767的整数。过大获过小都会造成数据溢出。

类似地,还有长整型(Long),它占用四个字节,存储范围-2147483648到2147483647,

如果你喜欢,你也可以将上面两行代码中的Integer改为Long,只是本程序没必要用那么

多,多占了点内存而已。

有存储数的,也就有存储其他的,比如字符。String型变量就是存储字符的,它叫做字

符串。它的长度可以变化,可以存一个或多个字符,比如“A”、“Hello!”、“大家好

”等等,在VB中每个字符占两个字节。

好了,我们声明了3个变量,下来就要对他们进行操作了。
在左上方写着“通用”的选项栏中选择OptionButton1,如果不出所料右边的选项栏也由

声明变成“Click”,而代码中则出现了这些:

Private Sub OptionButton1_Click()

End Sub

而且还多了一条横线隔开了我们刚才输入的代码,好了,在这两行中间加入:
MySelection1 = 1
这样就变成了
Private Sub OptionButton1_Click()
MySelection1 = 1
End Sub
这是什么意思呢?Click是什么你知道吧?是单击的意思。这代码的意思是,如果一旦单

击名称为OptionButton1的控件,就执行中间夹着的代码 MySelection1 = 1 。
也就是说,你在Private Sub OptionButton1_Click()和End Sub中间写的任何代码都会

在有人单击名称为OptionButton1的控件后执行。
至于MySelection1 = 1,确切地写应该是 Let MySelection1 = 1 ,现在清楚意思了吧

,就是让这个名为MySelection1 的变量里面保存的数据为1。而Let在这种情况下可以省

略。

现在抛开我们的程序,看看这句代码:n=n+1,这在数学上是永远也不会成立的,但是在

代码中却是正确的,你给它的前面加上一个Let,现在清楚多了吧,Let n=n+1,意思是

说让现在的n这个变量的值等于过去的n里的值加上1,作用就是让n这个变量里的值增加

一,所以这里的“=”不是相等的意思,而是“赋值”,要搞清楚。

好了,回到程序,用同样的方法添入以下代码:
Private Sub OptionButton2_Click()
MySelection1 = 2
End Sub

Private Sub OptionButton3_Click()
MySelection1 = 3
End Sub
成功的话应该有好几条横线把他们隔开了吧?这就是说,它们之间是相互独立的,每一

个在执行到End Sub之后就完了,不会接着执行其他的代码。

3个选项按钮的代码已经全部搞定,接下来是控制按钮的代码,同样的方法:
Private Sub CommandButton1_Click()
If MySelection1 = 0 Then MsgBox "请先选择!"
ComputerSelection1 = Int(Rnd * 3) + 1
End Sub
下来解释一下,第一行和最后一行不用说了吧,一样的道理。
If MySelection1 = 0 Then MsgBox "请先选择!"
这一句其实很好理解,就是当 MySelection1 = 0 时,执行 MsgBox "请先选择!"

这个语句,Msgbox "请先选择!" 的意思是,弹出一个上面写有“请先选择!”字样的

对话框。
这里要注意的是,这次的“=”不再是“赋值”的意思,而就是“相等”的意思。如果你

是在搞不清,以后赋值的语句前都写上 Let。

下面的一句:ComputerSelection1 = Int(Rnd * 3) + 1
涉及两个函数:Int()和Rnd()。
Int()的做用是取整,即得到一个不大于原来数字的整数,如:Int(4)的结果是4,Int

(4.1)的结果也是4,Int(4.8)的结果还是4。注意:这里取整是取“不大于”原来数字的

整数,如果Int(-4.5)得到的结果是-5。
Rnd()函数的作用是得到一个随机数(也就是随便得到一个数),不过范围是0到1之间的

一个小数。(但是不包括0或1)
所以Rnd*3的结果是随便得到一个0到3之间的小数,外面套个Int()后结果就成了0到2之

间的整数(当然包括0和2),在加上个1,所以整个语句的作用就是随便得到1、2、3之

中的一个数,储存在名叫ComputerSelection1的变量中。

你现在明白了吧,MySelection1 和ComputerSelection1着两个变量分别存储着你和电脑

的选择,1代表“石头”,2代表“剪子”,3代表“布” 。程序就是把感性化的东西用

数字表示出来。

下来我们要判断你和电脑到底谁赢了。
在所有过程(在Private Sub 和 End Sub 以及之间的代码称为一个子程序,算是一个过

程)外,也就是找最下面空的地方输入:
Function Judge1
回车,你看看效果,你的输入自动变成了:

Function Judge1()

End Function
这是什么呢?这是一个你自己定义的函数,名叫Judge1。它和上面的那些子程序一样,

也算作一个过程,也就是说它和上面的那些代码之间也是相互独立的,不然为什么又会

多出一条横线把它和上面的代码隔开?呵呵。

现在你定义了一个名叫Judge1的函数,当然要有用。“Function”这个单词有“函数”

的意思,也有“功能”的意思,你要让它实现一个功能,才是创建它的目的。
在这里我们要让它判断到底谁赢了。

把下面的代码一股脑放到你的函数中去(即Function Judge1()和 End Function之间)
If ComputerSelection1 = 1 Then

If MySelection1 = 1 Then
Result1 = "平局"
ElseIf MySelection1 = 2 Then
Result1 = "你输了"
ElseIf MySelection1 = 3 Then
Result1 = "你赢了"
End If

ElseIf ComputerSelection1 = 2 Then

If MySelection1 = 1 Then
Result1 = "你赢了"
ElseIf MySelection1 = 2 Then
Result1 = "平局"
ElseIf MySelection1 = 3 Then
Result1 = "你输了"
End If

ElseIf ComputerSelection1 = 3 Then

If MySelection1 = 1 Then
Result1 = "你输了"
ElseIf MySelection1 = 2 Then
Result1 = "你赢了"
ElseIf MySelection1 = 3 Then
Result1 = "平局"
End If

End If

这个代码看起来很麻烦,实际上逻辑很简单。
首先看这个大结构:
If ComputerSelection1 = 1 Then
'语句1
ElseIf ComputerSelection1 = 2 Then
'语句2
ElseIf ComputerSelection1 = 3 Then
'语句3
End If
它的意思是先看ComputerSelection1 = 1是否成立,如果成立就执行 语句1 ,如果不成

立再看ComputerSelection1 是否等于 2 ,如果等于就执行 语句2 ,如果还不成立再看

ComputerSelection1 = 3是否成立,如果成立就执行 语句3 ,如果这些都不成立就什么

也不执行。

这就是用于判断的If语句的复杂形式。注意,如果你的Then后面直接跟另一个语句那么

就不需要End If ,如果你Then后面的语句很多需要另提一行写,那么最后必须用End If

封底,好让电脑知道你下面到多少句属于If可以影响的范围。

上面那很长一段代码其实主要的架构就是如此,只不过将那些“语句1”、“语句2”等

换成了另一个If结构,也就是大的If结构中套着3个小的,现在清楚了吧?能看明白这段

代码了吧?

好了,我们的这个名为Judge1的函数编制完成,可以使用了,怎么用?很简单,还记得

刚才你给
Private Sub CommandButton1_Click()

End Sub
之间加了两行代码
If MySelection1 = 0 Then MsgBox "请先选择!"
ComputerSelection1 = Int(Rnd * 3) + 1
吗?在它后面在加上一句
Judge1
就行了。调用这个函数只需要输入它的名称即可,简单吧。

接下来我们要通报结果了:

首先应该知道电脑到底选择了石头还是剪刀还是布。
同样的方法创建一个函数ShowComputerSelection1,在那两行中间加入:
If ComputerSelection1 = 1 Then
Label1.Caption = "石头"
ElseIf ComputerSelection1 = 2 Then
Label1.Caption = "剪子"
ElseIf ComputerSelection1 = 3 Then
Label1.Caption = "布"
End If
你应该能够看懂,Label1.Caption指的就是名叫Label1的控件的Caption属性。

最后我们还要通报谁赢了:

Function ShowResult1()
Label2.Caption = Result1
End Function
这样一个ShowResult1函数就可以解决问题。

等等,这还没完,你创建了函数还得使用它呀,在Private Sub CommandButton1_Click

()的那个过程里Judge1语句后面,把它们的名称输入进去就OK了!

……
……
好了,大功告成!赶快按F5运行看看结果?怎么样?你的一个完整的程序就这样制作出来了,而且是用Word制作的呢(某程序员:倒~)

littlewater 06-06-30 21:11
最后把完整的代码法上来,可以对照一下。(由于顺序的原因,部分地方可能和你编出来的不一样,但是思想、结构和实现方法是相同的)

Dim MySelection1 As Integer
Dim ComputerSelection1 As Integer
Dim Result1 As String

Private Sub CommandButton1_Click()
If MySelection1 = 0 Then MsgBox "请先选择!"
ComputerSelection1 = Int(Rnd * 3) + 1
ShowComputerSelection1
Judge1
ShowResult1
End Sub

Private Sub OptionButton1_Click()
MySelection1 = 1
End Sub

Private Sub OptionButton2_Click()
MySelection1 = 2
End Sub

Private Sub OptionButton3_Click()
MySelection1 = 3
End Sub

Private Sub UserForm_Click()

End Sub

Function ShowComputerSelection1()
If ComputerSelection1 = 1 Then
Label1.Caption = "石头"
ElseIf ComputerSelection1 = 2 Then
Label1.Caption = "剪子"
ElseIf ComputerSelection1 = 3 Then
Label1.Caption = "布"
End If
End Function


Function Judge1()
If ComputerSelection1 = 1 Then

If MySelection1 = 1 Then
Result1 = "平局"
ElseIf MySelection1 = 2 Then
Result1 = "你输了"
ElseIf MySelection1 = 3 Then
Result1 = "你赢了"
End If

ElseIf ComputerSelection1 = 2 Then

If MySelection1 = 1 Then
Result1 = "你赢了"
ElseIf MySelection1 = 2 Then
Result1 = "平局"
ElseIf MySelection1 = 3 Then
Result1 = "你输了"
End If

ElseIf ComputerSelection1 = 3 Then

If MySelection1 = 1 Then
Result1 = "你输了"
ElseIf MySelection1 = 2 Then
Result1 = "你赢了"
ElseIf MySelection1 = 3 Then
Result1 = "平局"
End If

End If
End Function

Function ShowResult1()
Label2.Caption = Result1
End Function



最后总结一下。
这个极其简单的“石头剪子布”游戏就编制完成了,可能有些人认为这太过简单幼稚,但是编程高手们都是这么一步步过来的,要相信VB,学下去你最终会完成这种效果的游戏:
ALT+滑鼠滚轮缩放图片
不错,这个游戏就使用上面我介绍的VB6加TV8的引擎做出来的,作者是一位名叫WinSpy的VB高手,很有名,连《电脑爱好者》都为他捧过场。
如果大家想看的话,我会再发一些用VB做的游戏的图片介绍。

如果想进一步学习,给电脑上装一个VB,装一个MSDN,再买本书努力吧!

kausiter 06-07-01 22:11
简单易懂,学习了,希望能够多发一些可以学习游戏制作的技术的帖子。

xuanlnu 07-06-17 00:36
果然还是要1步1步走..

bbllzzxx 07-07-09 14:54
[s:1] 很多看不明白的.....
我是小白 [s:1]


查看完整版本: [-- [转帖]制作游戏从这里开始-最简单的游戏制作教程! --] [-- top --]

Powered by PHPWind v5.3 Code © 2003-05 PHPWind
Time 0.087440 second(s),query:4 Gzip enabled

You can contact us