Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays Perl-用数值替换数组字符串_Arrays_Perl - Fatal编程技术网

Arrays Perl-用数值替换数组字符串

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

因此,作为学习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
{
    $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[…]对于每张卡,您至少要存储两条信息:卡名及其数值。这需要比简单数组更强大的功能。可能是散列,卡片名称作为散列键,数值作为散列键。还有其他选择,但如果您只是在学习的话,这是一个开始?你似乎只是在猜测什么可能有效。