dポイントプレゼントキャンペーン実施中!

Perl/CGIで簡単なスロットマシンを作成しています。
一通りスクリプトは組んだのですが、うまく動作しません。

以下が自分で作成したスクリプトです。どこが不味いのか分からないので、間違えている箇所を教えてください。お願いします。

#!/usr/bin/perl
$l = 1;
require '/usr/perl5/site_perl/jcode.pl';
&decode;

$bet = $FORM{'bet'};
$go = $FORM{'go'};

$coin = 50;
if ($FORM{'bet'} = $bet) {
$coin = --$coin;
$bet = ++1;
}

elsif ($FORM{'go'} = $go) {
@item=("7","BAR","BAR","@","@","@","-","-","-","-");
$a = $item[int(rand(10))];
$b = $item[int(rand(10))];
$c = $item[int(rand(10))];

if($a==$b||$b==$c) {
if ($a == 7) {$coin = $coin + $bet * 50;}
elsif ($a == BAR) {$coin = $coin + $bet * 10;}
elsif ($a == @) {$coin = $coin + $bet * 5;}
else {$coin = $coin + $bet * 2;}
}
}

else {$coin = 0;}

print<<EOF
Content-type: text/html

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=euc-jp">
<title>スロットマシン</title>
</head>
<body>
<form method="GET" action="kadai2b.cgi">
<center>
コインの所持枚数 ($coin) 賭けるコインの枚数 ($bet)<br>
[$a] [$b] [$c]<br>
<input type="hidden" name="coin" value="$coin">
<input type="submit" name="bet" value="BET">
<input type="submit" name="go" value="GO">
<input type="reset" name="quit" value="QUIT">
<center>
</form>
</body>
</html>
EOF

sub decode {
$ENV{'REQUEST_METHOD'} =~ tr/A-Z/a-z/;
if ($ENV{'REQUEST_METHOD'} eq "post"){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}
else {
$buffer = $ENV{'QUERY_STRING'};
}

@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode::convert(*value, 'euc');
$FORM{$name} = $value;
}
}

A 回答 (2件)

何かの課題ですか?


丸投げって・・・。
でも暇だったのでちょっと追ってみました。
----------------------------------------------------
$coin = --$coin;
$bet = ++1;

$coin -= 1;
$bet += 1;
----------------------------------------------------
if($a==$b||$b==$c) {
if ($a == 7) {$coin = $coin + $bet * 50;}
elsif ($a == BAR) {$coin = $coin + $bet * 10;}
elsif ($a == @) {$coin = $coin + $bet * 5;}
else {$coin = $coin + $bet * 2;}
}

if($a eq $b||$b eq $c) {
if ($a eq '7') {$coin = $coin + $bet * 50;}
elsif ($a eq 'BAR') {$coin = $coin + $bet * 10;}
elsif ($a eq '@') {$coin = $coin + $bet * 5;}
else {$coin = $coin + $bet * 2;}
}
----------------------------------------------------
print<<EOF

print<<EOF;
----------------------------------------------------

とりあえずこれで動く?
動きがおかしいのは考えてね。
    • good
    • 0
この回答へのお礼

回答有難うございました。動作はするようになりました。
まだ思うように動かない箇所は見直してみます。

お礼日時:2009/06/19 23:45

ぱっと見は以下の2点ですね。



> if ($FORM{'bet'} = $bet) {

if ($FORM{'bet'} == $bet) {

> elsif ($FORM{'go'} = $go) {

elsif ($FORM{'go'} == $go) {

この回答への補足

回答有難うございます。
書いてある通りに修正してみましたが、まだ動作しませんでした。。。

補足日時:2009/06/09 11:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!