安家博客园的第一篇随笔.

就来一点有(keng)趣(die)的吧... :)

博文初衷:探索和讨论编程的乐趣和美感


说在前面的话:

从学习编程来讲,我一直认为探索式学习是最有趣,也是最有效的一种。

而最让人有探索欲望的...恐怕就是冒险游戏了吧,一直让大家有进一步深♂入探索的想法。( ̄︶ ̄)↗

Ruby Warrior很符合这一特性,让你感到学习和打游戏毫不矛盾。

一边玩游戏一边写ruby code,用code操纵勇士来冒险,难度由浅入深,根本停不下来...╮(╯▽╰)╭

现在,作为“根本停不下来”系列的第一篇-Ruby Warrior 初级篇,推荐给大家。

关于Ruby语言:可能很多人听说过了,也可能有些同学并不了解,但这完全无所谓,本游戏没有上手门槛,并不需要了解太多。(详情戳我)

引用一段话来说明其思想吧:

人们特别是电脑工程师们,常常从机器着想。他们认为:“这样做,机器就能运行的更快;这样做,机器运行效率更高;这样做,机器就会怎样怎样怎样。”

实际上,我们需要从人的角度考虑问题,人们怎样编写程序或者怎样使用机器上应用程序。我们是主人,他们是仆人。

关于本文服务对象:希望从编程中获得或者发现乐趣的“玩家”,初级篇不需要编程基础就可以独立解决(后面几关需要动动脑)

关于本文目的:为了乐趣  ,真的。。就这些

关于提供的代码: 请尽量独立完成,代码仅供参考,时间仓促,作者是个菜鸟,现学现卖,所以并非完美,如果大家有更好的解决方案或者发现纰漏,请务必留言给我 :)


点击这里进入Ruby Warrior

提示:点击Venture Forth 并输入一个昵称!

提示:点击Abilities 查看你的“技能”列表


攻略与心得

初级篇 - LEVEL 1 - 一直走吧...

You see before yourself a long hallway with stairs at the end. There is nothing in the way.

思路:一直走下去...

提示:使用walk!方法来前进

class Playerdef play_turn(warrior)warrior.walk!end
end

解决方案

初级篇 - LEVEL 2 - 有敌人了!

It is too dark to see anything, but you smell sludge nearby.

思路:前面有敌人要打,没有就继续走...

提示:使用feel.empty?来判断前方一格的状况

class Playerdef play_turn(warrior)if warrior.feel.enemy?warrior.attack!elsewarrior.walk!endend
end

解决方案

初级篇 - LEVEL 3 - 爷能回血...傻了吧

The air feels thicker than before. There must be a horde of sludge

思路:血量低于安全值的时候就原地加血吧...否则继续杀。

提示:使用health方法加血

 1 class Player
 2   def play_turn(warrior)
 3      if warrior.feel.enemy?
 4         warrior.attack!
 5      else
 6         if warrior.health <= 9
 7            warrior.rest!
 8         return 0
 9         end
10      warrior.walk!
11      end
12   end
13 end

View Code

初级篇 - LEVEL 4 - 量力而行!

You can hear bow strings being stretched

思路:根据血量判断,被远程进攻时不要加血

提示:使用@health变量保存血量并辅助判断

 1 class Player
 2   @health = 20
 3   def play_turn(warrior)
 4      if warrior.feel.enemy?
 5         then warrior.attack!
 6      else
 7         if warrior.health <=15 && warrior.health == @health
 8           warrior.rest!
 9           @health += 2
10           return 0
11         end
12         warrior.walk!
13      end
14   @health = warrior.health
15   end
16 end

View Code

初级篇 - LEVEL 5 - 是敌是友?

You hear cries for help. Captives must need rescuing.

思路:判断是敌是友...然后采取策略,注意安全

提示:使用feel.captive?判断是否需要解救,使用rescue!解救

方案1-多判断

 1 class Player
 2   @health = 20
 3   def play_turn(warrior)
 4      if warrior.feel.enemy?
 5         warrior.attack!
 6      elsif warrior.health <=15 && warrior.health == @health
 7         warrior.rest!
 8         @health += 2
 9         return 0
10      elsif warrior.feel.captive?
11         warrior.rescue!
12         return 0
13      else
14         warrior.walk!
15      end
16   @health = warrior.health
17   end
18 end

方案2-多条件

初级篇 - LEVEL 6 - 需要一个策略...

The wall behind you feels a bit further away in this room. And you hear more cries for help.

思路:...一个一个解决,随时判断血量不足就退回去补充

提示:使用开关

class Playerdef play_turn(warrior)if @okif warrior.feel.enemy?warrior.attacked!@attacked=true elseif @attacked and !@isfullHP and !(warrior.feel:backward).wall?warrior.walk!:backward elsif (warrior.feel:backward).wall? and warrior.health < 20warrior.rest!@isfullHP = trueelsewarrior.walk!endendelseif (warrior.feel:backward).captive?warrior.rescue!:backward@ok = trueelsewarrior.walk!:backwardend endend
end

View Code

初级篇 - LEVEL 7 - 前面是墙!

You feel a wall right in front of you and an opening behind you.

思路:同上,只是你需要先转向...

提示: 注意方向

 1
 2 class Player
 3   def play_turn(warrior)
 4     if warrior.feel.wall?
 5       warrior.pivot!
 6     else
 7       if warrior.feel.enemy?
 8         warrior.attack!
 9         @attack=true # 杀敌
10       else
11         if @attack and !@fullHP and !(warrior.feel:backward).wall?
12           warrior.walk!:backward # 回血
13         elsif (warrior.feel:backward).wall? and warrior.health < 20
14           warrior.rest!
15           @fullHP = true
16         else
17           warrior.walk!
18         end
19       end
20     end
21   end
22 end

View Code

初级篇 - LEVEL 8 - 队长别开枪!...

You hear the mumbling of wizards. Beware of their deadly wands! Good thing you found a bow.

思路:使用开关判断要不要开枪

提示:你可以判断多格了...

 1 class Player
 2   def play_turn(warrior)
 3     thereisThreat = false
 4     thereisFriend = false
 5     if warrior.look[0].enemy? || warrior.look[1].enemy? || warrior.look[2].enemy?
 6       thereisThreat = true
 7     end
 8     if warrior.look[0].captive? || warrior.look[1].captive? || warrior.look[2].captive?
 9       thereisFriend = true
10     end
11     if thereisThreat == true && thereisFriend == false
12       warrior.shoot!
13       return 0
14     elsif thereisFriend == true
15       if warrior.feel.empty?
16         warrior.walk!
17         return 0
18       elsif warrior.feel.captive?
19         warrior.rescue!
20         thereisFriend = false
21         return 0
22       end
23     elsif thereisThreat == false
24       warrior.walk!
25       return 0
26     end
27   end
28 end

View Code

初级篇 - LEVEL ⑨ - 腹背受敌 ----

Time to hone your skills and apply all of the abilities that you have learned.

考验你的时候到了! 这一关请自行解决...

提示:先解决困难的一面比较好

参考代码:

 1 class Player
 2   def play_turn(warrior)
 3     case @attackedcount.to_i
 4     when 0
 5       warrior.pivot!
 6       @attackedcount = 1
 7     when 1
 8       if warrior.look[0].enemy? or warrior.look[1].enemy? or warrior.look[2].enemy?
 9         warrior.shoot!
10       else
11         @attackedcount = 2
12       end
13     when 2
14       warrior.pivot!
15       @attackedcount = 3
16     when 3
17       if warrior.look[0].enemy? or warrior.look[1].enemy? or warrior.look[2].enemy?
18         warrior.shoot!
19       elsif warrior.feel.captive?
20         warrior.rescue!
21         @attackedcount = 4
22       else
23         warrior.walk!
24       end
25     when 4
26       warrior.pivot!
27       @attackedcount = 5
28     when 5
29       if warrior.feel.captive?
30         warrior.rescue!
31       else
32         warrior.walk!
33       end
34     end
35   end
36 end

中级篇(intermediate),地图变2维的了,

当然要素也大大丰富,敬请期待... :)

转载于:https://www.cnblogs.com/fancylear/p/3672222.html

