网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月13日漏签0天
青浦高级中学吧 关注:7,118贴子:410,000
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1 2 下一页 尾页
  • 51回复贴,共2页
  • ,跳到 页  
<<返回青浦高级中学吧
>0< 加载中...

如何使用VB进行游戏的开发。【文字冒险游戏篇】

  • 只看楼主
  • 收藏

  • 回复
  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
前言:在高中阶段第一年级的第二学期,我们会学习到VB,这么一款语言。具有可视化特征的VB简直就是开发游戏的神器。在这边鄙人分享一点用VB使用制作游戏的思路。
第一篇为【文字冒险游戏】,这种类型的游戏对于程序本体的要求非常的低。因此,比较主要的是需要优秀的剧本以及绘画素材,BGM。。。当然,大家也可以使用【RMXP】或者【橙光文字游戏制作中心】来更为简单的制作这类游戏。
备注:鄙人语言实力并不算非常厉害,是具有瑕疵的,有错误之处希望大家多多包涵。
OK,那么开始教程!


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P1:游戏的进入
我们的游戏在一开始是需要有一个进入的界面的。那么如何实现呢?这里提供两个方法
A:form的切换。
这边拿以前开发的一款游戏作为例子。

我们可以在界面中拉入控件。并且更改按钮的Caption内容改变按钮上面显示的文字。
我们需要让游戏正式开始了,也就是让游戏进入或者退出。
所以我们双击【游戏开始】,在里面添加代码
第一种进入游戏的方法。
Unload Form1
Form2.show
解读一下,就是卸载form1,展示form2.
这样以后我们的程序就跳转到form2,就是游戏的本体了。
当然,关于form1 关闭的方法还有form1.hide,但这种关闭并不是关闭,只是隐藏。
关于form填加的方式,在右上角可以找到

第二种进入游戏的方法就是整个游戏就使用一个窗体(form)
具体操作为:
在进入游戏的按钮添加代码:
Command1.visible=false
....
Image1.Picture=****
duihuakuang.visible=true
....
解释一下,就是让这些按钮隐形。然后让游戏的主要部分出现


2025-07-13 12:05:42
广告
  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P2对话框的实现:
在文字游戏里面,会有对话框的部分,而点击一下对话框会使剧情得到进展。那么如何实现呢?我当初有一个基本思路。在按钮下面写:
dim a as integer
a=a+1
If a=1 then
...
end if
If a=2 then
....
end if
但我尝试的时候却失败了,因为每次点击的时候,会吧a定义一遍,a会失去原来的值,所以不管怎么样都是 a=1 的情况。
这个时候我们需要定义一个全局变量。全局变量,顾名思义,就是全局都有效的变量。我们用全局变量的时候,也就不需要在控件下面定义它,可以直接使用。那么全局变量如何定义呢?
Dim a As Integer
Private Sub Text1_Click()
a = a + 1
If a = 1 Then
Text1.Text = "第一次点击"
End If
If a = 2 Then
Text1.Text = "第二次点击"
End If
End Sub
第一种方法就是在代码页的最上端添加代码
如上段代码
第二种就是添加一个新模块
添加代码:
Public a As Integer
这样一来就不需要在代码页最上面添加代码了。
要注意的是,这里在按钮的代码,不需要再次定义a


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P3人物表情的变化:
这里基本与P2一样,我们拉一个新控件,Image,不妨吧它的名字改为Character那么我们通过Character的Picture属性进行更改。我们一般吧图片素材放在游戏根目录下。新建一个新的文件夹,名字不妨为Picture。我们如何吧picture属性的目标指向这张图片呢?Character.picture=App.Path & "\Picture\a.gif"以下为一个示例
Private Sub Text1_Click()
a = a + 1
If a = 1 Then
Text1.Text = "第一次点击"
Character.picture=App.Path & "\Picture\a.gif"
end if
If a = 2 Then
Text1.Text = "第二次点击"
Character.picture=App.Path & "\Picture\b.gif"
End If
End Sub
这样就实现了因为要说的话不同,人物或者表情的转换。


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P4:背景音乐
一款游戏是需要背景音乐的,这边介绍一下让背景音乐出现,消失的方法
首先我们需要让VB使用一个控件WindowsMediaPlayer。我们需要填加它。
在工程,部件,可插入对象这里可以轻易地找到它,我们吧它勾上。
然后我们在右边的空间栏这里可以轻易地找到它了。我们拖了一个进来。
要注意的是,直接在WindowsMediaPlayer的URL属性里面添加地址是不会有作用的,所以我们需要再游戏装载的时候让它播放。然后假如剧情对话到一定程度不需要了,让它关闭,就使用WindowsMediaPlayer1.Controls.pause,再次播放就是WindowsMediaPlayer2.Controls.play。更改曲目就是修改WindowsMediaPlayer的URL,下面展示一段代码:
Private Sub Form_Load()
WindowsMediaPlayer1.URL = App.Path & "\Bgm\ed.mp3"
End Sub
Private Sub Text1_Click()
a = a + 1
If a = 1 Then
Text1.Text = "第一次点击"
End If
If a = 2 Then
Text1.Text = "第二次点击"
WindowsMediaPlayer1.Controls.pause
End If
End Sub


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P5:剧情分支
对于一个文字冒险游戏来说,分支是十分重要的,不同的选项引导不同的分支以及不同的结果。(PIAPIAPIAPIA)对于不同的分支,我们需要定义一个新的全局变量来储存它。当然,这个全局变量或许就是好感度了。同样的,我们在代码页的最上方添加:

