RubyWarrior——用Ruby战斗的游戏。

Ruby入门神器之——用Ruby战斗的Ruby warrior

你通过ruby控制着一个人战斗,探索,解救同伴。。。。。。


ruby

点击进入游戏

前几关都很简单。

第4关卡到我一下。最后发现,传给@healthwarrior.health居然是字符串。。。。。

我用上了@health.to_i才正常。不然用大于号就一直报错。

第6关太费劲了。。。。用了很久才解决。

思路就是,受伤了默默退回墙角回血。。

以下为代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#第6关 
class Player
@health
@wall
def play_turn(warrior)
if @wall == 1
if @health.to_i > warrior.health
if warrior.feel.enemy?
warrior.attack!
else
warrior.walk!
end
else
if warrior.health < 20
#向后退到墙边加血
if (warrior.feel:backward).wall?
warrior.rest!
else
warrior.walk!:backward
@wall=0
end
elsif warrior.feel.enemy?
warrior.attack!
else
warrior.walk!
end
end
else
if (warrior.feel:backward).captive?
warrior.rescue!:backward
elsif (warrior.feel:backward).wall?
@wall=1
else
warrior.walk!:backward
end
end
@health = warrior.health
end
end

第7关代码:

需要注意的是转身之后如果没碰到墙就继续向前走。所以要设置标志变量。

第一次我的人就不停的转身,直到超时。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#第7关 
class Player
@health
def play_turn(warrior)
if warrior.feel.wall?
if warrior.health < 20
warrior.rest!
else
warrior.pivot!
end
else
if warrior.feel.enemy?
warrior.attack!
elsif @health.to_i > warrior.health
if warrior.feel.enemy?
warrior.attack!
else
warrior.walk!
end
else
if warrior.health < 20
if @pivot == 1
warrior.walk!
else
warrior.pivot!
@pivot = 1
end
else
warrior.walk!
end
end
end
@health = warrior.health
end
end

第8关代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#第8关 
class Player
def play_turn(warrior)
@status = warrior.look
if @status[0].captive?
warrior.rescue!
elsif (@status[1].captive?)(@status[2].captive?)
warrior.walk!
elsif @status[0].enemy?@status[1].enemy?@status[2].enemy?
warrior.shoot!
else
warrior.walk!
end
end
end

差点超时的第9关:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#第9关 
class Player
def play_turn(warrior)
if @step == 3
warrior.walk!
elsif @step == 2
@status=warrior.look
if @status[2].enemy?
warrior.shoot!
elsif warrior.feel.captive?
warrior.rescue!
elsif warrior.feel.wall?
warrior.pivot!
@step=3
else
warrior.walk!
end
elsif @step == 1
if warrior.feel.stairs?
if warrior.health < 20
warrior.rest!
else
warrior.pivot!
@step = 2
end
elsif warrior.feel.captive?
warrior.rescue!
elsif warrior.feel.enemy?
warrior.attack!
else
warrior.walk!
end
else
warrior.pivot!
@step = 1
end
end
end

嗯。这样9关beginner就结束了。

似乎还有进阶级别。需要从Github上download下来玩。。。

不过我就不折磨自己了。

通过这个东西真的好像会了如何写Ruby一样。。。