heatblazer has asked for the wisdom of the Perl Monks concerning the following question:
Hello all, monks.
I was playing with Perl, trying to get a poker game, or a game of any origin with cards probably doing some coding, but I`ve encountered a bizzare problem . Here is some code and I`ll add in later the problem.
Looks like I`ve managed to get it work fine for now
View the screenshoto#!/usr/bin/perl use strict; use utf8; use warnings; ########## S U B R O U T I N E S ######################## #deck creator using a really simpla algorithm #DECK MAKER sub deck_maker { my @deck = (); #the deck for returning my @types = ('spades', 'hearts', 'diamonds', 'clubs'); my @cards = ( [2,3,4,5,6,7,8,9,10,'J','Q','K','A'], [2,3,4,5,6,7,8,9,10,'J','Q','K','A'], [2,3,4,5,6,7,8,9,10,'J','Q','K','A'], [2,3,4,5,6,7,8,9,10,'J','Q','K','A'] ); for ( my $i=0; $i < 4; $i++) { for ( my $j=0; $j < 13; $j++) { #pops an element from array my $newcard = pop($cards[$i]) . " of " . $types[$i]; push(@deck, $newcard); } } return @deck; #return the new deck } #SWAP sub swap_two { #really simple swap ($_[0], $_[1]) = ($_[1], $_[0]); } #SHUFFLE sub shuffle { #simple shuffling algorithm #there are 52 cards always but $#shuffle+1 can be used too... it`s + useless #unless there are people that don`t know there are 52 cards in tot +al. for (my $i=0; $i < 52; $i++) { my $card1 = int rand(52); my $card2 = int rand(52/2); &swap_two($_[$card1], $_[$card2]); } my (@cut1) = @_[0..($#$_+1)/2]; my (@cut2) = @_[($#$_+1)/2..$#$_+1]; push(@_ , @cut2); push(@_, @cut1); } #PICK A CARD sub pick_a_card { my $deck = shift; return pop @$deck; } sub show_my_hand { print "~~"x40,"\n"; foreach my $cards (@_) { print "[", $cards, "]"; } print "\n", "~~"x40,"\n"; } ################################################# # THE GAME STARTS BELOW ############################ ################################################ # init the deck and shuffle it my @deck = &deck_maker; &shuffle(@deck); # end of deck manipulations my (@hand) = (); push (@hand, &pick_a_card(\@deck)); push (@hand, &pick_a_card(\@deck)); push (@hand, &pick_a_card(\@deck)); push (@hand, &pick_a_card(\@deck)); push (@hand, &pick_a_card(\@deck)); &show_my_hand(@hand); #game loop here
Since the problem is solved, are there any free time monks who wish to make a simple poker game with some Tk or SDL for minimal gui???
Here is a simple output to my code:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~ [K of diamonds][10 of clubs][4 of clubs][5 of clubs][6 of clubs] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~ **************************************** Deck No. 0 has 6 of spades Deck No. 1 has 8 of spades Deck No. 2 has J of hearts Deck No. 3 has Q of spades Deck No. 4 has 7 of spades Deck No. 5 has 9 of diamonds Deck No. 6 has 3 of clubs Deck No. 7 has 2 of clubs Deck No. 8 has A of clubs Deck No. 9 has 5 of spades Deck No. 10 has 2 of diamonds Deck No. 11 has 8 of clubs Deck No. 12 has 9 of spades Deck No. 13 has 10 of spades Deck No. 14 has 6 of hearts Deck No. 15 has 4 of spades Deck No. 16 has 2 of spades Deck No. 17 has 8 of hearts Deck No. 18 has A of hearts Deck No. 19 has 4 of diamonds Deck No. 20 has 9 of hearts Deck No. 21 has 7 of diamonds Deck No. 22 has J of clubs Deck No. 23 has 10 of hearts Deck No. 24 has A of spades Deck No. 25 has 2 of hearts Deck No. 26 has A of diamonds Deck No. 27 has K of hearts Deck No. 28 has Q of diamonds Deck No. 29 has J of diamonds Deck No. 30 has 10 of diamonds Deck No. 31 has Q of clubs Deck No. 32 has 8 of diamonds Deck No. 33 has K of spades Deck No. 34 has 6 of diamonds Deck No. 35 has 5 of diamonds Deck No. 36 has 4 of hearts Deck No. 37 has 3 of diamonds Deck No. 38 has J of spades Deck No. 39 has 7 of hearts Deck No. 40 has K of clubs Deck No. 41 has 5 of hearts Deck No. 42 has Q of hearts Deck No. 43 has 3 of hearts Deck No. 44 has 9 of clubs Deck No. 45 has 3 of spades Deck No. 46 has 7 of clubs
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: What I am missing here
by Riales (Hermit) on Mar 20, 2012 at 20:01 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 05:31 UTC | |
by Riales (Hermit) on Mar 21, 2012 at 17:33 UTC | |
|
Re: What I am missing here
by Marshall (Canon) on Mar 20, 2012 at 20:37 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 09:33 UTC | |
|
Re: What I am missing here
by druthb (Beadle) on Mar 20, 2012 at 20:08 UTC | |
by MidLifeXis (Monsignor) on Mar 20, 2012 at 20:22 UTC | |
by tobyink (Canon) on Mar 20, 2012 at 21:31 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 05:21 UTC | |
by tobyink (Canon) on Mar 23, 2012 at 22:44 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 05:17 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 05:28 UTC | |
|
Re: What I am missing here
by druthb (Beadle) on Mar 20, 2012 at 20:37 UTC | |
|
Re: What I am missing here
by lidden (Curate) on Mar 20, 2012 at 20:46 UTC | |
by Marshall (Canon) on Mar 21, 2012 at 04:01 UTC | |
by JavaFan (Canon) on Mar 20, 2012 at 22:26 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 05:45 UTC | |
|
Re: What I am missing here
by Anonymous Monk on Mar 21, 2012 at 10:02 UTC | |
by aaron_baugher (Curate) on Mar 21, 2012 at 11:49 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 17:14 UTC | |
by Marshall (Canon) on Mar 23, 2012 at 00:16 UTC | |
by heatblazer (Scribe) on Mar 21, 2012 at 11:07 UTC |