赞 | 10 |
VIP | 15 |
好人卡 | 6 |
积分 | 16 |
经验 | 229303 |
最后登录 | 2018-3-22 |
在线时间 | 1609 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1624
- 在线时间
- 1609 小时
- 注册时间
- 2007-8-28
- 帖子
- 3253
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
教学讨论QQ群 53535461 作业检查:亿万星辰 (群主)
作业的问题在群里问亿万就好了{/tp}
仿大富翁游戏
初级的一些基本东西完成后,我们来通过制作一个完整的游戏来活用之前
的东西。
【核心问题】
这个游戏其实并不复杂,很多人的问题就是如何判断走到某格的事件的触
发。事件过多怎么解决卡的问题。这2个问题还真不好解决。我的解决办
法是抛弃上面的判断方式。解决问题有时候就是这样简单。一条路死了
就换条路。(分明是偷懒)
【问题1:让角色动起来】
首先我们要让角色按照骰子走步。
首先规定一个棋盘
■■■■
■ ■
■■■■
黑色格子就是要走的地方。我们在标记上数字来表示每个格子的位置
8,9,10,1
7, ,2
6,5,4 ,3
变量简化写成V,V1就是变量1
V1=玩家位置,V2=com位置,V3=玩家方向(0:逆时针移动 1:顺时针)
V4=com方向,V5=随机数
首先初始化
V1=1,V2=6,V3=V4=1
预备工作准备好了,
我们开始在公共事件里面规定流程
公共事件1:
循环开始
#判断输赢,判断完,跳出
玩家回合
事件判断
com回合
事件判断
循环结束
玩家回合(公共事件):
v5随机成1~6
以下循环
if v5>0
角色前进一步
v1+=1(既:v1变量+1)
v5-=1
除此之外
跳出循环
end
循环结束
这样角色就可以动了,不过v5=4的时候发现人物出去了。
原来是在拐角的地方没有转弯。
我们在更正一下:
玩家回合(公共事件):
v5随机成1~6
以下循环
if v5>0
if v1==3
角色面向左
end
角色前进一步
v1+=1(既:v1变量+1)
v5-=1
除此之外
跳出循环
end
循环结束
这样,第一个拐角处就可以了。其他681拐角处同理。
敌人也这样设置。
测试一下游戏,发现就是角色和敌人走来走去。
我们可以在随机数后面显示文章。显示走了几步。至于骰子动画再说,先
实现基本功能再说。
这时候我们发现v4v5没有用到,是给以后变方向用得的。
【问题2:我要买房子】
买房子之前要先规定各个格子的属性。
建立个全局变量$shuju=[]
[位置,类型,所属,价格,等级]
位置就是格子的编号
8,9,10,1
7, ,2
6,5,4 ,3
类型就是
0代表是事件,1代表是房子,2代表特殊建筑:旅馆,购物中心,公园什
么的
所属就是
0:空地 1:玩家1所有 2:电脑玩家1所有 真正的大富翁有4个人在
扩展就行了。
价格就是这个房子的价格
等级就是目前这个房子的等级
例子[2,1,0,100,0] 2号格房子 目前是空地,购买价格100,没有等级。
[3,0,0,100,0]3号格事件,后面3个其实没有用可以用nil 或者加上事件
属性,是突发事件,还是商店什么的
$shuju[1]到$shuju[10]设定你喜欢的就好。
例子:$shuju[1]=[2,1,0,100,0]
为了方便讲解,我规定1368为事件,其他是房子,没有特殊建筑。
我们再来规定一下
v6是当前玩家 例子:v6=1就是玩家 =2就是电脑玩家
v7是当前玩家位置
v8是玩家金钱
v9是电脑金钱
在玩家回合的后面追加
v6=1,v7=v1
敌人回合追加
v6=2,v7=v2
公共事件(事件检查):
if $shuju[v7][1]==0
#显示文章 你遇到什么不幸事件了金钱丢失什么的
# 也可以创建其他大富翁效果,由于种类繁多,以后专门讨论
显示文章:你遇到事件了
elsif $shuju[v7][1]==1
#这里就开始买房子了
#房子为空地的时候
if $shuju[v7][2]==0
if v6==1 && v8>=$shuju[v7][3]
显示选择项:是否买地?
买的情况:
$shuju[v7][2]=1#玩家所有
$shuju[v7][4]=1#建筑1级
#减去买的金钱
elsif v6==2 && v9>=$shuju[v7][3]
#电脑情况,改法参考上面
else
显示文章:金钱不足。
end
elsif $shuju[v7][2]==v6#房子为当前玩家所有
if v6==1 && v8>=$shuju[v7][3]
显示选择项:是否升级?
升的情况:
$shuju[v7][4]+=1#建筑升1级
#减去买的金钱
elsif v6==2 && v9>=$shuju[v7][3]
#电脑情况,改法参考上面
else
显示文章:金钱不足。
end
elsif
$shuju[v7][2]!=v6#房子为非当前玩家所有
if v6==1
#玩家减去 价格乘以级别的金钱,加给别人
v8-=$shuju[v7][3]*$shuju[v7][4]
v9+=$shuju[v7][3]*$shuju[v7][4]
显示选择项:你损失了,谁加上了,你可以自定义说的话
elsif v6==2
#电脑情况,改法参考上面
end
end
然后在主流程里面 反复调用这几个事件就行了。
现在就可以甩骰子走格子买房子了
基本的构架就是这样了。有错误疏忽请原谅。
作业?知道要做什么了吧。鉴于是考试期间,先不具体作业和截止时间。 |
|