Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    154

    [Perl] errore di sintassi

    Quando eseguo questo codice:
    Codice PHP:
    #! /usr/bin/perl
    print "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tFIND THE QUEEN\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\tCreated by PAOLO DI LEO\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor the APPLE I\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\tPerl ported by Elia Cereda\n";
    print 
    "\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t1 - PLAY THE GAME\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t2 - EXIT\n";
    print 
    "\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\tWHAT IS YOUR CHOICE? \n";
    $a = <>;
    if (
    $a=2){ 
    print 
    "BYE BYE\n";
    exit;
    }

    sub start () {
    if (
    $k <= 0) {
    print 
    "\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\tWHAT IS YOUR CASH? \$";
    $k = <>;
    print 
    "\n";
    }
    print 
    "\t\t\t\t\t\t\t\t\t\t\tHOW MUCH DO YOU\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\tWANT TO BET? \$";
    $b = <>;
    print 
    "\n";
    if (
    $k=|| $k<0) { no_more();}
    if (
    $b>$k) { no_suff();}

    $q rand(3);

    print 
    "\t\t\t\t\t\t\t\t\t\t\t+---+ +---+ +---+\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t!   ! !   ! !   !\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t!   ! !   ! !   !\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t! 1 ! ! 2 ! ! 3 !\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t!   ! !   ! !   !\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t!   ! !   ! !   !\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\t+---+ +---+ +---+\n";
    print 
    "\n";
    print 
    "\n";
    print 
    "\t\t\t\t\t\t\t\t\t\t\tFIND THE QUEEN,PICK A CARD 1,2 OR 3? ";
    $a = <>;
    print 
    "\n";
    }

    you_pick ($a$q);

    sub you_pick ($scelta$queen) {

    if (
    $scelta == $queen) {
    print 
    "\t\t\t\t\t\t\t\t\t\t\tYOU WON \$"$b"!\n";
    $k += $b;
    } else {
    print 
    "\t\t\t\t\t\t\t\t\t\t\tYOU LOST \$"$b"!\n";
    $k -= $b;
    }
    print 
    the_queen ($q);
    print 
    "YOUR CASH IS NOW \$"$k"\n";
    print 
    "PLAY AGAIN? (Y/N) ";
    $b = <>;
    print 
    "\n";
    if (
    $b == "Y") {
    start();
    } else {
    print 
    "BYE BYE";
    exit;
    }

    sub the_queen($queen) {
    $ret "THE CARDS ARE\n";
    $ret .= "\n";
    $ret .= "+---+ +---+ +---+\n";
    $ret .= "!   ! !   ! !   !\n";
    $ret .= "!   ! !   ! !   !\n";
    if (
    $queen == 1) {
    $ret .= "! Q ! ! 2 ! ! 3 !\n";
    elsif ($queen == 2) {
    $ret .= "! 1 ! ! Q ! ! 3 !\n";
    elsif ($queen == 3) {
    $ret .= "! 1 ! ! 2 ! ! Q !\n";
    }
    $ret .= "!   ! !   ! !   !\n";
    $ret .= "!   ! !   ! !   !\n";
    $ret .= "+---+ +---+ +---+\n";
    $ret .= "\n";
    return 
    $ret;

    sub no_suff () {
    print 
    "YOU HAVE ONLY \$"$k "!\n";
    print 
    "\n";
    start();

    sub no_more () {
    print 
    "YOU HAVE NO MORE MONEY !!!";
    print 
    "PLAY AGAIN (Y/ N)";
    $b = <>;
    print 
    "\n";
    if (
    $b == "Y") { 
    start();
    }
    print 
    "BYE BYE"
    mi viene stampato:

    codice:
    Missing right curly or square bracket at 3Carte.pl line 102, at end of line
    syntax error at 3Carte.pl line 102, at EOF
    Execution of 3Carte.pl aborted due to compilation errors.
     at 3Carte.pl line 102
    Qualcuno sa come risolvere?

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    268
    mancano 4 "}" di chiusura. Bisognerebbe sapere però dove le devi mettere!!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    154
    Perché quando lo eseguo arriva al punto "PLAY AGAIN? (Y/N)" e qualunque sia la risposta mi continua il programma? Subito prima dovrebbe eseguire la subroutine "the_queen", ma la salta completamente, perché? e poi perché vinco sempre?

    edit: che sbadato, ho dimenticato di postare il codice modificato:

    Codice PHP:
    #! /usr/bin/perl
    $a "";
    $b "";
    $k "";
    $q "";
    $scelta "";
    $queen "";
    print 
    "FIND THE QUEEN\n"
    print 
    "Created by PAOLO DI LEO\n"
    print 
    "for the APPLE I\n"
    print 
    "Perl ported by Elia Cereda\n"
    print 
    "\n"
    print 
    "1 - PLAY THE GAME\n"
    print 
    "2 - EXIT\n"
    print 
    "\n"
    print 
    "WHAT IS YOUR CHOICE? "
    $a = <>; 
    if (
    $a == "2"){ 
    print 
    "BYE BYE\n"
    exit; 
    }
    start();

    sub start() { 
    if (
    $k <= 0) { 
    print 
    "\n"
    print 
    "WHAT IS YOUR CASH? \$"
    $k = <>; 
    print 
    "\n"

    print 
    "HOW MUCH DO YOU\n"
    print 
    "WANT TO BET? \$"
    $b = <>; 
    print 
    "\n"
    if (
    $k == || $k 0) { no_more();} 
    if (
    $b $k) { no_suff();} 

    $q rand(3); 

    print 
    "+---+ +---+ +---+\n"
    print 
    "!___! !___! !___!\n"
    print 
    "!___! !___! !___!\n"
    print 
    "! 1 ! ! 2 ! ! 3 !\n"
    print 
    "!___! !___! !___!\n"
    print 
    "!___! !___! !___!\n"
    print 
    "+---+ +---+ +---+\n"
    print 
    "\n"
    print 
    "\n"
    print 
    "FIND THE QUEEN,PICK A CARD 1,2 OR 3? "
    $a = <>; 
    print 
    "\n"
    you_pick($a$q); 
    }

    sub you_pick($scelta$queen) { 
    if (
    $scelta == $queen) { 
    print 
    "YOU WON \$"$b"!\n"
    $k += $b
    } else { 
    print 
    "YOU LOST \$"$b"!\n"
    $k -= $b

    print 
    the_queen ($q); 
    print 
    "YOUR CASH IS NOW \$"$k"\n"
    print 
    "PLAY AGAIN? (Y/N) "
    $b = <>; 
    print 
    "\n"
    if (
    $b == "Y") { 
    start(); 
    elsif ($b == "N") { 
    print 
    "BYE BYE"
    exit; 
    }
    }
    sub the_queen($queen) { 
    print 
    "THE CARDS ARE\n"
    print 
    "\n"
    print 
    "+---+ +---+ +---+\n"
    print 
    "!___! !___! !___!\n"
    print 
    "!___! !___! !___!\n"
    if (
    $queen == 1) { 
    print 
    "! Q ! ! 2 ! ! 3 !\n"
    elsif ($queen == 2) { 
    print 
    "! 1 ! ! Q ! ! 3 !\n"
    elsif ($queen == 3) { 
    print 
    "! 1 ! ! 2 ! ! Q !\n"

    print 
    "!___! !___! !___!\n"
    print 
    "!___! !___! !___!\n"
    print 
    "+---+ +---+ +---+\n"
    print 
    "\n"
    }

    sub no_suff () { 
    print 
    "YOU HAVE ONLY \$"$k "!\n"
    print 
    "\n"
    start();
    }

    sub no_more () { 
    print 
    "YOU HAVE NO MORE MONEY !!!"
    print 
    "PLAY AGAIN (Y/ N)"
    $b = <>; 
    print 
    "\n"
    if (
    $b == "Y") { 
    start(); 

    }
    print 
    "BYE BYE"

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    268
    se nella sub start definisci $a e $q non devi trasmetterle alla sub you_pick($a, $q) ma semplicemente le usi. Nel tuo caso $scelta, $queen sono vuote quindi rispettano sempre la condizione!

    Chiama le sub con & e usa le variabili che hai già impostato. es (ho messo l'INT davanti a $q altrimenti non va):
    Codice PHP:
    sub start
    {
    if (
    $k <= 0) {
    print 
    "\n";
    print 
    "WHAT IS YOUR CASH? \$";
    $k = <>;
    print 
    "\n";
    }
    print 
    "HOW MUCH DO YOU\n";
    print 
    "WANT TO BET? \$";
    $b = <>;
    print 
    "\n";
    if (
    $k == || $k 0) { no_more();}
    if (
    $b $k) { &no_suff;}

    $q rand(3);

    print 
    "+---+ +---+ +---+\n";
    print 
    "!___! !___! !___!\n";
    print 
    "!___! !___! !___!\n";
    print 
    "! 1 ! ! 2 ! ! 3 !\n";
    print 
    "!___! !___! !___!\n";
    print 
    "!___! !___! !___!\n";
    print 
    "+---+ +---+ +---+\n";
    print 
    "\n";
    print 
    "\n";
    print 
    "FIND THE QUEEN,PICK A CARD 1,2 OR 3? ";
    $a = <>;
    print 
    "\n";
    &
    you_pick;
    }

    sub start
    {
    if (
    $k <= 0) {
    print 
    "\n";
    print 
    "WHAT IS YOUR CASH? \$";
    $k = <>;
    print 
    "\n";
    }
    print 
    "HOW MUCH DO YOU\n";
    print 
    "WANT TO BET? \$";
    $b = <>;
    print 
    "\n";
    if (
    $k == || $k 0) { no_more();}
    if (
    $b $k) { &no_suff;}

    $q =intrand(3));

    print 
    "+---+ +---+ +---+\n";
    print 
    "!___! !___! !___!\n";
    print 
    "!___! !___! !___!\n";
    print 
    "! 1 ! ! 2 ! ! 3 !\n";
    print 
    "!___! !___! !___!\n";
    print 
    "!___! !___! !___!\n";
    print 
    "+---+ +---+ +---+\n";
    print 
    "\n";
    print 
    "\n";
    print 
    "FIND THE QUEEN,PICK A CARD 1,2 OR 3? ";
    $a = <>;
    print 
    "\n";
    &
    you_pick;
    }

    sub you_pick {
    if (
    $a == $q) {
    print 
    "YOU WON \$"$b"!\n";
    $k += $b;
    } else {
    print 
    "YOU LOST \$"$b"!\n";
    $k -= $b;
    }
    print 
    the_queen ($q);
    print 
    "YOUR CASH IS NOW \$"$k"\n";
    print 
    "PLAY AGAIN? (Y/N) ";
    $b = <>;
    print 
    "\n";
    if (
    $b == "Y") {
    &
    start;
    elsif ($b == "N") {
    print 
    "BYE BYE";
    exit;
    }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.