From: bozovic.bojan@gmail.com
Subject: Re: Card game deck but with trumps suit for tarot "divination" Is there a better way than enumerating all cards?
Date: Sun, 28 Jan 2018 01:23:56 -0800 (PST)
Date: 2018-01-28T01:23:56-08:00 [thread overview]
Message-ID: <40142b86-fdcf-49d3-bee7-2fdbb04c6db0@googlegroups.com> (raw)
In-Reply-To: <87y3ki743m.fsf@jacob-sparre.dk>
On Sunday, January 28, 2018 at 9:57:34 AM UTC+1, Jacob Sparre Andersen wrote:
> bozovic.bojan@gmail.com writes:
>
> > These cards contain of 4 suits of 14 cards each, and special "trump"
> > so called "major arcana" cards, 22 of them, for total of 78 cards. I
> > created enumeration type and listed all 78 cards (with Tarot_Card'Pos
> > of course 0..77 an Tarot_Card_Position in that range, and Deck as
> > array(Tarot_Card_Position) of Card_Properties record with name and
> > meaning fields. Using Ada.Numerics.Discrete_Random it works, but I
> > wonder if better solution is possible)! When I've tried to make 4
> > suits of 14 cards and 22 cards in trump "suit" I however failed to see
> > a solution and how I would iterate over such type, so I wonder if that
> > route is possible. Thanks!
>
> Why the mess with the type "Tarot_Card_Position"? You can make arrays
> over enumeration types.
>
> It sound like your problem space doesn't quite match a single
> enumeration type, though. Maybe you really need a variant record?
>
> type Card (Trump : Boolean) is
> record
> case Trump is
> when True =>
> Trump_Value : Major_Arcana;
> when False =>
> Suit : Suits;
> Value : Values;
> end record;
>
> The naming is horrible, and the code is untested, but I hope you get the
> idea.
>
> Greetings,
>
> Jacob
> --
> "Good enough for physics" -- Ridcully
Thanks for the input, I'll look into your suggestion, but the main problem is each card has its "divinatoy meaning". I've used Tarot_Card_Position because it makes more sense to shuffle deck indexed in integer than in enumeration type and draw then a number of cars from it. But I know I wrote some awful code, as I really have little experience and no formal education.
procedure Shuffle (TDeck : in out Deck) is
position_gen : position_random.Generator;
Temporary_Data : Card_Properties;
Index_Random : Tarot_Card_Position;
begin
position_random.Reset (Gen => position_gen);
for Index in Tarot_Card_Position'First .. Tarot_Card_Position'Last loop
Index_Random := position_random.Random (Gen => position_gen);
Temporary_Data := TDeck (Index);
TDeck (Index) := TDeck (Index_Random);
TDeck (Index_Random) := Temporary_Data;
end loop;
end Shuffle;
I make a Deck, Initialize it (with all 78 "divinatory meanings" of cards) call this Shuffle and draw then a number of cards. My code is not ideal, it just happen to work, but I've did only some PHP programming and assembler programming back in 80s on 8-bit home computer.
next prev parent reply other threads:[~2018-01-28 9:23 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-28 7:48 Card game deck but with trumps suit for tarot "divination" Is there a better way than enumerating all cards? bozovic.bojan
2018-01-28 8:57 ` Jacob Sparre Andersen
2018-01-28 9:23 ` bozovic.bojan [this message]
2018-01-28 9:46 ` Jeffrey R. Carter
2018-01-28 14:17 ` bozovic.bojan
2018-01-28 16:39 ` Dennis Lee Bieber
2018-01-29 23:16 ` Randy Brukardt
2018-01-30 2:30 ` bozovic.bojan
2018-02-02 19:07 ` Robert Eachus
2018-02-02 23:00 ` Dennis Lee Bieber
2018-02-02 23:05 ` Randy Brukardt
2018-02-03 8:17 ` Jeffrey R. Carter
2018-02-03 16:59 ` Robert Eachus
2018-02-06 0:39 ` Randy Brukardt
2018-02-06 3:17 ` Robert Eachus
2018-02-06 8:30 ` Petter Fryklund
2018-02-07 20:03 ` Card game deck but with trumps suit for tarot "divination" Is there a better way Robert Eachus
2018-02-07 21:10 ` Bojan Bozovic
2018-02-08 23:06 ` Robert Eachus
2018-01-28 11:01 ` Card game deck but with trumps suit for tarot "divination" Is there a better way than enumerating all cards? gautier_niouzes
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox