Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- setInfos(9, "Strip Jack Naked Example",
- "Strip Jack Naked card game",
- "MissEshock2002",
- "v1.0", 0x222222, "en", ["example", "tutorial", "card game"]);
- // list to map the cards to the card images for "images/cards/deck0" or
- // the cards from the bacara packs
- // the index is the image name. example: IMAGE_MAP.indexOf("AC") -> "0.png"
- List<String> IMAGE_MAP = [
- "AC", "AD", "AH", "AS", "2C", "2D", "2H", "2S", "3C", "3D", "3H", "3S", "4C", "4D", "4H", "4S",
- "5C", "5D", "5H", "5S", "6C", "6D", "6H", "6S", "7C", "7D", "7H", "7S", "8C", "8D", "8H", "8S",
- "9C", "9D", "9H", "9S", "TC", "TD", "TH", "TS", "JC", "JD", "JH", "JS", "QC", "QD", "QH", "QS",
- "KC", "KD", "KH", "KS"
- ]
- // a deck of cards is made of 13 ranks times 4 suits = 52 cards. 'T' is for 10
- List<Character> RANKS = ['A', '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K']
- List<Character> SUITS = ['C', 'D', 'H', 'S']
- // game vars:
- List<String> PENALTY_CARDS = ["J", "Q", "K", "A"] // number of penalty cards = position in list + 1
- int player // current player to draw a card, pay a penalty, or win central deck
- int draws = 1 // number of cards to draw
- boolean penalty = false
- //String card
- List<String> centralDeck = []
- List<List> decks = [[], []] // player 0 deck = decks[0]; player 1 deck = decks[1]
- // debug:
- String logText = ""
- def log = { String _log = "" ->
- logText += "\n----" +
- "\n${_log}" +
- "\ndeck 0 = ${decks[0]}" +
- "\ndeck c = ${centralDeck}" +
- "\ndeck 1 = ${decks[1]}"
- show(logText)
- }
- def getDeck = {
- /** return a shuffled deck of 52 cards */
- List<String> _deck = []
- // put 13 ranks and 4 suits to 52 cards: "AC", "AD", "AH", ...
- RANKS.each { rank ->
- SUITS.each { suit ->
- _deck.add(rank + suit)
- }
- }
- // shuffle the deck befor returning
- Collections.shuffle(_deck)
- return _deck
- }
- def resetGame = {
- player = 0
- centralDeck.clear()
- // split a deck in half:
- List<String> deck = getDeck() // make a deck of 52 cards
- int halfDeckSize = (int) Math.ceil(deck.size() / 2)
- decks[0] = deck[0..(halfDeckSize - 1)]
- decks[1] = deck[halfDeckSize..(deck.size() - 1)]
- }
- def switchPlayer = {
- player = (player + 1) % 2
- }
- def drawCard = { int _player ->
- /** draw card from player and put on central deck */
- String _card = decks[_player].pop()
- centralDeck.add(_card)
- return _card
- }
- boolean endGame = false
- while (!endGame) {
- resetGame()
- // for debug:
- // decks = [["0", "Q", "0", "0", "0"],
- // ["1", "1", "1", "K", "1"]]
- log("Start")
- showButton("Start ->")
- boolean gameOver = false
- while (!gameOver) {
- draws = 1
- penalty = false
- // while (draws > 0 && decks[0].size() > 0 && decks[1].size() > 0) {
- while (draws > 0 && decks[player].size() > 0) {
- draws--
- String card = drawCard(player)
- log("player ${player} draws ${card} - penalty = ${penalty}")
- if (card[0] in PENALTY_CARDS) {
- penalty = true
- switchPlayer()
- draws = PENALTY_CARDS.indexOf(card[0]) + 1
- }
- }
- switchPlayer()
- // pay winner:
- if (penalty) {
- decks[player].addAll(centralDeck)
- centralDeck.clear()
- log("player ${player} wins central deck")
- }
- if (decks[0].size() <= 0 || decks[1].size() <= 0) {
- gameOver = true
- log("player ${player} wins! opponent is out of cards")
- }
- }
- showButton("Game Over")
- if (!getBoolean("Play again?")) endGame = true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement