Skip to content

Commit

Permalink
Add Europe edition map (#22)
Browse files Browse the repository at this point in the history
* Add European game cities

* Add some European routes and expose the Map of Europe

* First attempt for all EU routes

* Finish EU route list

* Remove the TODO to complement the list

* Create a set of EU tickets
  • Loading branch information
yury-fedotov authored Jun 8, 2024
1 parent 6cf6f73 commit 02dc0a5
Show file tree
Hide file tree
Showing 7 changed files with 267 additions and 3 deletions.
1 change: 1 addition & 0 deletions src/ticket_to_ride/default_components/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@
# For more information about the game, please visit
# the official Days of Wonder website: https://www.daysofwonder.com/ticket-to-ride/.
"""Provides default component definitions for common game versions."""
from .europe import *
from .north_america import *
9 changes: 9 additions & 0 deletions src/ticket_to_ride/default_components/europe/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# This project is implemented exclusively for learning purposes and assumes no commercial use.
# Neither Yury Fedotov nor organizations he is affiliated with claim any rights to the "Ticket to Ride" trademark,
# game rules or other game-related artifacts. "Ticket to Ride" was designed by Alan R. Moon and released
# by Days of Wonder. To the best of author's knowledge, the trademark is owned by Days of Wonder, Inc.
# All rights to the original game and its elements are owned by their respective holders.
# For more information about the game, please visit
# the official Days of Wonder website: https://www.daysofwonder.com/ticket-to-ride/.
"""Provides default component definitions for the Europe game version."""
from .map import europe_map
65 changes: 65 additions & 0 deletions src/ticket_to_ride/default_components/europe/cities.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# This project is implemented exclusively for learning purposes and assumes no commercial use.
# Neither Yury Fedotov nor organizations he is affiliated with claim any rights to the "Ticket to Ride" trademark,
# game rules or other game-related artifacts. "Ticket to Ride" was designed by Alan R. Moon and released
# by Days of Wonder. To the best of author's knowledge, the trademark is owned by Days of Wonder, Inc.
# All rights to the original game and its elements are owned by their respective holders.
# For more information about the game, please visit
# the official Days of Wonder website: https://www.daysofwonder.com/ticket-to-ride/.
"""Default cities for the Europe game version."""
from ticket_to_ride import City

_CITY_NAMES = frozenset((
"Edinburgh",
"London",
"Amsterdam",
"Essen",
"København",
"Stockholm",
"Petrograd",
"Moskva",
"Riga",
"Kharkov",
"Rostov",
"Sochi",
"Petrograd",
"Erzurum",
"Angora",
"Smyrna",
"Palermo",
"Roma",
"Marseille",
"Barcelona",
"Madrid",
"Cadiz",
"Lisboa",
"Pamplona",
"Brest",
"Dieppe",
"Bruxelles",
"Paris",
"Zurich",
"Frankfurt",
"Munchen",
"Berlin",
"Venezia",
"Wien",
"Zagreb",
"Saraevo",
"Brindisi",
"Budapest",
"Warszawa",
"Danzic",
"Athena",
"Constantinople",
"Sofia",
"Wilno",
"Smolensk",
"Kyiv",
"Sevastopol",
"Bucharest",
))

default_cities = {
name: City(name=name)
for name in _CITY_NAMES
}
13 changes: 13 additions & 0 deletions src/ticket_to_ride/default_components/europe/map.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# This project is implemented exclusively for learning purposes and assumes no commercial use.
# Neither Yury Fedotov nor organizations he is affiliated with claim any rights to the "Ticket to Ride" trademark,
# game rules or other game-related artifacts. "Ticket to Ride" was designed by Alan R. Moon and released
# by Days of Wonder. To the best of author's knowledge, the trademark is owned by Days of Wonder, Inc.
# All rights to the original game and its elements are owned by their respective holders.
# For more information about the game, please visit
# the official Days of Wonder website: https://www.daysofwonder.com/ticket-to-ride/.
"""Exposes the North America game version map."""
from ticket_to_ride import Map

from .routes import default_routes

europe_map = Map(routes=default_routes, name="Europe")
115 changes: 115 additions & 0 deletions src/ticket_to_ride/default_components/europe/routes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# This project is implemented exclusively for learning purposes and assumes no commercial use.
# Neither Yury Fedotov nor organizations he is affiliated with claim any rights to the "Ticket to Ride" trademark,
# game rules or other game-related artifacts. "Ticket to Ride" was designed by Alan R. Moon and released
# by Days of Wonder. To the best of author's knowledge, the trademark is owned by Days of Wonder, Inc.
# All rights to the original game and its elements are owned by their respective holders.
# For more information about the game, please visit
# the official Days of Wonder website: https://www.daysofwonder.com/ticket-to-ride/.
"""Default routes for the Europe game version."""
from ticket_to_ride import Color, Route

from .cities import default_cities

default_routes = (
Route(cities=(default_cities["Edinburgh"], default_cities["London"]), length=4, color=Color.BLACK),
Route(cities=(default_cities["Edinburgh"], default_cities["London"]), length=4, color=Color.ORANGE),
Route(cities=(default_cities["London"], default_cities["Dieppe"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["London"], default_cities["Dieppe"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Dieppe"], default_cities["Brest"]), length=2, color=Color.ORANGE),
Route(cities=(default_cities["Dieppe"], default_cities["Paris"]), length=1, color=Color.PINK),
Route(cities=(default_cities["Brest"], default_cities["Pamplona"]), length=4, color=Color.PINK),
Route(cities=(default_cities["Pamplona"], default_cities["Madrid"]), length=3, color=Color.BLACK),
Route(cities=(default_cities["Pamplona"], default_cities["Madrid"]), length=3, color=Color.WHITE),
Route(cities=(default_cities["Madrid"], default_cities["Lisboa"]), length=3, color=Color.PINK),
Route(cities=(default_cities["Lisboa"], default_cities["Cadiz"]), length=2, color=Color.BLUE),
Route(cities=(default_cities["Cadiz"], default_cities["Madrid"]), length=3, color=Color.ORANGE),
Route(cities=(default_cities["Madrid"], default_cities["Barcelona"]), length=2, color=Color.YELLOW),
Route(cities=(default_cities["Barcelona"], default_cities["Pamplona"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Barcelona"], default_cities["Marseille"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Pamplona"], default_cities["Marseille"]), length=4, color=Color.RED),
Route(cities=(default_cities["Marseille"], default_cities["Paris"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Pamplona"], default_cities["Paris"]), length=4, color=Color.BLUE),
Route(cities=(default_cities["Pamplona"], default_cities["Paris"]), length=4, color=Color.GREEN),
Route(cities=(default_cities["Brest"], default_cities["Paris"]), length=3, color=Color.BLACK),
Route(cities=(default_cities["London"], default_cities["Amsterdam"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Amsterdam"], default_cities["Bruxelles"]), length=1, color=Color.BLACK),
Route(cities=(default_cities["Bruxelles"], default_cities["Dieppe"]), length=2, color=Color.GREEN),
Route(cities=(default_cities["Bruxelles"], default_cities["Paris"]), length=2, color=Color.YELLOW),
Route(cities=(default_cities["Bruxelles"], default_cities["Paris"]), length=2, color=Color.RED),
Route(cities=(default_cities["Amsterdam"], default_cities["Essen"]), length=3, color=Color.YELLOW),
Route(cities=(default_cities["Essen"], default_cities["Frankfurt"]), length=2, color=Color.GREEN),
Route(cities=(default_cities["Amsterdam"], default_cities["Frankfurt"]), length=2, color=Color.WHITE),
Route(cities=(default_cities["Bruxelles"], default_cities["Frankfurt"]), length=2, color=Color.BLUE),
Route(cities=(default_cities["Paris"], default_cities["Frankfurt"]), length=3, color=Color.WHITE),
Route(cities=(default_cities["Paris"], default_cities["Frankfurt"]), length=3, color=Color.ORANGE),
Route(cities=(default_cities["Frankfurt"], default_cities["Munchen"]), length=2, color=Color.PINK),
Route(cities=(default_cities["Munchen"], default_cities["Zurich"]), length=2, color=Color.YELLOW),
Route(cities=(default_cities["Zurich"], default_cities["Paris"]), length=3, color=Color.NEUTRAL),
Route(cities=(default_cities["Zurich"], default_cities["Marseille"]), length=2, color=Color.PINK),
Route(cities=(default_cities["Marseille"], default_cities["Roma"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Roma"], default_cities["Venezia"]), length=2, color=Color.BLACK),
Route(cities=(default_cities["Venezia"], default_cities["Zurich"]), length=2, color=Color.GREEN),
Route(cities=(default_cities["Venezia"], default_cities["Munchen"]), length=2, color=Color.BLUE),
Route(cities=(default_cities["Roma"], default_cities["Palermo"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Palermo"], default_cities["Brindisi"]), length=3, color=Color.NEUTRAL),
Route(cities=(default_cities["Brindisi"], default_cities["Roma"]), length=2, color=Color.WHITE),
Route(cities=(default_cities["Brindisi"], default_cities["Athena"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Athena"], default_cities["Smyrna"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Palermo"], default_cities["Smyrna"]), length=6, color=Color.NEUTRAL),
Route(cities=(default_cities["Athena"], default_cities["Sofia"]), length=3, color=Color.PINK),
Route(cities=(default_cities["Sofia"], default_cities["Saraevo"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Sofia"], default_cities["Bucharest"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Bucharest"], default_cities["Budapest"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Saraevo"], default_cities["Athena"]), length=4, color=Color.GREEN),
Route(cities=(default_cities["Saraevo"], default_cities["Zagreb"]), length=3, color=Color.RED),
Route(cities=(default_cities["Saraevo"], default_cities["Budapest"]), length=3, color=Color.PINK),
Route(cities=(default_cities["Zagreb"], default_cities["Venezia"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Zagreb"], default_cities["Wien"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Zagreb"], default_cities["Budapest"]), length=2, color=Color.ORANGE),
Route(cities=(default_cities["Wien"], default_cities["Budapest"]), length=1, color=Color.RED),
Route(cities=(default_cities["Wien"], default_cities["Budapest"]), length=1, color=Color.WHITE),
Route(cities=(default_cities["Wien"], default_cities["Munchen"]), length=3, color=Color.ORANGE),
Route(cities=(default_cities["Wien"], default_cities["Berlin"]), length=3, color=Color.GREEN),
Route(cities=(default_cities["Berlin"], default_cities["Frankfurt"]), length=3, color=Color.BLACK),
Route(cities=(default_cities["Berlin"], default_cities["Frankfurt"]), length=3, color=Color.RED),
Route(cities=(default_cities["Berlin"], default_cities["Essen"]), length=2, color=Color.BLUE),
Route(cities=(default_cities["Essen"], default_cities["København"]), length=3, color=Color.NEUTRAL),
Route(cities=(default_cities["Essen"], default_cities["København"]), length=3, color=Color.NEUTRAL),
Route(cities=(default_cities["København"], default_cities["Stockholm"]), length=3, color=Color.WHITE),
Route(cities=(default_cities["København"], default_cities["Stockholm"]), length=3, color=Color.YELLOW),
Route(cities=(default_cities["Berlin"], default_cities["Danzic"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Danzic"], default_cities["Warszawa"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Berlin"], default_cities["Warszawa"]), length=4, color=Color.PINK),
Route(cities=(default_cities["Berlin"], default_cities["Warszawa"]), length=4, color=Color.YELLOW),
Route(cities=(default_cities["Wien"], default_cities["Warszawa"]), length=4, color=Color.BLUE),
Route(cities=(default_cities["Warszawa"], default_cities["Kyiv"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Budapest"], default_cities["Kyiv"]), length=6, color=Color.NEUTRAL),
Route(cities=(default_cities["Bucharest"], default_cities["Kyiv"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Danzic"], default_cities["Riga"]), length=3, color=Color.BLACK),
Route(cities=(default_cities["Riga"], default_cities["Petrograd"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Stockholm"], default_cities["Petrograd"]), length=8, color=Color.NEUTRAL),
Route(cities=(default_cities["Petrograd"], default_cities["Wilno"]), length=4, color=Color.BLUE),
Route(cities=(default_cities["Petrograd"], default_cities["Moskva"]), length=4, color=Color.WHITE),
Route(cities=(default_cities["Moskva"], default_cities["Smolensk"]), length=2, color=Color.ORANGE),
Route(cities=(default_cities["Smolensk"], default_cities["Wilno"]), length=3, color=Color.YELLOW),
Route(cities=(default_cities["Smolensk"], default_cities["Kyiv"]), length=3, color=Color.RED),
Route(cities=(default_cities["Wilno"], default_cities["Kyiv"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Wilno"], default_cities["Warszawa"]), length=3, color=Color.RED),
Route(cities=(default_cities["Wilno"], default_cities["Riga"]), length=4, color=Color.GREEN),
Route(cities=(default_cities["Moskva"], default_cities["Kharkov"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Kyiv"], default_cities["Kharkov"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Kharkov"], default_cities["Rostov"]), length=2, color=Color.GREEN),
Route(cities=(default_cities["Rostov"], default_cities["Sevastopol"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Rostov"], default_cities["Sochi"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Sevastopol"], default_cities["Sochi"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Sevastopol"], default_cities["Bucharest"]), length=4, color=Color.WHITE),
Route(cities=(default_cities["Constantinople"], default_cities["Sevastopol"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Constantinople"], default_cities["Angora"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Constantinople"], default_cities["Smyrna"]), length=2, color=Color.NEUTRAL),
Route(cities=(default_cities["Constantinople"], default_cities["Sofia"]), length=3, color=Color.BLUE),
Route(cities=(default_cities["Constantinople"], default_cities["Bucharest"]), length=3, color=Color.YELLOW),
Route(cities=(default_cities["Angora"], default_cities["Smyrna"]), length=3, color=Color.ORANGE),
Route(cities=(default_cities["Angora"], default_cities["Erzurum"]), length=3, color=Color.BLACK),
Route(cities=(default_cities["Erzurum"], default_cities["Sevastopol"]), length=4, color=Color.NEUTRAL),
Route(cities=(default_cities["Erzurum"], default_cities["Sochi"]), length=3, color=Color.RED),
)
60 changes: 60 additions & 0 deletions src/ticket_to_ride/default_components/europe/tickets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# This project is implemented exclusively for learning purposes and assumes no commercial use.
# Neither Yury Fedotov nor organizations he is affiliated with claim any rights to the "Ticket to Ride" trademark,
# game rules or other game-related artifacts. "Ticket to Ride" was designed by Alan R. Moon and released
# by Days of Wonder. To the best of author's knowledge, the trademark is owned by Days of Wonder, Inc.
# All rights to the original game and its elements are owned by their respective holders.
# For more information about the game, please visit
# the official Days of Wonder website: https://www.daysofwonder.com/ticket-to-ride/.
"""Default destination tickets for the Europe game version."""
from ticket_to_ride import Ticket

from .cities import default_cities

default_tickets = frozenset((
Ticket(origin=default_cities["Athena"], destination=default_cities["Angora"], face_value=5),
Ticket(origin=default_cities["Budapest"], destination=default_cities["Sofia"], face_value=5),
Ticket(origin=default_cities["Frankfurt"], destination=default_cities["København"], face_value=5),
Ticket(origin=default_cities["Rostov"], destination=default_cities["Erzurum"], face_value=5),
Ticket(origin=default_cities["Sofia"], destination=default_cities["Smyrna"], face_value=5),
Ticket(origin=default_cities["Kyiv"], destination=default_cities["Petrograd"], face_value=6),
Ticket(origin=default_cities["Zurich"], destination=default_cities["Brindisi"], face_value=6),
Ticket(origin=default_cities["Zurich"], destination=default_cities["Budapest"], face_value=6),
Ticket(origin=default_cities["Warszawa"], destination=default_cities["Smolensk"], face_value=6),
Ticket(origin=default_cities["Zagreb"], destination=default_cities["Brindisi"], face_value=6),
Ticket(origin=default_cities["Paris"], destination=default_cities["Zagreb"], face_value=7),
Ticket(origin=default_cities["Brest"], destination=default_cities["Marseille"], face_value=7),
Ticket(origin=default_cities["London"], destination=default_cities["Berlin"], face_value=7),
Ticket(origin=default_cities["Edinburgh"], destination=default_cities["Paris"], face_value=7),
Ticket(origin=default_cities["Amsterdam"], destination=default_cities["Pamplona"], face_value=7),
Ticket(origin=default_cities["Roma"], destination=default_cities["Smyrna"], face_value=8),
Ticket(origin=default_cities["Palermo"], destination=default_cities["Constantinople"], face_value=8),
Ticket(origin=default_cities["Saraevo"], destination=default_cities["Sevastopol"], face_value=8),
Ticket(origin=default_cities["Madrid"], destination=default_cities["Dieppe"], face_value=8),
Ticket(origin=default_cities["Barcelona"], destination=default_cities["Bruxelles"], face_value=8),
Ticket(origin=default_cities["Paris"], destination=default_cities["Wien"], face_value=8),
Ticket(origin=default_cities["Barcelona"], destination=default_cities["Munchen"], face_value=8),
Ticket(origin=default_cities["Brest"], destination=default_cities["Venezia"], face_value=8),
Ticket(origin=default_cities["Smolensk"], destination=default_cities["Rostov"], face_value=8),
Ticket(origin=default_cities["Marseille"], destination=default_cities["Essen"], face_value=8),
Ticket(origin=default_cities["Kyiv"], destination=default_cities["Sochi"], face_value=8),
Ticket(origin=default_cities["Madrid"], destination=default_cities["Zurich"], face_value=8),
Ticket(origin=default_cities["Berlin"], destination=default_cities["Bucharest"], face_value=8),
Ticket(origin=default_cities["Bruxelles"], destination=default_cities["Danzic"], face_value=9),
Ticket(origin=default_cities["Berlin"], destination=default_cities["Roma"], face_value=9),
Ticket(origin=default_cities["Angora"], destination=default_cities["Kharkov"], face_value=10),
Ticket(origin=default_cities["Riga"], destination=default_cities["Bucharest"], face_value=10),
Ticket(origin=default_cities["Essen"], destination=default_cities["Kyiv"], face_value=10),
Ticket(origin=default_cities["Venezia"], destination=default_cities["Constantinople"], face_value=10),
Ticket(origin=default_cities["London"], destination=default_cities["Wien"], face_value=10),
Ticket(origin=default_cities["Athena"], destination=default_cities["Wilno"], face_value=11),
Ticket(origin=default_cities["Stockholm"], destination=default_cities["Wien"], face_value=11),
Ticket(origin=default_cities["Berlin"], destination=default_cities["Moskva"], face_value=12),
Ticket(origin=default_cities["Amsterdam"], destination=default_cities["Wilno"], face_value=12),
Ticket(origin=default_cities["Frankfurt"], destination=default_cities["Smolensk"], face_value=13),
Ticket(origin=default_cities["Lisboa"], destination=default_cities["Danzic"], face_value=20),
Ticket(origin=default_cities["Brest"], destination=default_cities["Petrograd"], face_value=20),
Ticket(origin=default_cities["Palermo"], destination=default_cities["Moskva"], face_value=20),
Ticket(origin=default_cities["København"], destination=default_cities["Erzurum"], face_value=21),
Ticket(origin=default_cities["Edinburgh"], destination=default_cities["Athena"], face_value=21),
Ticket(origin=default_cities["Cadiz"], destination=default_cities["Stockholm"], face_value=21),
))
Loading

0 comments on commit 02dc0a5

Please sign in to comment.