论坛首页 编程语言技术论坛

玩”Ruby勇士“游戏来学习Ruby

浏览 16521 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-05-11   最后修改:2009-05-14
这个游戏是由ryanb(就是制作railscasts的牛牛)编写的。

项目主页:http://github.com/ryanb/ruby-warrior/tree/master
git拖下来: git clone git://github.com/ryanb/ruby-warrior.git


也可以直接打开项目主页,点击下载按钮下载解压即可.

这个游戏以一种有趣交互的方式来教你使用Ruby语言和人工智能。

在游戏中你扮演一个勇士去攀登高塔得到顶层的珍贵的红宝石。

在塔中每一层也就是每一关,你需要编写一个Ruby脚本来指导主角如何到达楼梯处然后进入下一关。

这是Ruby勇士,play_turn相当于回合制游戏中的一个合回。
  class Player
    def play_turn(warrior)
      # your code goes here 代码写在这里
    end
  end


在每一关你必须给足主角战斗的力量,你得考虑主角还有多少生命值,什么时候得休息恢复一下生命值等等。注意:每一个回合里,主角只能有一步操作。

随着一关关的进行,游戏主角操作的能力会越来越多,敌人越来越难,就看你如何编写出漂亮的代码让主角通关啦。

具体玩法:
把项目下载到本地后,直接进入ruby-warrior/bin目录,运行rubywarrior命令就可以开玩了。
系统会提示你是选择入门级别还是高手级别的。输入数字选好后回车,会在当前的ruby-warrior/bin目录下生成一个ruby-warrior/beginner-tower目录(选择入门级别)
第一关会生成一个level-001目录,里面有player.rb和Readme文件,照着README文件来进行没错。

在每一关的目录中把代码编写好后,执行 ./rubywarrior 命令来运行 编写的代码

第一关: 这关很简单,就是要主角直接走到楼梯外就可以了。
class Player
  def play_turn(warrior)
    warrior.walk! # 在第一关只有这个行走的方法。
  end
end


第一关执行过程和结果:
引用
qichunren@qichunren-laptop:~/code/ruby-warrior/bin$ ./rubywarrior
Welcome to Ruby Warrior
[1] qichunren - beginner - level 1 - score 0
[2] New Profile
Choose profile by typing the number: 1
Starting Level 1
- turn 1 -
--------
|@      >|
--------
qichunren walks forward
- turn 2 -
--------
| @     >|
--------
qichunren walks forward
- turn 3 -
--------
|  @    >|
--------
qichunren walks forward
- turn 4 -
--------
|   @   >|
--------
qichunren walks forward
- turn 5 -
--------
|    @  >|
--------
qichunren walks forward
- turn 6 -
--------
|     @ >|
--------
qichunren walks forward
- turn 7 -
--------
|      @>|
--------
qichunren walks forward
Success! You have found the stairs.
Level Score: 0
Time Bonus: 8
Clear Bonus: 2
Total Score: 10
Would you like to continue on to the next level? [yn]


第二关:这关里有一个敌人,主角得走一下判断一下,如果遇到了敌人就干掉它。
class Player
  def play_turn(warrior)
  	if warrior.feel.empty?
    	warrior.walk!
  	else
  		warrior.attack!
  	end
  end
end

第二关执行过程和结果:
引用
qichunren@qichunren-laptop:~/code/ruby-warrior/bin$ ./rubywarrior
Welcome to Ruby Warrior
[1] qichunren - beginner - level 2 - score 10
[2] New Profile
Choose profile by typing the number: 1
Starting Level 2
- turn 1 -
--------
|@   s  >|
--------
qichunren walks forward
- turn 2 -
--------
| @  s  >|
--------
qichunren walks forward
- turn 3 -
--------
|  @ s  >|
--------
qichunren walks forward
- turn 4 -
--------
|   @s  >|
--------
qichunren attacks Sludge
Sludge takes 5 damage, 7 health power left
Sludge attacks qichunren
qichunren takes 3 damage, 17 health power left
- turn 5 -
--------
|   @s  >|
--------
qichunren attacks Sludge
Sludge takes 5 damage, 2 health power left
Sludge attacks qichunren
qichunren takes 3 damage, 14 health power left
- turn 6 -
--------
|   @s  >|
--------
qichunren attacks Sludge
Sludge takes 5 damage, -3 health power left
Sludge dies
qichunren earns 12 points
- turn 7 -
--------
|   @   >|
--------
qichunren walks forward
- turn 8 -
--------
|    @  >|
--------
qichunren walks forward
- turn 9 -
--------
|     @ >|
--------
qichunren walks forward
- turn 10 -
--------
|      @>|
--------
qichunren walks forward
Success! You have found the stairs.
Level Score: 12
Time Bonus: 10
Clear Bonus: 4
Total Score: 36
Would you like to continue on to the next level? [yn]



很好玩的游戏,大家来继续,我这里就不演示下去了。
   发表时间:2009-05-12   最后修改:2009-05-12
还挺好玩.lz共009关?
---------
额.看到了原来是新手9关..
0 请登录后投票
   发表时间:2009-05-12  
最近才剛開始學Ruby~

剛試了一下,似乎還挺不錯。

從遊戲中學習這概念真的很棒

不知道其他語言是否有類似這樣的傑作

順帶一提這讓我想到 Randy Pauch創的 Alice http://www.alice.org/
0 请登录后投票
   发表时间:2009-05-12  
先收起来,以后再看
0 请登录后投票
   发表时间:2009-05-12  
刚玩到新手第6关,发现已经写了很多if else,不知道下面编的会不会越来越烂……
0 请登录后投票
   发表时间:2009-05-12  
java飘过。不过还是想去学学ruby。
0 请登录后投票
   发表时间:2009-05-13  
第8关开始可以look,想要写个可处理各种情况的warrior就有点复杂了。
0 请登录后投票
   发表时间:2009-05-13  
额,,,很强大~~~~~~~~不错的游戏,,还可以学习ruby,,哇咔咔
0 请登录后投票
   发表时间:2009-05-14  
好玩。。作者是railscast那位哟
0 请登录后投票
   发表时间:2009-05-14  
貌似可以做成GUI的..
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics