changelog shortlog tags changeset files file revisions raw

Annotate bin/Data Structures: The Card Game

changeset 368: a1c4ba7f2fe0
parent:151dead8cc5b
child:751d42400a9e
author: harrisonmetz (openid-provider.appspot.com/harrisonmetz)
date: Mon Dec 07 02:29:47 2009 +0000 (2 years ago)
permissions: -rwxr-xr-x
description: medit/bin/Data Structures: The Card Game chebang=#!/usr/bin/env .wiki cont=This is a card game, created by Gregor Richards and Harrison Metzger. It is absurdly complicated.

== The data structures

=== Deck
The game is played with two standard 52-card decks.

=== Queue
In the center of the table is a queue. The queue has a maximum of five cards, and moves in a predetermined direction. The stack of cards is placed at the beginning of the queue to indicate its direction. The cards in the queue are face-up.

=== Stacks
Each player has a stack. The stack is face-up in front of the player.

=== Hands
Each player has a five-card hand.

=== Arrays
Each player has three arrays. The objective of the game is to get all three arrays to have every value (2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K) in order. The lists may start with any value, but must loop back 'round to one less than that value.

== Setup

At the beginning of the game, the deck is placed to one side. All five cards of the queue are set out, as are a single card for each stack, and each player's five-card hand.

== Gameplay

The game is a turn based game. Each players turn can be divided up into phases.

=== Phase 1 (Inserting into arrays)
During this phase, the player can use any card from their hand, pop for any of the 2 stacks, or remove the head of the list to place the proper next card on his or her own array. An array can only be started from a card in the player's hand. Should an array become complete on a card move, the array is turned upside down (so all cards are now face down) and will be shuffled back into the deck at the end of the turn.

Should the player use all 5 cards in their hand, they are allowed to redraw all 5 cards. Likewise, should all 5 cards in the queue be used, it will be refilled here.

Alternatively, should the player be unable to play any card (this is verified by showing all cards in the hand to the opponent) they can chose to burn 4 out of their 5 cards. This forcebly ends phase 1 (although it would be ended automatically as there are no moves, but we want to be explicit incase burning is allowed if moves are a possibility to expand the scope of the rule)

=== Phase 2 (Discards)
Phase 2 begins by "burning" the head of the queue. The player removes the head of the queue and places it on the to-be-shuffle-back-in pile.

The player then must place one of their cards on the stack.

Should the player have any cards in their hand and the queue not be full, they can optionally put cards from their hand into the queue.

=== Phase 3 (Replenish)

Should any arrays be closed they, along with the garbage pile are shuffle back into the deck.

At this phase should the queue be less than 5 cards, it is replenished by drawing from the deck.

Also, the players hand is replenished to 5 cards.

An invariant is that on the beginning of each players turn, both players have 5 cards in their hand and the queue is filled with 5 cards.

Gregor@347 1
#!/usr/bin/env .wiki
Gregor@347 2
This is a card game, created by Gregor Richards and Harrison Metzger. It is absurdly complicated.
Gregor@347 3
Gregor@347 4
== The data structures
Gregor@347 5
Gregor@347 6
=== Deck
Gregor@347 7
The game is played with two standard 52-card decks.
Gregor@347 8
Gregor@347 9
=== Queue
Gregor@347 10
In the center of the table is a queue. The queue has a maximum of five cards, and moves in a predetermined direction. The stack of cards is placed at the beginning of the queue to indicate its direction. The cards in the queue are face-up.
Gregor@347 11
Gregor@347 12
=== Stacks
Gregor@347 13
Each player has a stack. The stack is face-up in front of the player.
Gregor@347 14
Gregor@347 15
=== Hands
Gregor@347 16
Each player has a five-card hand.
Gregor@347 17
harrisonmetz@363 18
=== Arrays
harrisonmetz@363 19
Each player has three arrays. The objective of the game is to get all three arrays to have every value (2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K) in order. The lists may start with any value, but must loop back 'round to one less than that value.
Gregor@347 20
Gregor@347 21
== Setup
Gregor@347 22
Gregor@347 23
At the beginning of the game, the deck is placed to one side. All five cards of the queue are set out, as are a single card for each stack, and each player's five-card hand.
Gregor@347 24
Gregor@347 25
== Gameplay
Gregor@347 26
harrisonmetz@363 27
The game is a turn based game. Each players turn can be divided up into phases.
harrisonmetz@363 28
harrisonmetz@363 29
=== Phase 1 (Inserting into arrays)
harrisonmetz@363 30
During this phase, the player can use any card from their hand, pop for any of the 2 stacks, or remove the head of the list to place the proper next card on his or her own array. An array can only be started from a card in the player's hand. Should an array become complete on a card move, the array is turned upside down (so all cards are now face down) and will be shuffled back into the deck at the end of the turn.
harrisonmetz@363 31
harrisonmetz@363 32
Should the player use all 5 cards in their hand, they are allowed to redraw all 5 cards. Likewise, should all 5 cards in the queue be used, it will be refilled here.
harrisonmetz@363 33
harrisonmetz@368 34
Alternatively, should the player be unable to play any card (this is verified by showing all cards in the hand to the opponent) they can chose to burn 4 out of their 5 cards. This forcebly ends phase 1 (although it would be ended automatically as there are no moves, but we want to be explicit incase burning is allowed if moves are a possibility to expand the scope of the rule)
harrisonmetz@368 35
harrisonmetz@363 36
=== Phase 2 (Discards)
harrisonmetz@363 37
Phase 2 begins by "burning" the head of the queue. The player removes the head of the queue and places it on the to-be-shuffle-back-in pile.
harrisonmetz@363 38
harrisonmetz@363 39
The player then must place one of their cards on the stack.
harrisonmetz@363 40
harrisonmetz@363 41
Should the player have any cards in their hand and the queue not be full, they can optionally put cards from their hand into the queue.
harrisonmetz@363 42
harrisonmetz@363 43
=== Phase 3 (Replenish)
harrisonmetz@363 44
harrisonmetz@367 45
Should any arrays be closed they, along with the garbage pile are shuffle back into the deck.
harrisonmetz@367 46
harrisonmetz@363 47
At this phase should the queue be less than 5 cards, it is replenished by drawing from the deck.
harrisonmetz@363 48
harrisonmetz@363 49
Also, the players hand is replenished to 5 cards.
harrisonmetz@363 50
harrisonmetz@367 51
An invariant is that on the beginning of each players turn, both players have 5 cards in their hand and the queue is filled with 5 cards.