| 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) |


