编程技巧:如何创建简单的纸牌游戏

编程技巧:如何创建简单的纸牌游戏,第1张

编程技巧:如何创建简单的纸牌游戏 可以帮助您入门的东西

您可以使用0到51之间的数字来轻松确保唯一的卡。

Array#shuffle
方法基于Knuth-Fisher-
Yates混洗算法。http://en.wikipedia.org/wiki/Fisher–Yates_shuffle

class Card  RANKS = %w(2 3 4 5 6 7 8 9 10 J Q K A)  SUITS = %w(Spade Heart Club Diamond)  attr_accessor :rank, :suit  def initialize(id)    self.rank = RANKS[id % 13]    self.suit = SUITS[id % 4]  endendclass Deck  attr_accessor :cards  def initialize    # shuffle array and init each Card    self.cards = (0..51).to_a.shuffle.collect { |id| Card.new(id) }  endend# people with Ruby 1.9 (or 1.8.7 with backports) can safely ignore this duck punchclass Array  # knuth-fisher-yates shuffle algorithm  def shuffle!    n = length    for i in 0...n      r = rand(n-i)+i      self[r], self[i] = self[i], self[r]    end    self  end  def shuffle    dup.shuffle!  endend
测试
d = Deck.newd.cards.each do |card|  puts "#{card.rank} #{card.suit}"end
输出
6 Spade5 Heart2 Heart8 Heart8 Diamond7 ClubJ Diamond4 ClubK Spade5 DiamondJ Heart8 Spade10 Club4 Diamond9 Heart7 Diamond3 DiamondK Diamond7 SpadeQ Diamond9 Diamond6 HeartA Heart9 ClubA Spade5 ClubJ ClubQ Spade2 Club2 SpadeQ HeartA Diamond10 Spade10 DiamondQ Club3 ClubA ClubK Club6 Club10 Heart2 Diamond3 SpadeK Heart5 Spade9 Spade7 Heart4 SpadeJ Spade3 Heart4 Heart8 Club6 Diamond


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5175477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存