#!/usr/bin/env perl6-in-docker.sh use v6; use lib '/perl6'; use Blackjack::Card; use Blackjack::Hand; use Blackjack::Deck; my $TTY = open("/dev/tty"); my $deck = Blackjack::Deck.new; my $total = 0; while ( 1 ) { my $dealer = Blackjack::Hand.new( name => "Dealer" ); my $player = Blackjack::Hand.new( name => "Player" ); $player.draw( $deck.pick ); $player.draw( $deck.pick ); $dealer.draw( $deck.pick ); say "$dealer"; $dealer.draw( $deck.pick ); while !$player.is_busted { say "$player"; my $in = prompt-char("Your move (h/s/q):"); say ""; given ( $in ) { when 'q' { exit( 0 ); } when 's' { last; } when 'h' { $player.draw( $deck.pick ); } } } while !$player.is_busted and !$dealer.is_busted and $dealer.values < 17 { say "$dealer"; $dealer.draw( $deck.pick ); } say "$player"; say "$dealer"; my $score = $player.score( $dealer ); $total += $score; say "Score: $score"; say "Total: $total\n\n"; } sub prompt-char($prompt) { ENTER shell "stty raw -echo min 1"; LEAVE shell "stty sane"; print $prompt; my $in = $TTY.read(1).decode; say "\r"; return $in; }