| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-09-19 13:59:20 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2020-09-19 13:59:20 +0200 | 
| commit | 63b3c43af5d402530a8c10c1f71aa0e7ca3aa06f (patch) | |
| tree | c0703ae0bc72aac35dc92684588cac200fa5d698 /data | |
| parent | 190cf9e6c79375ab1ae9f36b5d13f1fd07c082e5 (diff) | |
...
Diffstat (limited to 'data')
| -rw-r--r-- | data/examples/blackjack/cards.fate | 123 | ||||
| -rw-r--r-- | data/examples/blackjack/global.fate | 12 | ||||
| -rw-r--r-- | data/examples/blackjack/main.fate | 8 | ||||
| -rw-r--r-- | data/examples/blackjack/play.fate | 155 | 
4 files changed, 118 insertions, 180 deletions
| diff --git a/data/examples/blackjack/cards.fate b/data/examples/blackjack/cards.fate index fa2d9f5..16d0bf7 100644 --- a/data/examples/blackjack/cards.fate +++ b/data/examples/blackjack/cards.fate @@ -1,97 +1,50 @@  (fate_version 1)  (declare_structure card -   ( text name ) -   ( int number ) -   ( int score ) +   (text name) +   (int number) +   (int score)  ) -(local (list card) heart_cards) -(local (list card) spade_cards) -(local (list card) club_cards) -(local (list card) diamond_cards) +(local (lambda (list card) (string)) card_generator) -(define_sequence generate_card_familly ((string name) ((ptr (list card)) deck)) -   (local int i) - -   (for (set i 1) (=< (var i) 13) (set i (+ (var i) 1)) -      (local card c) - -      (set c.number (var i)) - -      (set c.name -         (text -            (switch (var i) -               (1 Ace) -               (11 Jack) -               (12 Queen) -               (13 Kind) -               (cast string (var i)) +(set card_generator +   (lambda ( (string family) ) +      (map +         (lambda +            ( +               (int number) +               (string family)              ) -            of (var name)           ) -      ) - -      (set c.score -         (switch (var i) -            (11 10) -            (12 10) -            (13 10) -            (var i) +         (set_fields (default card) +            (number (var number)) +            (name +               (text +                  (switch (var number) +                     (1 Ace) +                     (11 Jack) +                     (12 Queen) +                     (13 Kind) +                     (cast string (var number)) +                  ) +                  of (var name) +               ) +            ) +            (score (max 10 number))           ) +         (range 1 13 1) +         (var family)        ) - -      (add! (var c) (at deck))     )  ) -(visit generate_card_familly Hearts (ptr heart_cards)) -(visit generate_card_familly Spades (ptr spade_cards)) -(visit generate_card_familly Diamonds (ptr diamond_cards)) -(visit generate_card_familly Clubs (ptr club_cards)) -  (global (list card) deck_template) -(add_all! heart_cards deck_template) -(add_all! spade_cards deck_template) -(add_all! diamond_cards deck_template) -(add_all! club_cards deck_template) - -(define_sequence shuffle_into_deck -   ( -      ((ptr (list card)) cards) -      ((ptr (list card)) deck) -   ) - -   (while (! (is_empty (at cards))) -      (local int o) -      (local int d) - -      (set o (rand 0 (- (size (at cards)) 1))) - -      (if_else (is_empty (at deck)) -         (set d 0) -         (set d (rand 0 (- (size (at deck)) 1))) -      ) - -      (add_at! (var d) (access (at cards) (var o)) (at deck)) -      (remove_at! (var o) (at cards)) -   ) -) - -(define_sequence generate_shuffled_deck (((ptr (list card)) result)) -   (local (list card) initial_deck) - -   (set initial_deck (var deck_template)) - -   (clear (at result)) -   (visit shuffle_into_deck (ptr initial_deck) (var result)) -) - -(define_sequence draw_a_card (((ptr (list card)) deck) ((ptr card) result)) -   (set (at result) (access (at deck) 0)) -   (remove_at! 0 (at deck)) -) +(add_all! (eval card_generator Hearts) deck_template) +(add_all! (eval card_generator Spades) deck_template) +(add_all! (eval card_generator Diamonds) deck_template) +(add_all! (eval card_generator Clubs) deck_template)  (define_sequence compute_score (((ptr (list card)) deck) ((ptr int) result))     (local int aces_count) @@ -100,17 +53,17 @@     (set (at result) 0)     (foreach (at deck) card -      (set (at result) (+ (var card.score) (at result))) -      (if (= (var card.number) 1) -         (set aces_count (+ (var aces_count) 1)) +      (set (at result) (+ card.score (at result))) +      (if (= card.number 1) +         (set aces_count (+ aces_count 1))        )     ) -   (while (> (var aces_count) 0) +   (while (> aces_count 0)        (set maybe_better_score (+ (at result) 10)) -      (if (=< (var maybe_better_score) 21) +      (if (=< maybe_better_score 21)           (set (at result) (var maybe_better_score))        ) -      (set aces_count (- (var aces_count) 1)) +      (set aces_count (- aces_count 1))     )  ) diff --git a/data/examples/blackjack/global.fate b/data/examples/blackjack/global.fate index 9c10c9f..16574e6 100644 --- a/data/examples/blackjack/global.fate +++ b/data/examples/blackjack/global.fate @@ -9,8 +9,8 @@  (set coins_word     (lambda ((int i))        (if_else (= (var i) 1) -         (text a single coin ) -         (text (var i) coins ) +         (text a single coin) +         (text (var i) coins)        )     )  ) @@ -18,8 +18,8 @@  (declare_text_effect action_description)  (define_sequence money_acquisition ((int amount)) -   (set player.money (+ (var player.money) (var amount))) -   (if (> (var amount) 0) +   (set player.money (+ player.money  amount)) +   (if (> amount 0)        (text_effect action_description           You acquired (eval coins_word (var amount))!        ) @@ -27,8 +27,8 @@  )  (define_sequence money_loss ((int amount)) -   (set player.money (- (var player.money) (var amount))) -   (if (> (var amount) 0) +   (set player.money (- player.money amount)) +   (if (> amount 0)        (text_effect action_description           You lost (eval coins_word (var amount)).        ) diff --git a/data/examples/blackjack/main.fate b/data/examples/blackjack/main.fate index 0ab9b7d..acfee7e 100644 --- a/data/examples/blackjack/main.fate +++ b/data/examples/blackjack/main.fate @@ -46,20 +46,20 @@ Now, you're all set to go... unless you don't know how to play?  (cond     ( -      (=< (var player.money) (/ (var original_amount) 2)) +      (=< player.money (/ original_amount 2))        Outch. I suppose all your luck was spent by getting these free coins.     )     ( -      (< (var player.money) (var original_amount)) +      (< player.money original_amount)        Well, that's not too bad for your first time. Come back tomorrow, I am        sure you'll be getting it all back.     )     ( -      (< (var player.money) (* (var original_amount) 2)) +      (< player.money (* original_amount 2))        Had a good day, I hope?     )     ( -      (< (var player.money) (* (var original_amount) 4)) +      (< player.money (* original_amount 4))        Well! That was some fine play, if I do say so myself!     )     ( diff --git a/data/examples/blackjack/play.fate b/data/examples/blackjack/play.fate index 3dc9536..2cf2407 100644 --- a/data/examples/blackjack/play.fate +++ b/data/examples/blackjack/play.fate @@ -15,20 +15,16 @@  (define_sequence play_a_game ()     (local card new_card) -   (if (not (var has_played)) -      ( -         (text_effect action_description -            Sitting yourself at a table, you see someone rushing to set up the -            cards and manage the game. -         ) -         (set has_played (true)) +   (if (not has_played) +      (text_effect action_description +         Sitting yourself at a table, you see someone rushing to set up the +         cards and manage the game.        ) +      (set has_played (true))     )     (if (= (var player.money) 0) -      ( -         I am sorry, (var player.name), but you appear to have ran out of coins. -         (done) -      ) +      I am sorry, (var player.name), but you appear to have ran out of coins. +      (done)     )     (prompt_integer        (ptr bet) @@ -42,9 +38,9 @@     (newline) -   (visit generate_shuffled_deck (ptr current_deck)) +   (set current_deck (shuffle deck_template)) -   (visit draw_a_card (ptr current_deck) (ptr new_card)) +   (pop_left! current_deck (ptr new_card))     (add! (var new_card) player.hand)     (text_effect action_description @@ -52,8 +48,7 @@        (newline)     ) - -   (visit draw_a_card (ptr current_deck) (ptr new_card)) +   (pop_left! current_deck (ptr new_card))     (add! (var new_card) dealer_hand)     (text_effect action_description @@ -61,7 +56,7 @@        (newline)     ) -   (visit draw_a_card (ptr current_deck) (ptr new_card)) +   (pop_left! current_deck (ptr new_card))     (add! (var new_card) player.hand)     (text_effect action_description @@ -71,7 +66,7 @@     (newline) -   (visit draw_a_card (ptr current_deck) (ptr new_card)) +   (pop_left! current_deck (ptr new_card))     (add! (var new_card) dealer_hand)     (text_effect action_description @@ -111,54 +106,50 @@     (visit compute_score (ptr player.hand) (ptr player_score))     (if (= (var dealer_score) 21) -      ( +      (text_effect action_description +         The dealer reveals their full hand: +      ) +      (foreach dealer_hand card           (text_effect action_description -            The dealer reveals their full hand: +            (newline) +            * The (var card.name), worth +            (if_else (= (var card.number) 1) +               (text 1 or 11 points.) +               (text (var card.score) points.) +            )           ) -         (foreach dealer_hand card +      ) +      (newline) +      (ifelse (= (var player_score) 21) +         (              (text_effect action_description -               (newline) -               * The (var card.name), worth -               (if_else (= (var card.number) 1) -                  (text 1 or 11 points. ) -                  (text (var card.score) points. ) -               ) +               The dealer looks very surprised.              ) +            (newline) +            Double Blackjack! A tie, then. +            (done)           ) -         (newline) -         (ifelse (= (var player_score) 21) -            ( -               (text_effect action_description -                  The dealer looks very surprised. -               ) -               (newline) -               Double Blackjack! A tie, then. -               (done) -            ) -            ( -               (text_effect action_description -                  The dealer looks surprised, but happy. -               ) -               (newline) -               Blackjack! Looks like I win, this time. -               (visit money_loss (var bet)) -               (done) +         ( +            (text_effect action_description +               The dealer looks surprised, but happy.              ) +            (newline) +            Blackjack! Looks like I win, this time. +            (visit money_loss (var bet)) +            (done)           )        )     )     (if (= (var player_score) 21) -      ( -         (text_effect action_description -            The dealer looks surprised. -         ) -         (newline) -         Blackjack! Looks like you win, this time. -         (newline) -         (visit money_acquisition (cast int (* (cast float (var bet)) 1.5))) -         (done) +      (text_effect action_description +         The dealer looks surprised.        ) +      (newline) +      Blackjack! Looks like you win, this time. +      (newline) +      (visit money_acquisition (cast int (* (cast float (var bet)) 1.5))) +      (done)     )     (player_choice @@ -171,10 +162,10 @@           ( I will stand. )           (jump_to resolve_dealer)        ) -      (if (and (>= (var player_score) 9) (<= (var player_score) 11)) +      (if (and (>= player_score 9) (<= player_score 11))           (              ( Double my bet, I'll only take one card. ) -            (set bet (* (var bet) 2)) +            (set bet (* bet 2))              (set has_doubled (true))              (jump_to acquire_card)           ) @@ -186,7 +177,7 @@     (local card new_card)     (local int player_score) -   (visit draw_a_card (ptr current_deck) (ptr new_card)) +   (pop_left! current_deck (ptr new_card))     (add! (var new_card) player.hand)     (visit compute_score (ptr player.hand) (ptr player_score)) @@ -201,24 +192,22 @@           (newline)           * The (var card.name), worth           (if_else (= (var card.number) 1) -            (text 1 or 11 points. ) -            (text (var card.score) points. ) +            (text 1 or 11 points.) +            (text (var card.score) points.)           )        )     )     (newline) -   (if (> (var player_score) 21) -      ( -         (text_effect action_description -            The dealer looks disappointed. -         ) -         (newline) -         A bust! What a shame... -         (newline) -         (visit money_loss (var bet)) -         (done) +   (if (> player_score 21) +      (text_effect action_description +         The dealer looks disappointed.        ) +      (newline) +      A bust! What a shame... +      (newline) +      (visit money_loss (var bet)) +      (done)     )     (if (var has_doubled) @@ -261,10 +250,10 @@     )     (newline) -   (while (< (var dealer_score) 17) +   (while (< dealer_score 17)        (local card new_card) -      (visit draw_a_card (ptr current_deck) (ptr new_card)) +      (pop_left! current_deck (ptr new_card))        (add! (var new_card) dealer_hand)        (text_effect action_description @@ -275,17 +264,15 @@        (visit compute_score (ptr dealer_hand) (ptr dealer_score))     ) -   (if (> (var dealer_score) 21) -      ( -         (text_effect action_description -            The dealer looks disappointed. -         ) -         (newline) -         Ah. It would appear I have gone above the limit. -         (newline) -         (visit money_acquisition (var bet)) -         (done) +   (if (> dealer_score 21) +      (text_effect action_description +         The dealer looks disappointed.        ) +      (newline) +      Ah. It would appear I have gone above the limit. +      (newline) +      (visit money_acquisition (var bet)) +      (done)     )     (visit compute_score (ptr player.hand) (ptr player_score)) @@ -295,13 +282,11 @@     (newline)     (if (= (var player_score) (var dealer_score)) -      ( -         A tie, then. -         (done) -      ) +      A tie, then. +      (done)     ) -   (if_else (> (var player_score) (var dealer_score)) +   (if_else (> player_score dealer_score)        (           Congratulation, you won.           (newline) | 


