Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: GUI > Виселица на Perl


Автор: vinograd2008 13.7.2010, 22:31
Здравствуйте есть код программы. Пожалуйста помогите изменить код программы так, чтобы нарисованный человек из массива hangman, т.е. $hangman="0-|--<" отображался вертикально, а не горизонтально, т.е. наоборот. Как это сделать?

Код


#!/usr/bin/perl

@words=qw( программа интернет принтер компьютер);
$guesses[0]="";
$wrong=0;

$choice=$words[rand @words];
$hangman="0-|--<";

@letters=split(//, $choice);
@hangman=split(//, $hangman);
@blankword=(0) x scalar(@hangman);
OUTER: 
    while ($wrong<@hangman) {
        foreach $i (0..$#letters) {
                if ($blankword[$i]) {
                        print $blankword[$i];
                } else {
                        print "-";
                }
        }
        print "\n";
        if ($wrong) {
                print @hangman[0..$wrong-1]
        }
        print "\n Ваш выбор: ";
        $guess=<STDIN>;  chomp $guess;
        foreach(@guesses) {
                next OUTER if ($_ eq $guess);
        }
        $guesses[$#guesses]=$guess;
        $right=0;
        for ($i=0; $i<@letters; $i++) {
                if ($letters[$i] eq $guess) {
                        $blankword[$i]=$guess;
                        $right=1;
                }
        }
        $wrong++ unless($right);
        if (join('', @blankword) eq $choice) {
                print "Вы выйграли!\n";
                 exit;
        }
}
print "$hangman\n Было загадано слово  $choice.\n";


Автор: OutlawZ 15.7.2010, 16:57
хм...это случаем не программа из книги Perl за 24 часа?????

Автор: MaXL 17.7.2010, 17:45
Это вам чтоле нужно  smile ?
Код

#!/usr/bin/perl
@words=qw( программа интернет принтер компьютер);
$guesses[0]="";
$wrong=0;
$choice=$words[rand @words];
$hangman=" 0\n |\n -\n |\n |\n/ \\";
@letters=split(//, $choice);
@hangman=split(//, $hangman);
@blankword=(0) x scalar(@hangman);
OUTER: 
    while ($wrong<@hangman) {
        foreach $i (0..$#letters) {
                if ($blankword[$i]) {
                        print $blankword[$i];
                } else {
                        print "-";
                }
        }
        print "\n";
        if ($wrong) {
                print @hangman[0..$wrong-1]
        }
        print "\n Ваш выбор: ";
        $guess=<STDIN>;  chomp $guess;
        foreach(@guesses) {
                next OUTER if ($_ eq $guess);
        }
        $guesses[$#guesses]=$guess;
        $right=0;
        for ($i=0; $i<@letters; $i++) {
                if ($letters[$i] eq $guess) {
                        $blankword[$i]=$guess;
                        $right=1;
                }
        }
        $wrong++ unless($right);
        if (join('', @blankword) eq $choice) {
                print "Вы выйграли!\n";
                 exit;
        }
}
print "$hangman\n Было загадано слово  $choice.\n";

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)