Arrays Perl-用数值替换数组字符串
因此,作为学习perl的练习,我决定编写一个简单的21点游戏。我正在使用一个数组来计算卡的值。我希望能够将杰克牌、国王牌和王后牌包括在玩家牌列表中,但我也希望能够将这些牌添加到21张。第一个想法是我尝试使用一个变量,但这似乎不起作用 数组:Arrays Perl-用数值替换数组字符串,arrays,perl,Arrays,Perl,因此,作为学习perl的练习,我决定编写一个简单的21点游戏。我正在使用一个数组来计算卡的值。我希望能够将杰克牌、国王牌和王后牌包括在玩家牌列表中,但我也希望能够将这些牌添加到21张。第一个想法是我尝试使用一个变量,但这似乎不起作用 数组:@cards=(1,2,3,4,5,6,7,8,9,10,$ace='ace',$jack='jack',$queen='queen',$king='king')#注:Ace为11或1 sub PrintPlayersCards { $play
@cards=(1,2,3,4,5,6,7,8,9,10,$ace='ace',$jack='jack',$queen='queen',$king='king')#注:Ace为11或1
sub PrintPlayersCards
{
$playerTotal = 0;
print "PLAYERS CARDS:@playerCurCards\n";
@cards[$jack] = 10;
@cards[$queen] = 10;
@cards[$king] = 10;
grep {$playerTotal += $_} @playerCurCards;
print "Your total is :$playerTotal\n";
@cards[$king] = "King";
@cards[$queen] = "queen";
@cards[$jack] = "jack";
}
@playerCurCards是存储玩家卡的数组。例如:从一开始就有3个,从一次打击开始就有国王等等。您可以将其存储在散列中:
#!/usr/bin/perl
use strict;
use warnings;
my %cards = ('1'=> '1',
'2' => '2',
'3' => '3',
'4' => '4',
'5' => '5',
'6' => '6',
'7' => '7',
'8' => '8',
'9' => '9',
'10' => '10',
'jack' => '10',
'king' => '10',
'queen' => '10',
);
sub PrintPlayersCards {
my $playerTotal = 0;
my @hand = @_;
print "PLAYERS CARD:\n";
print "\t$_\n" foreach @hand;
grep {$playerTotal += $cards{$_}} @hand;
print "Your total is: $playerTotal\n";
}
#this is just to test it
my @playerCurCards = ('1', 'queen', 'king');
PrintPlayersCards(@playerCurCards);
$ace='ace'
和其他类似的方法不会转换为您正在做的事情。为什么不使用$ace put'ace'或11代替呢?@cards[…]也不正确,它应该是$cards[…]对于每张卡,您至少要存储两条信息:卡名及其数值。这需要比简单数组更强大的功能。可能是散列,卡片名称作为散列键,数值作为散列键。还有其他选择,但如果您只是在学习的话,这是一个开始?你似乎只是在猜测什么可能有效。