`

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

阅读更多
这个游戏是由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]



很好玩的游戏,大家来继续,我这里就不演示下去了。
分享到:
评论
20 楼 miroku 2009-07-31  
下不下来,能打个包  让我在JE上下载吗
19 楼 darkhucx 2009-07-02  
非常有趣的游戏!
18 楼 Java控 2009-06-19  
icefishc 写道
Java控 写道
终于到了简单第8关了····哈哈 做个游戏感觉不错  可以让一个没接触过ruby的我在不枯燥的情况下熟悉ruby各种特征 ···
尤其是他对于写法的接受程度
因为我是个javaer
所以 写完每句后 总是不自觉的加上了“;” 
到了第三关的时候才发下我有个写了“;”有的没写 ruby竟然也没搭理我 自顾自的运行着·····  等我把所有的“;”都删了以后 发现if的括号也可以去掉·····之后发现call方法的时候 传参数也可以不加括号····· 另外写上一些乱七八糟的字 只要不影响程序逻辑 ruby根本就不搭理你 ···不像是java 稍微写错一个符号 就编译都通过不了····

开始接触ruby已经两天了  ··又刚开始的别扭 到现在的舒服···真的很舒服···不见了那些烦人的括号 烦人的分号·····不过不爽的地方时end 我还是喜欢{}包围··

那就写{}呗

def fun
...
end
换成
def fun{
...
}
?
可是似乎不可以的啊
17 楼 icefishc 2009-06-17  
Java控 写道
终于到了简单第8关了····哈哈 做个游戏感觉不错  可以让一个没接触过ruby的我在不枯燥的情况下熟悉ruby各种特征 ···
尤其是他对于写法的接受程度
因为我是个javaer
所以 写完每句后 总是不自觉的加上了“;” 
到了第三关的时候才发下我有个写了“;”有的没写 ruby竟然也没搭理我 自顾自的运行着·····  等我把所有的“;”都删了以后 发现if的括号也可以去掉·····之后发现call方法的时候 传参数也可以不加括号····· 另外写上一些乱七八糟的字 只要不影响程序逻辑 ruby根本就不搭理你 ···不像是java 稍微写错一个符号 就编译都通过不了····

开始接触ruby已经两天了  ··又刚开始的别扭 到现在的舒服···真的很舒服···不见了那些烦人的括号 烦人的分号·····不过不爽的地方时end 我还是喜欢{}包围··

那就写{}呗
16 楼 Java控 2009-06-17  
终于到了简单第8关了····哈哈 做个游戏感觉不错  可以让一个没接触过ruby的我在不枯燥的情况下熟悉ruby各种特征 ···
尤其是他对于写法的接受程度
因为我是个javaer
所以 写完每句后 总是不自觉的加上了“;” 
到了第三关的时候才发下我有个写了“;”有的没写 ruby竟然也没搭理我 自顾自的运行着·····  等我把所有的“;”都删了以后 发现if的括号也可以去掉·····之后发现call方法的时候 传参数也可以不加括号····· 另外写上一些乱七八糟的字 只要不影响程序逻辑 ruby根本就不搭理你 ···不像是java 稍微写错一个符号 就编译都通过不了····

开始接触ruby已经两天了  ··又刚开始的别扭 到现在的舒服···真的很舒服···不见了那些烦人的括号 烦人的分号·····不过不爽的地方时end 我还是喜欢{}包围··
15 楼 Java控 2009-06-16  
郁闷 怪我自己E文学的不好·····竟然选择的中等 ··对于我这个刚接触ruby不到一月的javaer······是在是郁闷啊···看到我的地图怎么和楼主说的不一样 还以为是版本更新了呢····在中等二关困扰了很久 才发现我选择的是中等····啊·  以后一定要学好e文  最小基本的要会
14 楼 joey.he 2009-06-03  
靠,这种学习方式很好嘛~~~
13 楼 destinyd 2009-05-24  
beginner 总共LEVEL 9
intermediate 总共level 6
想做通用的智能没那么容易的
还是针对每关来做容易上手些
12 楼 hhhtj 2009-05-17  
    spaces = warrior.look
    spaces.each do |s|
      warrior.shoot! and return if s.enemy? && !s.captive?
      return if s.captive?
    end
11 楼 xinghu 2009-05-15  
在第8关卡住了,look怎么用?
10 楼 aaronluo 2009-05-15  
Java我记得有个GUI形式的坦克大战,不过那个难度大了点,需要考虑分析的东西太多,诸如坦克的方向和炮台的角度,敌人的速度和方向,对于初学者难度不小。这个感觉很好,刚过下载写了三关
9 楼 Hooopo 2009-05-14  
貌似可以做成GUI的..
8 楼 xhanxhanxhan 2009-05-14  
好玩。。作者是railscast那位哟
7 楼 Hooopo 2009-05-13  
额,,,很强大~~~~~~~~不错的游戏,,还可以学习ruby,,哇咔咔
6 楼 hhhtj 2009-05-13  
第8关开始可以look,想要写个可处理各种情况的warrior就有点复杂了。
5 楼 daerqwert 2009-05-12  
java飘过。不过还是想去学学ruby。
4 楼 darkbaby123 2009-05-12  
刚玩到新手第6关,发现已经写了很多if else,不知道下面编的会不会越来越烂……
3 楼 skymouse 2009-05-12  
先收起来,以后再看
2 楼 hankwang 2009-05-12  
最近才剛開始學Ruby~

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

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

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

順帶一提這讓我想到 Randy Pauch創的 Alice http://www.alice.org/
1 楼 yb31 2009-05-12  
还挺好玩.lz共009关?
---------
额.看到了原来是新手9关..

相关推荐

    ruby勇士,边玩边学习

    ruby勇士,初学者边游戏边学习ruby的好玩的东西。具体玩法在 http://www.javaeye.com/topic/383938,或者Google一下“ruby勇士”。因为下载游戏的网站有时访问不了,上传一下提供下载。

    使用Python Lua和Ruby语言进行游戏编程

    在提供的压缩包文件中,"Premier.Press.Game.Programming.with.Python.Lua.and.Ruby.ebook-LiB.chm"很可能是一本关于使用这三种语言进行游戏编程的电子书,它可能会详细介绍如何利用这些语言来开发游戏,涵盖从基础...

    游戏脚本语言(ruby初步)

    游戏脚本语言(ruby初步) 游戏脚本语言是游戏开发中不可或缺的一部分,而 ruby 是一种广泛应用于游戏脚本编程的语言。了解游戏脚本编程的基础是游戏...了解 Ruby语言的基础知识对于游戏开发者来说是非常重要的。

    Ruby-Ruby中机器学习的实用资源

    Ruby中机器学习的实用资源

    ruby学习的源码

    本资料包针对Ruby学习者提供了丰富的资源,对于初学者来说是非常有价值的。 1. **Ruby基础知识**: - 变量:Ruby支持局部变量、实例变量、类变量和全局变量,它们以不同的符号开头,如`@`、`$`等。 - 类与对象:...

    Ruby/tk学习资料

    ### Ruby/tk 学习资料知识点详述 #### 核心概念:Ruby/tk简介与基本操作 **标题**:“Ruby/tk学习资料” **描述**:“自己整理的Ruby/tk学习资料!” **标签**:“Ruby” **部分内容**:RUBY/tk学习文档 在本...

    RubyStudy-master-ruby学习笔记

    学习 Ruby 的旅程即将开始! Ruby 是一种功能强大、灵活的编程语言,广泛应用... Ruby 是一种复杂的语言,需要时间和努力来掌握。不要气馁,坚持学习和实践,你一定可以成为一名优秀的 Ruby 开发者。学习 Ruby 的过程中

    ruby中文教程,从基础到深入的让你学习ruby

    在学习Ruby的过程中,你还需要了解一些工具,如Ruby的解释器irb(交互式Ruby环境)和ri/rdoc(Ruby文档工具),它们有助于调试和理解代码。版本管理工具如RVM(Ruby Version Manager)和rbenv可以帮助你管理多个Ruby...

    编程知识+技术开发+从技术小白到Ruby编程专家的学习路径

    编程知识+技术开发+从技术小白到Ruby编程专家的学习路径;编程知识+技术开发+从技术小白到Ruby编程专家的学习路径;编程知识+技术开发+从技术小白到Ruby编程专家的学习路径;编程知识+技术开发+从技术小白到Ruby编程...

    关于ruby学习的资料

    6. 测试驱动开发(TDD):学习使用测试工具如RSpec,实践TDD的方法来编写健壮的代码。 7. 实践项目:参与开源项目或自己创建小项目,将理论知识应用于实际场景。 通过这些步骤,你可以逐步提升Ruby编程技能,同时...

    Python & Ruby 学习

    标题中的“Python & Ruby 学习”表明了这个压缩包文件包含了与这两种编程语言学习相关的资源。Python 和 Ruby 都是流行的高级编程语言,广泛应用于Web开发、数据分析、自动化脚本等多个领域。以下是对这两个语言的...

    Ruby新手学习书(Ruby语言中文教程)和Rails_4_days

    "Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言的基础以及Rails框架的核心概念。 在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁...

    用Python,Lua和Ruby语言设计游戏-Game.Programming.with.Python.Lua.And.Ruby

    综合来看,Python、Lua和Ruby各有其在游戏开发中的优势。Python适合快速开发和原型验证,Lua则在大型游戏引擎中广泛应用,而Ruby则为喜欢其语法风格的开发者提供了另一种选择。在实际项目中,开发者通常会结合这些...

    Ruby Ruby Ruby Ruby Ruby Ruby

    Ruby Ruby Ruby Ruby Ruby Ruby

    用Python,Lua和Ruby语言设计游戏

    在本书中,读者将学习如何利用这些语言的特性来构建游戏的基本结构,包括游戏循环、碰撞检测、精灵动画、用户交互以及游戏物理系统。同时,还会涉及如何整合外部资源如图像、声音和数据文件,以及如何优化性能和调试...

    Ruby基础语法经典学习PPT教程

    Ruby基础语法经典学习PPT教程. 网上关于ruby的PPT教程不太多,这个个人觉得还可以。

    Ruby-TensorStream用Ruby重新实现TensorFlow

    总的来说,Ruby-TensorStream为Ruby开发者提供了一个强大的深度学习工具,它结合了TensorFlow的威力和Ruby的优雅,使得机器学习变得更加易用和可访问。无论是初学者还是有经验的开发者,都能在Ruby-TensorStream中...

    [转] ruby学习一个综合小练习

    标题中的“ruby学习一个综合小练习”表明这是一个关于Ruby编程语言的学习资源,可能是通过一个实际的小项目或练习来帮助学习者提升对Ruby的理解。描述中提到的“博文链接”指向了一个特定的博客文章,虽然没有给出...

Global site tag (gtag.js) - Google Analytics