ruby - 二十一点游戏的数据结构

标签 ruby data-structures blackjack

我正在尝试学习如何使用 Ruby,作为我的第一个应用程序,我想构建一个基于控制台的 Blackjack 游戏。

我对 Ruby 结构不太熟悉,我学习并感到宾至如归的唯一方法就是构建东西并从错误中学习。

我正在考虑创建一个 Card 类,并且有一个 Stack 类,其中包含一个 Card 集合。

但是我不知道需要使用什么内置类型来保存这些 Card 对象。

这是我的卡片类别:

class Card

  attr_accessor :number, :suit

  def initialize(number, suit)
    @number = number
    @suit = suit
  end

  def to_s
    "#{@number} of #{@suit}"
  end
end

由于我来自 C#,所以我想到使用类似 List Cards {get;set;} 的东西 - Ruby 中是否存在类似的东西,或者也许有更好的更 ruby 式的方法来做到这一点。

最佳答案

Ruby是一种动态语言,因此它通常不依赖于严格的编译时类型检查,从而进行构造,例如模板化List<Card>相当无用。 Ruby 通常具有一种通用的有序集合数据类型 - Array ,它非常模仿 ArrayList Java/C# 的概念。

所以,除非你想要Stack想要变得特别,你可以使用 Array原样:

@stack = []
@stack << Card.new(6, :spades)
@stack << Card.new(10, :hearts)

或扩展Array以某种方式:

class Stack < Array
  # some ultra-cool new methods
end

@stack = Stack.new
@stack << Card.new(...)

关于ruby - 二十一点游戏的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059931/

相关文章:

data-structures - 如何防止 Nil 将容器恢复为其默认值?

data-structures - Redis 中的复合键/二级索引策略

java - 双向多图等效数据结构

node.js - 为字母指定特定数字

python - 为什么在 OO 设置中迭代时无法删除列表元素?

ruby-on-rails - rails 、测试和固定装置 - 错误 "underlying cause no such file to load"

ruby-on-rails - 我可以在 render.js 上执行的 View 中使用 CoffeeScript 吗?

c++ - 字符数组的初始值设定项字符串太长错误

ruby - Jekyll 的 pretty-print html 输出

ruby - 使用 net/smtp 向多个收件人发送电子邮件