https://github.com/valodim/sevenwonders
A Scala implementation of Antoine Bauza's Seven Wonders board game
https://github.com/valodim/sevenwonders
Last synced: about 2 months ago
JSON representation
A Scala implementation of Antoine Bauza's Seven Wonders board game
- Host: GitHub
- URL: https://github.com/valodim/sevenwonders
- Owner: Valodim
- License: gpl-3.0
- Created: 2014-02-09T22:31:42.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-02-12T13:10:19.000Z (over 12 years ago)
- Last Synced: 2025-01-17T00:12:43.526Z (over 1 year ago)
- Language: Scala
- Size: 211 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: readme.mkd
- License: LICENSE
Awesome Lists containing this project
README
Seven
=====
This is an implementation of the excellent Seven Wonders board game by Antoine
Bauza in Scala. It is a weekend project, mainly serving as a means to finally
learn myself some Scala. That said I'm sure there are a lot of things that
could be done better in concept and implementation. Drop me a line on freenode
if you have comments of any sort - I'd be happy to hear feedback, especially
about more idiomatic ways to implement things in Scala. I am sure there are a
lot of places where the approach I have taken is rather naive.
At the point of this writing all game mechanics, cards and wonders have been
implemented, along with a basic CLI user interface. Although the implementation
is mostly true to the rules, there are a couple of places that might behave
differently.
The game runs in a simple mode with player 1 controlled by the UI, all other
players always pick the first card in their hand discarding if it can't be
built.
The code is structured to allow for easy substitution of the UI, and I plan to
create an IRC UI implementation at some point. There is no abstraction layer
for AI yet.
A note on Seven Wonders extensions: Both the Leaders and Cities extensions come
with a plethora of new game mechanics, which introduce a lot of special cases
that are complicated to cleanly implement. They also mess with the perfect
strategic balance which makes the original game great, which is why I have no
plans to implement either of them. If you care about those, go fork yourself.
The repository, that is. :)
TODO
----
In no particular order
* Translate card names to English (missing a comprehensive list)
* Implement test cases
* Fix bugs
* Learn Scala properly
* Implement AI(s)
* Implement a ui that is actually playable
* Fix the behavior of Babylon and Halikarnassos when combined