1
私はRailsを初めて使っているので、質問のタイトルを謝っています。どのようにフレーズがあるのかわかりませんでした。それを自由に変更してください。私はすべてのプレイヤーにランダムなカードを対処しようとすると、すべてのカードはシングルプレイヤーで終わるRails 3.1:すべてのデットカードが1人のプレーヤーに結ばれるのはなぜですか?
class Game < ActiveRecord::Base
has_many :players, :dependent => :destroy
has_many :community_cards, :class_name => "Card", :dependent => :destroy, :conditions => { :is_community_card => true }
has_many :used_cards, :class_name => "Card", :dependent => :destroy, :conditions => { :is_community_card => false }
attr_accessible :pot, :name, :status
class Player < ActiveRecord::Base
belongs_to :game
has_many :cards, :dependent => :destroy
attr_accessible :chip_count, :position, :fb_id
end
class Card < ActiveRecord::Base
belongs_to :player
belongs_to :game
attr_accessible :face, :suit, :is_community_card
end
...私はレールを学ぶためにポーカーゲームを構築していると私は、次の関連付けを持っています.. 。
def deal_players_hole_cards
players.all.each do |p|
if(p.cards.count < 2)
first_card = deal_card()
second_card = deal_card()
p.cards << first_card
p.cards << second_card
end
end
end
ここで取引カード方式だ...
def deal_card
card_was_found = false
while(!card_was_found) do
card_was_found = true
random_suit = (0..3).to_a.sample
random_face = (1..13).to_a.sample
used_cards.all.each do |used_card|
if(random_suit == used_card.suit and random_face == used_card.face)
card_was_found = false
end
end
end
new_card = Card.create(:suit => random_suit, :face => random_face, :is_community_card => false)
used_cards << new_card
end
は2人の選手がありますし、各プレイヤーはカードを2枚持っていなければならないが、その代わりに、一人のプレイヤーは、すべての4枚のカード...
01を持っていますruby-1.9.2-p290 :001 > Game.last.players.last.cards.count
Game Load (0.1ms) SELECT "games".* FROM "games" ORDER BY "games"."id" DESC LIMIT 1
Player Load (0.1ms) SELECT "players".* FROM "players" WHERE "players"."game_id" = 2 ORDER BY "players"."id" DESC LIMIT 1
(0.2ms) SELECT COUNT(*) FROM "cards" WHERE "cards"."player_id" = 6
=> 4
ruby-1.9.2-p290 :002 > Game.last.players.first.cards.count
Game Load (0.4ms) SELECT "games".* FROM "games" ORDER BY "games"."id" DESC LIMIT 1
Player Load (0.3ms) SELECT "players".* FROM "players" WHERE "players"."game_id" = 2 LIMIT 1
(0.2ms) SELECT COUNT(*) FROM "cards" WHERE "cards"."player_id" = 5
=> 0
すべてのあなたの知恵のためにあまり前もってありがとう!
deal_cardメソッドも含めることができますか? – mynameiscoffey
'deal_card'についてはわかりません。さらに、あなたが私たちに示すコードは良いと思われ、私はそれに間違いは見られません。たぶんエラーはどこか他の場所ですか? – Cydonia7
が取引カード方式で更新されました。私もゲームモデルを追加しました。両方のメソッド、deal_players_hole_cardsとdeal_cardはゲームモデルのメンバーです。あなたの助けをありがとう、すべて! – BeachRunnerFred