Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

I made a hangman program...

Name: Anonymous 2008-04-27 1:15

...with perl. I am so proud.

Name: Anonymous 2008-04-29 8:35

/prog/ sucks at perl today


#!/usr/bin/env perl
use strict;
use warnings;
use Carp;
use List::Util qw[first shuffle];
use File::Slurp;
use feature 'say';

my @files = ( $ARGV[1], 'words.list', '/usr/share/dict/words' );
my $dict = first { $_ && -e $_ } @files;
croak "Couldn't find a dict file" unless defined $dict;

my @words = map { lc } read_file $dict;
@words = shuffle @words;

say "Fucking hangman!";

thegame: foreach my $word (@words) {
  chomp $word;

  my $guesses     = 8;
  my $fails       = 0;
  my @underscores = (q[_]) x ( length $word );

  while ($guesses) {
    print join q[ ], @underscores;
    say q[ ] . q[|] x $fails;
    my $guess = lc <STDIN>;

    if ( $guess eq $word ) {
      say "Winnar!";
      next thegame;
    }

    $guess = substr $guess, 0, 1;
    say $guess;
    redo if $guess !~ /[a-z]/;

    my $found = 0;
    for my $i ( 0 .. $#underscores ) {
      if ( substr( $word, $i, 1 ) eq $guess ) {
        $underscores[$i] = $guess;
        $found = 1;
      }
    }
    $fails++ unless $found;

    if ( join( q[], @underscores ) eq $word ) {
      say "Winrar!\n$word";
      next thegame;
    }

    last if $fails == $guesses;
  }

  say "Fail\n$word";
}



Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List