正如标题所述,在面对扑克牌时,我在纸牌游戏战争计划中遇到麻烦。我有什么目前:试图在Matlab中模拟纸牌游戏War。当两张牌互相打牌时,数字牌可以正常工作,但是牌面牌不会
card_nums = ('23456789TJQKA')';
card_suits = ('HDSC')';
unshuffled_deck = [repmat(card_nums,4,1),repmat(card_suits,13,1)];
disp(unshuffled_deck)
fprintf('\n')
shuffled_deck = unshuffled_deck(randperm(size(unshuffled_deck,1)),:);
disp(shuffled_deck)
fprintf('\n')
player1_hand = shuffled_deck(1:26, 1:2);
disp(player1_hand)
fprintf('\n')
player2_hand = shuffled_deck(27:52, 1:2);
disp(player2_hand)
fprintf('\n')
T = 10;
J = 11;
Q = 12;
K = 13;
A = 14;
if shuffled_deck(1, 1) > shuffled_deck(27, 1)
fprintf('Player 1 wins \n')
elseif shuffled_deck(1, 1) < shuffled_deck(27, 1)
fprintf('Player 2 wins \n')
else
fprintf('It is a tie.')
end
一切正常,但出牌,创建和洗牌甲板蛮好的,完全显示每个卡。当谈到实际比较卡片时,它将大部分工作。两张牌相互对立,如8和6?它将完美地工作。然而,当面卡被引入混合时,它不能很好地工作。最大的罪魁祸首似乎是Ace,不管我做什么,如果一个Ace,并且假设一个10对抗海誓山盟,该程序将与10.一起。我不是很确定如何解决这个问题,但如此多只是指出我在正确的方向将是非常有益的,谢谢!
好吧,所以我试图重新创建与您发布的代码和它的工作原理,但它并没有洗牌。我使用了和以前一样的randperm函数,它不会洗牌。有什么想法吗? –
啊,对不起。我忘了你正在使用'randperm'。你可以用'A = repmat(2:14,[1,4])代表甲板,并用'B = A(randperm(length(A)))'将其打乱。 – btmcnellis
工作,谢谢!我会试着重新编写这个套牌的代码,因为它似乎比处理西装和面子牌要麻烦的多,我的教授没有指定任何一种方式,所以我确信它会没事的。 –