<round_command> rounds up the number to two decimal spaces.
<check_shipping_command> checks if the product price is over 70. If yes, no shipping cost will be applied.
<add_command> add two product prices
<discount_command> gives a discount to a product
<buy_command> calculates the final price of the purchase
<compare_command> compares two product prices
- Terraforming Mars Kickstarter edition: Corporate CEO
- Terraforming Mars
- Rules
- Game board
- 5 Player boards
- 17 Corporation Cards
- 208 Corporation Cards
- 8 refrence Cards
- 200 player Markers
- 200 Resource Markers
- 3 Game board Markers
- 9 Ocean tiles
- 60 Greenery/city tiles
- 11 Special tiles
- First player Marker
- Terraforminh Mars Big Box
- 3D printed tiles
- 24 City Tiles
- 40 Greenery Tiles
- 9 Ocean Tiles
- 14 Special Tiles
- Big Box promo cards
- Venus Next expansion
- 49 project cards
- 5 corporation cards
- Milestone tile
- Award tile
- Venus Board
- Venus scale marker
- Rules
- Turmoil expansion
- ...
- Colonies expansion
- ...
- Prelude expanion
- Prelude 1 expanion
- ...
- Prelude 2 expanion
- ...
- Ellas & Hellium map expansion
- ...
- Terraforming Mars
- corporateCEOTM 224 eur [includes: baseTM 37 eur (contains: 1 rules, 1 gameBoard, 5 playerBoard, 233 cards, 401 marker, 80 tiles), bigBoxTM 114 eur (contains: 167 tile, 20 card), venusTMexp 26 eur (contains: 1 rules, 1 gameBoard, 2 tile, 54 card), turmoilTMexp 26 eur (contains: 1 rules, 1 gameBoard, 3 tile, 60 card), coloniesTMexp 26 eur (contains: 1 rules, 1 gameBoard, 5 tile, 40 card), preludeTMexp 38 eur (contains: 1 rules)[includes: prelude1TMexp (contains: 1 rules, 30 card), prelude2TMexp (contains: 1 rules, 32 card)], hellasTMexp 19 eur (contains: 1 rules, 2 gameBoard)]
corporateCEOTM 224 eur [includes: baseTM 37 eur (contains: 1 rules, 1 gameBoard, 5 playerBoard, 233 cards, 401 marker, 80 tiles), bigBoxTM 114 eur (contains: 167 tile, 20 card), venusTMexp 26 eur (contains: 1 rules, 1 gameBoard, 2 tile, 54 card), turmoilTMexp 26 eur (contains: 1 rules, 1 gameBoard, 3 tile, 60 card), coloniesTMexp 26 eur (contains: 1 rules, 1 gameBoard, 5 tile, 40 card), preludeTMexp 38 eur (contains: 1 rules) [includes: prelude1TMexp (contains: 1 rules, 30 card), prelude2TMexp (contains: 1 rules, 32 card) ], hellasTMexp 19 eur (contains: 1 rules, 2 gameBoard) ]
Random example provided by "https://bnfplayground.pauliankline.com/":
- ellas&hellasTMexp 8.1eur (contains: 0 rules)[includes: venusTMexp 31eur (contains: 32 card)[includes: crisisTMAEexp 7.1eur (contains: 79 rules), baseTMAE 4.3eur (contains: 7 card, 8 marker, 2 rules)[includes: venusTMexp 93.68eur (contains: 5 tile)]], foundationsTMAEexp 67.9eur (contains: 64384 tile)]
ellas&hellasTMexp 8.1eur (contains: 0 rules) [includes: venusTMexp 31eur (contains: 32 card) [includes: crisisTMAEexp 7.1eur (contains: 79 rules), baseTMAE 4.3eur (contains: 7 card, 8 marker, 2 rules) [includes: venusTMexp 93.68eur (contains: 5 tile) ] ], foundationsTMAEexp 67.9eur (contains: 64384 tile) ]
-
Removed all uneeded and inseparable add_on, component grammar. Just made it simple and not repetetive: ::= <component_name> <add_on> ::= <add_on_name> " " "eur"
-
Added "%" to to make it unique.
-
Moved "eur" from and <add_on> to for clarity
-
Moved from to , added missing <add_on> to .
-
- Deleted <add_ons>, , and moved <add_on>, to . To avoid code repetition for recursive elements.
- Separated to two for clarity: ::= <boardgame_name> " " " (contains: " ")" <boardgame_with_addons> ::= "[includes: " "]"
-
Added <total_command>
The changes to BNF were made because there either were mistakes or for clarity, simplicity purposes. The main logic hasn't been changed. The examples up above are still valid.
State can be saved with "save" in storage.txt. Loaded with "load".
storage.txt example:
BEGIN add corporateCEOTM 50.0eur (contains: ), cardSleeve 5.0eur, bigBoxTM 150.0eur (contains: 2 tile, 1 gameBoard, 5 marker) [includes: playerBoard 10.0eur, metalResource 20.0eur], 3 marker, foundationsTMAEexp 50.0eur (contains: ) [includes: ]; giveDiscount corporateCEOTM 50.0eur (contains: ) 10%; giveDiscount cardSleeve 5.0eur 5% END
- To start ":paste" in cmd
- write "BEGIN"
- commands with ";" at the end. New command - new line.
- write "END"
- Ctrl-d
Batch processing example:
>>> :paste -- Entering multi-line mode. Press to finish. | BEGIN | add corporateCEOTM 99.99eur (contains: 2 tile, 1 gameBoard); | giveDiscount corporateCEOTM 99.99eur (contains: 2 tile, 1 gameBoard) 15%; | buy 2 corporateCEOTM 99.99eur (contains: 2 tile, 1 gameBoard); | END | New products added to the state. Discount applied to BoardGame "corporateCEOTM" 99.99 [Component 2 "tile",Component 1 "gameBoard"]. Product bought for 169.98299999999998 eur and added to purchase history.
-
Made <check_shipping_command>, <total_command>, <compare_command> functional
-
Improved <buy_command> so that it displays for how much product has been bought.
-
Removed <round_command> as it was never used and will never be used.
-
Added parseDouble as there were problems in Property tests comparing Doubles - rounding up is random.
-
Added "instance Eq Product where" because there were problems comparing products in Property tests. Now they are compared by name.
-
Changed parseProductOrIndex to first do parseProductAsLeft then parseNumberAsIndex because there were problems with add command when adding component. Quantinty was classified as index. (Problem found by property tests)