我们可以让对话框点击到一定程度的时候设立分支。
这边可以使用inputbox获取对方的想要选择的结果。
If a=3 then
dim b as string
b=val(inputbox("1:追上她;2:干翻她"))
*当然我们不排除可恶的玩家不好好输入1或者2。这个时候我们就需要循环语句。
Do while b<>1 and b<>2
b=val(inputbox("1:追上她;2:干翻她"))
loop
*这样一来,只有玩家输入1或者2的时候,他才能推动游戏进展了。
If b=1 then
love=0
....
end if
If b=2 then
love=1
....
end if
end if
当然,这样一来游戏就复杂多了,我们需要良好的编程习惯
如下图

小‘是注释的存在,不影响程序本身


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P6:游戏背景的展示
作为一个文字冒险游戏,场景是不断在改变的。改变场景其实和改变人物一样简单。
我们可以直接修改form1的Picture属性,或者拉一个Image控件置于底部。但是,我有一点疏漏的是,图片不能直接赋值,要先Load一下。
也就是:
LoadPicture(App.Path & "\Picture\a.gif")
Character.picture=LoadPicture(App.Path & "\Picture\a.gif")


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
P7:游戏存档,读档。
一个游戏不可能一口气玩到最后,所以我们需要做一个存档和读档的效果
我们不妨在根目录开一个文件夹,名为Save。在这个文件夹里面开一个.txt文件,不妨为save.txt
存档:
存档就是把运行的结果写入这个txt,方便读取。类似于输出。
看下方代码
Open App.Path & "\Save\Save.txt" For Output As #1
Print #1, a *从文件中分别读取数据赋值给变量a和b
Print#1,love
...
Close #1
解读一下,打开地址:Save\下的Save.txt来存放
第一行存放a,
第二行存放love
...
结束
读档:
Dim dataload(1 To 2) As String *以下是通过全局变量,input而实现的存档系统
Dim i, k As Integer
Open App.Path & "\Save\Save.txt" For Input As #1
Do While Not EOF(1)
For i = 1 To 2
Line Input #1, dataload(i)
Next i
Loop
Close #1
a= dataload(1)
love = dataload(2)
这边巧妙地运用循环语句读档。
解读一下,定义,打开Save.txt来赋值
如果没读到文件尾部做下面的事情
这一行的值赋值给dataload(i)
loop
最后再一一赋值。
当我们赋值结束后,就有了对话的进度a 以及好感度 love
当然,出于游戏的不同目的,可以多定义几个全局变量。这个时候只要改一改for next 语句以及数组的范围就可以了。
这里需要重视的是,
普通变量无法存储。


2025-07-13 11:59:42
广告
  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
总结:
文字冒险游戏是非常容易制作,但是充满意义的一种游戏(笑)。而其简单的程序也易于我们挖掘其他的游戏。作为入手的游戏类型非常合适。那么教程大概就到这里结束了,大家有不会(大家:写的什么乱七八糟的东西,看都看不懂)的地方可以向鄙人发问。
关于其他游戏类型的教程会在半年后为大家带来,届时会教大家做一款类DNF游戏吧。^-^
QQ:1044774028
游戏展示:
zhaominyiz.ys168.com
这个游戏是半年前做的,不包括存档,读档系统。


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
另外补充一点:
关于图片的处理,推荐大家使用.gif
VB对于透明图片只支持.gif一种,处理的方法大家可以打开PS,这里演示一下:

打开图片,修改图层

使用魔棒工具点击空白部分

按Delete筛除

图片另存.gif,保存,结束


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
关于素材的创作
SAI——立绘
PS——后期处理
FL——BGM
VB——程序本体


  • Aisaka
  • 桂明亲授
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
yooooooooooo


  • zhaominyiz
  • 青中一霸
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这边同样欢迎17届的新生,带你在编程课上飞,加扣扣。我很饥渴


  • Memory丶离歌
  • 班级尖子
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
自己做GALGAME么感觉好爽的样子


2025-07-13 11:53:42
广告
  • 爱卍仅有的
  • 哈佛特招
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
=_=


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 51回复贴,共2页
  • ,跳到 页  
<<返回青浦高级中学吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示