• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

BestofRubyQuiz-AnimalQuiz

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
可借鉴的东西一个是

curr = curr.process

用替换来生成树,因为从来没做过面向对象法建树,所以比较新鲜

再一个就是UI类的运用

 

 UI
    def self.say(str)
        print str + "\n"
    end
    
    def self.say_asking(str)
        UI.say str 
=~ /[\?\.]$/ ? str : str + "?"
    end

    def self.ask_if(str)
        UI.say_asking str
        
!((gets =~ /[Yy]/).nil?)
    end
    
    def self.ask(str)
        UI.say_asking str
        gets.chomp
    end
    
end

class Animal
    def initialize(name)
        @name 
= name
    end
    
    def ask
        UI.ask_if 
"Is it #{@name}"
    end
    
    def process
        
if ask
            UI.say 
"I win. Pretty smart, aren' t I?"
            self
        
else
            UI.say 
"You win. Help me learn from my mistake before you go"
            animal 
= UI.ask "What animal were you thinking of?"
            question 
= UI.ask "Give me a question to distinguish #{animal} from #{@name}."
            answer 
= UI.ask_if "For #{animal}, what is the answer to your question?"
            UI.say 
"Thanks"
            animal 
= Animal.new(animal)
            Question.
new(question,answer ? animal : self,!answer ? animal : self)
        end
    end
end

class Question
    def initialize(question,yes,no)
        @question 
= question
        @yes 
= yes
        @no 
= no
    end
    
    def ask
        UI.ask_if @question
    end
    
    def process
        
if ask
            @yes 
= @yes.process
        
else
            @no 
= @no.process
        end
        self
    end
    
end

curr 
= Animal.new("elephant")
loop 
do
    curr 
= curr.process
    
break unless UI.ask_if("Play again?")
end

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Ruby卷土重来,排名创新高发布时间:2022-07-14
下一篇:
ubuntu中Ruby开发集成环境发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap