栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

可以帮助您入门的东西

您可以使用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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449384.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号