• ベストアンサー

Perl/CGIでスロットマシンを作っているのですが・・・

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; } }

質問者が選んだベストアンサー

  • ベストアンサー
  • kt_yuka
  • ベストアンサー率53% (8/15)
回答No.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; ---------------------------------------------------- とりあえずこれで動く? 動きがおかしいのは考えてね。

kwalkurei
質問者

お礼

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

その他の回答 (1)

回答No.1

ぱっと見は以下の2点ですね。 > if ($FORM{'bet'} = $bet) { if ($FORM{'bet'} == $bet) { > elsif ($FORM{'go'} = $go) { elsif ($FORM{'go'} == $go) {

kwalkurei
質問者

補足

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

関連するQ&A