根本停不下来其一!通过打游戏来学习Ruby语言 -- Ruby Warrior -- 初级篇相关推荐

  1. 从游戏中学习产品设计2:消费篇

    上一期,我们介绍了游戏中的诱导充值套路,没有看的朋友可点击 从游戏中学习产品设计1:充值篇!了解游戏中是如何引诱玩家充值的,今天我们来聊一聊游戏中的消费套路,上文介绍了游戏中的三类货币:金币,钱币和时 ...

  2. 从游戏中学习产品设计1:充值篇

    游戏,是人类文明的最基本组成部分之一,已知的最古老的数字游戏,是早在公元前15世纪到公元前11世纪的计数游戏<宝石棋>,第一部记述游戏的历史书是3000多年前希罗多德编著的<历史&g ...

  3. 游戏逆向学习——易语言制作游戏输入性脚本之异星工厂

    今天没有来得及更新相关学习内容,下午抽空做了波及时更新,今天使用易语言制作了最新的异星工厂游戏输入性脚本,根据官方wiki的相关内容制作,如有侵权请联系我! 主要是用的是一个简单的dll指令:send ...

  4. 游戏图像学习入门到精通-Shader总结篇

    流水线 1.应用阶段:(CPU)输出渲染图元,粗粒度剔除等 比如完全不在相机范围内的需要剔除,文件系统的粒子系统实现就用到粗粒度剔除. 2.几何阶段:(GPU)把顶点坐标转换到屏幕空间,包含了模型空间 ...

  5. 如何下载c语言游戏,如何用C语言编写游戏.doc

    <如何用C语言编写游戏.doc>由会员分享,可在线阅读,更多相关<如何用C语言编写游戏.doc(71页珍藏版)>请在皮匠网上搜索. 1.如何用C语言编写游戏网络游戏是常谈的话题 ...

  6. 游戏服务端开发之基础概念扫盲篇

    13年毕业后,做了一年多外包web开发,因为受不了在客户现场工作的氛围,愤然辞职.转行做了一名手游服务端开发. 在广州,据我所知,选择java作为服务端开发语言的公司大概有37互娱,百田,银汉,易娱, ...

  7. Unity 创建2D平台游戏开发学习教程

    了解如何使用C#在Unity中创建您的第一款2D平台游戏 你会学到什么 使用Unity创建2D奥运会 使用可脚本化的对象和单一模式 使用良好的编程实践 创造武器和射弹 使用可脚本化的对象和委托模式创建 ...

  8. 面向完全初学者的Unity和C#游戏开发学习教程

    了解如何通过使用Unity游戏引擎和C#制作BomberMan风格的3D游戏来制作您的第一款视频游戏 你会学到: 使用Unity 2021学习3D游戏开发 通过制作你的第一个3D游戏来学习C#编程语言 ...

  9. Unity粒子系统创建VFX游戏特效学习教程 Visual Effects in Unity Particle Systems [Beginner’s Guide]

    在Unity中学习高级粒子系统和视觉效果创建.初级到中级 你会学到: 游戏的视觉效果 Unity粒子系统 Unity中的Vfx 创建Unity视觉效果的初级到中级指南 课程获取:Unity粒子系统创建 ...

最新文章

  1. windows7 端口查看以及杀死进程释放端口
  2. 【实验吧】CTF_Web_简单的SQL注入之1
  3. 4种分支机构服务器管理最佳实践—Vecloud微云
  4. IntelliJ IDEA 安装问题解决
  5. 国际计算机思维比赛,少儿编程领域中,你所不知道的国际计算思维大赛
  6. parentNode,parentElement,childNodes,children的区别
  7. Android Studio下载安装教程及开发环境搭建
  8. 持续定义Saas模式云数据仓库+实时分析
  9. 设置域用户登录主目录
  10. 默认文件夹为空,如何从Microsoft Edge下载收藏夹
  11. Vlc之vs2010版本的配置
  12. 【转】linux常用命令:find、grep
  13. nx编译安装车牌检测库hyperlpr
  14. Oracle数据库的安装及使用教程
  15. mysql嵌套查询方式
  16. 预加重/去加重/直流滤波
  17. MATLAB自带函数实现经验模态分解总结
  18. 【新年新气象_新年CSDN第一篇】斯特林数简介及应用
  19. 电脑定时执行的软件 - 定时执行专家
  20. 07-----给音视频文件添加字幕流

热门文章

  1. 1609_PC汇编语言_汇编简介以及first例程后续
  2. 攻防世界 Misc高手进阶区 - Hidden Write
  3. 大学生活 回味[搞笑]
  4. 2018双一流排名 计算机,2018中国双一流学科排名出炉,北京大学第一
  5. 中国富人爱“L”三大奢侈品牌 --
  6. (单片机/FPGA)LCD1602基础理论
  7. 电脑进不了windows系统,黑屏
  8. 讨论下计算机硬件未来的发展方向,下一代计算机硬件发展方向探讨
  9. Mqtt设置消息超时时间
  10. 计算物理学(数值分析)上机实验答案4、数值积分和数值微分