`
piecehealth
  • 浏览: 47586 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby Warrior 答案

 
阅读更多
Ruby Warrior是一个用Ruby代码控制一个小人打怪升级刷装备的小游戏,可以帮助小伙伴们了解Ruby

传送门

最近正好有同事想了解一下Ruby,就推荐给他们这个小游戏,同时把我的答案也分享一下,大家可以交流一下更漂亮的写法。

# level 1
class Player
  def play_turn(warrior)
    warrior.walk!
  end
end

# level 2
class Player
  def play_turn(warrior)
    warrior.feel.empty? ? warrior.walk! : warrior.attack!
  end
end

# level 3
class Player
  def play_turn(warrior)
    if warrior.feel.empty? 
      warrior.health < 10 ? warrior.rest! : warrior.walk! 
    else
      warrior.attack!
    end
  end
end

# level 4
class Player
  def play_turn(warrior)
    @health ||= warrior.health
    if warrior.feel.empty? 
      warrior.health < 15 && @health <= warrior.health  ? warrior.rest! : warrior.walk! 
    else
      warrior.attack!
    end
    @health = warrior.health
  end
end

# level 5
class Player
  def play_turn(warrior)
    @health ||= warrior.health
    if warrior.feel.empty? 
      warrior.health < 15 && @health <= warrior.health  ? warrior.rest! : warrior.walk! 
    else
      warrior.feel.enemy? ? warrior.attack! : warrior.rescue!
    end
    @health = warrior.health
  end
end

# level 6
class Player
  def play_turn(warrior)
    @backward = true if @backward.nil?
    if @backward
      if warrior.feel(:backward).captive?
        @backward = false
        return warrior.rescue! :backward
      else
        return warrior.walk! :backward
      end
    end
    @health ||= warrior.health
    if warrior.feel.empty? 
      if warrior.health < 20 && @health <= warrior.health
        warrior.rest!
      else
        direction = warrior.health < 10 ? :backward : :forward
        warrior.walk! direction
      end
    else
      warrior.feel.enemy? ? warrior.attack! : warrior.rescue!
    end
    @health = warrior.health
  end
end

# level 7
class Player
  def play_turn(warrior)
    @health ||= warrior.health
    if warrior.feel.empty? 
      if warrior.health < 20 && @health <= warrior.health
        warrior.rest!
      else
        direction = warrior.health < 10 ? :backward : :forward
        warrior.walk! direction
      end
    else
      if warrior.feel.enemy?
        warrior.attack!
      elsif warrior.feel.wall?
        warrior.pivot!
      else   
         warrior.rescue!
      end
    end
    @health = warrior.health
  end
end

# level 8
class Player
  def play_turn(warrior)
    warrior.look.each do |space|
      break if space.captive?
      return warrior.shoot! if space.enemy?
    end
    warrior.feel.captive? ? warrior.rescue! : warrior.walk!
  end
end

# level 9
class Player
  
  def initialize
    @first_turn, @archer_dead, @melee = true, false, false
  end
  
  def archer_dead?; @archer_dead; end
  
  def play_turn(warrior)
    # Kill archer with hardcode
    if @first_turn
      @first_turn = false
      return warrior.pivot!
    end
    if !archer_dead?
      if warrior.feel.enemy?
        @melee = true
        return warrior.attack!
      else # feel.empty?
        if @melee
          @archer_dead = true
          return warrior.pivot!
        else
          return warrior.walk!
        end
      end
    end
    warrior.look.each do |space|
      break if space.captive?
      return warrior.shoot! if space.enemy?
    end
    if warrior.feel.captive?
      warrior.rescue!
    elsif warrior.feel.wall?
      warrior.pivot!
    else
      warrior.walk!
    end
  end
end
分享到:
评论

相关推荐

    Ruby人工智能交互游戏RubyWarrior.zip

    Ruby Warrior 是一个游戏,它能让 Ruby 语言和人工智能以一种很有意思的方式互动。你所扮演的是一个爬上高塔顶层获得 Ruby 宝石的战士。每到一层你都要写下 Ruby 脚本指导战士与敌人战斗,拯救俘虏,获取梯子。你在...

    codewarrior破解license

    codewarrior破解license

    CodeWarrior入门及使用教程

    CodeWarrior是一款强大的嵌入式开发工具,由飞思卡尔(现为恩智浦半导体)推出,主要用于微控制器和嵌入式系统的编程与调试。本教程将深入浅出地介绍CodeWarrior的基础知识,帮助初学者快速掌握其使用方法。 一、...

    codewarrior 5.1安装包

    1.IDE.exe是CodeWarrior v5.1 special的主程序,进行了图标替换 2.MyCodeWarriorComponent是一些调试时很有用的组件,v5.1所没有的组件在该目录下 3.license.dat是special版本授权文件,v4.6,v5.0,v5.1下都可以用 ...

    10.6版本的CodeWarrior 的使用手册_处理器专家系统_CodeWarrior_codewarrior调试_

    本手册详细介绍了利用Freescale CodeWarrior 10.6 IDE 处理器专家系统(Processor Expert)快速建立KEA工程和调试的步骤,以及该IDE常用的编程及调试技巧,旨在帮助用户快速熟悉和掌握CodeWarrior 10.6的使用,利用...

    codewarrior安装说明

    codewarrior安装需要许可文件,中间可能会遇到一些麻烦,此文件说明安装codewarrior后配置机器设置

    codewarrior 10.7 import legacy project.pdf

    标题《codewarrior 10.7 import legacy project.pdf》所涉及的知识点主要是关于在Eclipse集成开发环境(IDE)中使用基于Eclipse的CodeWarrior 10.x版本导入旧版本CodeWarrior开发的项目。文档主要针对的是基于Power ...

    codewarrior的LICENSE,不受限制。仅公学习用,如商业用后果自负。

    《CodeWarrior 开发环境许可协议详解》 CodeWarrior是一款由Metrowerks公司开发的集成开发环境(IDE),主要用于编写嵌入式系统、微控制器以及游戏开发等领域的程序。在使用CodeWarrior时,我们需要关注的一个重要...

    在NXP官网申请CodeWarrior 5.1 license流程

    在NXP官网申请CodeWarrior 5.1 License的过程涉及到一系列操作步骤,既需要操作者对NXP官网有一定的了解,也需要对CodeWarrior软件及其 License机制有一定的认识。下面,我们将详细介绍从注册邮箱、创建NXP账号到...

    codewarrior 创建工程方法

    视频介绍codewarrior 10.5创建工程的方法 后续上传资源包括codewarrior的烧写和debug,是以此为基础的。

    codewarrior 芯片烧写指南

    Codewarrior是Freescale公司推出的一款强大的软件开发工具,用于编写、调试和优化嵌入式应用软件。本文旨在提供关于如何使用Codewarrior软件对xs128芯片进行程序烧写的手册,以下知识点将围绕该主题展开。 ### 新...

    codewarrior 烧写文件方法,版本10.5.1

    codewarrior烧写文件方法

    CodeWarrior使用教程.rar

    CodeWarrior是一款强大的嵌入式开发工具,由Metrowerks公司开发,后被飞思卡尔(现为恩智浦半导体)收购。本教程将深入介绍如何使用CodeWarrior进行有效的编程和调试,帮助开发者更好地理解和掌握这款工具。 1. **...

    codewarrior使用教程

    ### CodeWarrior 使用教程知识点详解 #### 一、CodeWarrior 概述 - **功能简介**:CodeWarrior 是一款强大的集成开发环境(Integrated Development Environment, IDE),主要用于C/C++编程,同时也支持Java开发...

    warrior field operations manual

    ### Warrior Field Operations Manual知识点 #### 一、简介与版权信息 - **软件名称与版本**:Scientific Data Systems, Inc.发布的Warrior Software Version 7.0 - Standard Cased Hole Field Operations Manual...

    codewarrior使用指南

    ** Codewarrior 使用指南 ** Codewarrior是一款由NXP(原飞思卡尔)公司推出的集成开发环境(IDE),特别适用于8位和16位微控制器的编程,包括但不限于飞思卡尔的MCU系列,如DG128和XS128等。在智能车辆控制系统和...

    Codewarrior for HCS12 V4.6.rar

    《深入理解Codewarrior for HCS12 V4.6:飞思卡尔微控制器的仿真调试利器》 Codewarrior for HCS12 V4.6是一款专为飞思卡尔(现已被NXP半导体收购)HCS12系列微控制器设计的集成开发环境(IDE),它集成了编译器、...

    CodeWarrior5.1特别版

    CodeWarrior5.1特别版,适用于飞思卡尔s12系列芯片

Global site tag (gtag.js) - Google Analytics