GithubHelp home page GithubHelp logo

tsaglam / carcassonne Goto Github PK

View Code? Open in Web Editor NEW
94.0 7.0 15.0 121.43 MB

A digital version of the board game Carcassonne, implemented in Java. This desktop computer game supports up to five players at the same time (shared-screen multiplayer mode).

License: Eclipse Public License 2.0

Java 100.00%
java swing carcassonne board-game multiplayer computer-game tile-based desktop

carcassonne's Introduction

carcassonne's People

Contributors

paulnavid avatar tsaglam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

carcassonne's Issues

Sometimes tiles can not be placed in otherwise legal positions

grafik

As seen in this graphic, the game will not allow me to place the tile in the outlined position. I am currently trying to find out why, but maybe this is a known problem. I would like to play games of carcassonne with a lot of tiles and / or custom tiles, so i really like this program.

grafik
In this example the piece can also not be placed in the marked spot despite the legality of the placement.

I assume this has something to do with how edges of tiles are defined.

Nonclickable UI on nonstandard TileType Size

grafik
if the number of different tile types is changed it is possible that the ui doesnt allow the user to click the button to accept a new configuration, as it is not visible on screen.
This currently only applies to people who are fumbling around in the code, but based on comments i assume it should be possible later for users to add custom tiles.
In that situation the UI should always be clickable

Support (Open)WebStart

Hi,

very cool project ๐Ÿ‘
To make it more easy for non technical people to use you can provide a JNLP based application that can be started by using OpenWebStart / Github Repo. By doing so the user do not need to know how to get and install a Java Runtime and how to start a JAR file.

Test Suite

Does there exist a test suite for this project?

Adjust the highlight edge Tile

you know ,for now in the game grid, if you turn, you will get one or much Tiles , and this grid's candidate area will be highlight.
image

but for you Tile , you only can set it in a limit area, so I think we can have two ways of highlight ,

  1. represent this area was edge ,
  2. represent this area was edge, and you can set your Tile into this area after you do some rotate.

Adapt AI behavior to avoid enclaves of free spots if multiple equally well-scoring moves are available

I should adapt the improve the AI behavior to avoid enclaves of free spots if multiple equally well-scoring moves are available. This makes the grids built by the AI more visually pleasing by reducing the number of holes in the grid. Moreover, this should not affect the AI performance, as this is only done for moves that are equally well-scoring.

Holes in the grid after a three-player AI-only game with doubled stack size and a large grid:

holes in the grid

Final patterns
GridPattern[type: ROAD, size: 3, complete: false, disbursed: false, meeples: [], on: [(18|9), (18|10), (18|11)]
GridPattern[type: FIELDS, size: 19, complete: false, disbursed: false, meeples: [FieldsMeeple by Player 1 placed on (18|9) at EAST ], on: [(18|9), (19|9), (19|10), (20|10), (20|11), (19|11), (18|10), (18|11), (19|11), (20|11), (18|12), (18|13), (17|13), (16|13), (17|12), (17|11), (16|11), (18|10), (18|9)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [], on: [(19|10), (19|9), (20|10), (19|11), (18|10), (20|11), (18|11), (18|9)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(19|9)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(23|9)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(23|9), (23|10)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(23|9)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(23|9)]
GridPattern[type: MONASTERY, size: 7, complete: false, disbursed: false, meeples: [], on: [(24|10), (25|10), (24|11), (23|10), (25|11), (23|11), (23|9)]
GridPattern[type: MONASTERY, size: 6, complete: false, disbursed: false, meeples: [], on: [(22|10), (23|10), (22|11), (21|10), (23|9), (23|11)]
GridPattern[type: ROAD, size: 3, complete: true, disbursed: false, meeples: [], on: [(19|10), (19|11), (20|11)]
GridPattern[type: ROAD, size: 2, complete: false, disbursed: false, meeples: [], on: [(20|10), (20|11)]
GridPattern[type: FIELDS, size: 3, complete: false, disbursed: false, meeples: [], on: [(20|10), (21|10), (20|11)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(21|10)]
GridPattern[type: FIELDS, size: 7, complete: false, disbursed: false, meeples: [], on: [(21|10), (22|10), (23|10), (24|10), (25|10), (24|11), (22|11)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(22|10)]
GridPattern[type: CASTLE, size: 8, complete: false, disbursed: false, meeples: [CastleMeeple by Player 2 placed on (22|11) at SOUTH ], on: [(23|10), (23|11), (24|11), (25|11), (25|10), (26|11), (22|11), (22|12)]
GridPattern[type: MONASTERY, size: 3, complete: false, disbursed: false, meeples: [], on: [(16|11), (17|11), (17|12)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(17|11), (17|12)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [], on: [(19|12), (19|11), (20|12), (18|12), (20|11), (20|13), (18|13), (18|11)]
GridPattern[type: CASTLE, size: 4, complete: false, disbursed: false, meeples: [CastleMeeple by Player 2 placed on (19|12) at WEST ], on: [(19|11), (19|12), (20|12), (18|12)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(20|11)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(20|11), (20|12)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(23|11), (23|12)]
GridPattern[type: FIELDS, size: 6, complete: false, disbursed: false, meeples: [], on: [(23|11), (23|12), (24|12), (24|11), (25|12), (25|11)]
GridPattern[type: FIELDS, size: 71, complete: false, disbursed: false, meeples: [FieldsMeeple by Player 1 placed on (21|15) at SOUTH , FieldsMeeple by Player 0 placed on (24|13) at SOUTH ], on: [(23|11), (23|12), (22|12), (21|12), (20|12), (20|13), (21|13), (21|14), (22|14), (22|13), (21|15), (22|15), (23|15), (24|15), (24|14), (24|14), (24|14), (23|16), (24|16), (24|17), (25|17), (22|16), (21|16), (20|16), (20|15), (19|15), (19|14), (21|13), (21|12), (22|12), (23|12), (24|12), (24|13), (25|13), (25|14), (25|15), (26|15), (27|15), (27|14), (27|13), (26|13), (26|12), (26|11), (25|12), (25|11), (25|13), (25|14), (26|14), (26|11), (26|11), (26|14), (28|13), (27|12), (26|16), (27|16), (28|16), (26|17), (27|17), (27|18), (26|18), (25|17), (24|14), (24|14), (25|12), (24|12), (24|14), (23|13), (23|14), (22|14), (22|13), (24|14)]
GridPattern[type: ROAD, size: 7, complete: true, disbursed: false, meeples: [], on: [(25|11), (25|12), (25|13), (25|14), (26|14), (26|13), (24|12)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(26|11)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(26|11), (27|11), (27|12), (26|11)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(27|11)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(17|12), (17|13)]
GridPattern[type: ROAD, size: 7, complete: true, disbursed: false, meeples: [], on: [(20|12), (21|12), (22|12), (23|12), (21|13), (20|13), (21|13)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(20|12), (21|12), (21|13), (20|13)]
GridPattern[type: CASTLE, size: 4, complete: true, disbursed: false, meeples: [], on: [(22|12), (22|13), (23|13), (21|13)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(23|12), (24|12)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(23|12), (23|13)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(24|12), (24|13)]
GridPattern[type: CASTLE, size: 2, complete: false, disbursed: false, meeples: [], on: [(26|12), (27|12)]
GridPattern[type: ROAD, size: 3, complete: false, disbursed: false, meeples: [], on: [(27|12), (27|13), (28|13)]
GridPattern[type: FIELDS, size: 3, complete: false, disbursed: false, meeples: [], on: [(27|12), (27|13), (28|13)]
GridPattern[type: ROAD, size: 3, complete: true, disbursed: false, meeples: [], on: [(16|13), (17|13), (18|13)]
GridPattern[type: ROAD, size: 5, complete: true, disbursed: false, meeples: [], on: [(16|13), (16|14), (17|14), (18|14), (18|13)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(16|13)]
GridPattern[type: FIELDS, size: 6, complete: false, disbursed: false, meeples: [], on: [(16|13), (17|13), (17|14), (18|14), (18|13), (16|14)]
GridPattern[type: FIELDS, size: 86, complete: false, disbursed: false, meeples: [FieldsMeeple by Player 1 placed on (26|20) at CENTER , FieldsMeeple by Player 2 placed on (15|19) at SOUTH_WEST ], on: [(16|13), (16|14), (17|14), (17|15), (18|15), (18|14), (19|14), (19|15), (19|16), (20|16), (20|17), (21|16), (21|17), (22|16), (22|17), (23|16), (24|16), (24|17), (25|17), (25|18), (25|19), (26|19), (26|18), (25|20), (26|20), (26|21), (25|21), (25|22), (24|22), (23|22), (23|23), (22|22), (22|21), (23|21), (24|21), (21|21), (21|20), (21|19), (22|19), (22|20), (23|20), (23|19), (24|19), (24|20), (22|19), (22|18), (22|17), (21|18), (21|19), (20|19), (20|18), (19|18), (19|17), (19|19), (18|19), (18|18), (19|18), (19|17), (18|17), (18|16), (20|19), (20|20), (19|20), (18|20), (19|19), (18|19), (18|18), (17|18), (16|18), (16|19), (17|19), (15|19), (21|22), (20|22), (19|22), (19|23), (19|21), (19|20), (20|20), (20|21), (20|21), (27|21), (26|17), (26|18), (20|15), (18|13)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(18|13)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(21|13), (21|14)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(22|13), (22|14)]
GridPattern[type: CASTLE, size: 1, complete: true, disbursed: false, meeples: [], on: [(24|13)]
GridPattern[type: CASTLE, size: 1, complete: true, disbursed: false, meeples: [], on: [(26|13)]
GridPattern[type: CASTLE, size: 8, complete: false, disbursed: false, meeples: [CastleMeeple by Player 0 placed on (27|14) at EAST ], on: [(28|13), (29|13), (30|13), (30|14), (30|15), (29|14), (28|14), (27|14)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(29|13)]
GridPattern[type: MONASTERY, size: 5, complete: false, disbursed: false, meeples: [], on: [(30|14), (30|13), (30|15), (29|14), (29|13)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|13)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|13)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|13)]
GridPattern[type: ROAD, size: 10, complete: false, disbursed: false, meeples: [RoadMeeple by Player 0 placed on (21|16) at CENTER ], on: [(19|14), (19|15), (20|15), (20|16), (21|16), (22|16), (23|16), (24|16), (24|17), (25|17)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(19|14)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [], on: [(21|15), (21|14), (22|15), (21|16), (20|15), (22|14), (22|16), (20|16)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(22|14), (22|15)]
GridPattern[type: CASTLE, size: 3, complete: true, disbursed: false, meeples: [], on: [(23|14), (24|14), (23|15)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(26|14), (26|15)]
GridPattern[type: FIELDS, size: 2, complete: false, disbursed: false, meeples: [], on: [(28|14), (28|15)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(29|14)]
GridPattern[type: ROAD, size: 14, complete: false, disbursed: false, meeples: [RoadMeeple by Player 1 placed on (18|18) at CENTER , RoadMeeple by Player 2 placed on (20|19) at CENTER ], on: [(17|15), (18|15), (18|16), (18|17), (18|18), (18|19), (19|19), (20|19), (21|19), (22|19), (17|18), (16|18), (16|19), (15|19)]
GridPattern[type: FIELDS, size: 14, complete: false, disbursed: false, meeples: [FieldsMeeple by Player 1 placed on (15|17) at WEST ], on: [(17|15), (17|16), (18|16), (18|17), (17|17), (16|17), (15|17), (18|18), (17|18), (16|18), (16|19), (15|19), (18|15), (16|16)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [MonasteryMeeple by Player 2 placed on (17|16) at CENTER ], on: [(17|16), (17|15), (18|16), (17|17), (16|16), (18|15), (18|17), (16|17)]
GridPattern[type: MONASTERY, size: 9, complete: true, disbursed: false, meeples: [], on: [(19|16), (19|15), (20|16), (19|17), (18|16), (20|15), (20|17), (18|17), (18|15)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(22|15), (22|16)]
GridPattern[type: CASTLE, size: 3, complete: false, disbursed: false, meeples: [CastleMeeple by Player 0 placed on (24|16) at NORTH ], on: [(24|15), (25|15), (24|16)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [MonasteryMeeple by Player 0 placed on (26|16) at CENTER ], on: [(26|16), (26|15), (27|16), (26|17), (27|15), (27|17), (25|17), (25|15)]
GridPattern[type: CASTLE, size: 4, complete: true, disbursed: false, meeples: [], on: [(27|15), (28|15), (28|16), (27|16)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|15)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|15)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|15)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(16|16), (16|17)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(16|16)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(16|16)]
GridPattern[type: MONASTERY, size: 4, complete: false, disbursed: false, meeples: [], on: [(15|17), (16|17), (16|16), (16|18)]
GridPattern[type: ROAD, size: 3, complete: true, disbursed: false, meeples: [], on: [(19|16), (19|17), (19|18)]
GridPattern[type: CASTLE, size: 8, complete: false, disbursed: false, meeples: [CastleMeeple by Player 1 placed on (23|17) at NORTH , CastleMeeple by Player 0 placed on (20|17) at SOUTH ], on: [(23|16), (23|17), (24|17), (22|17), (21|17), (20|17), (20|18), (19|17)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(24|16)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(27|16), (27|17)]
GridPattern[type: CASTLE, size: 2, complete: false, disbursed: false, meeples: [], on: [(28|16), (28|17)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(16|17), (16|18)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(17|17), (17|18)]
GridPattern[type: FIELDS, size: 5, complete: false, disbursed: false, meeples: [], on: [(21|17), (21|18), (22|18), (22|17), (20|18)]
GridPattern[type: ROAD, size: 4, complete: true, disbursed: false, meeples: [], on: [(22|17), (22|18), (21|18), (20|18)]
GridPattern[type: ROAD, size: 2, complete: false, disbursed: false, meeples: [RoadMeeple by Player 2 placed on (23|18) at CENTER ], on: [(23|17), (23|18)]
GridPattern[type: FIELDS, size: 2, complete: false, disbursed: false, meeples: [], on: [(23|17), (23|18)]
GridPattern[type: FIELDS, size: 2, complete: false, disbursed: false, meeples: [], on: [(23|17), (23|18)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(25|17)]
GridPattern[type: ROAD, size: 3, complete: true, disbursed: false, meeples: [], on: [(25|17), (26|17), (26|18)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(27|17), (27|18)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(27|17), (28|17), (28|18), (27|18)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(17|18), (17|19)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(19|18), (19|19)]
GridPattern[type: CASTLE, size: 3, complete: true, disbursed: false, meeples: [], on: [(22|18), (23|18), (23|19)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [MonasteryMeeple by Player 2 placed on (24|19) at CENTER ], on: [(24|19), (25|19), (24|20), (23|19), (25|18), (25|20), (23|20), (23|18)]
GridPattern[type: CASTLE, size: 10, complete: true, disbursed: false, meeples: [], on: [(25|18), (26|18), (27|18), (28|18), (29|18), (29|19), (30|19), (28|19), (28|20), (27|19)]
GridPattern[type: MONASTERY, size: 8, complete: false, disbursed: false, meeples: [], on: [(25|19), (25|18), (26|19), (25|20), (24|19), (26|18), (26|20), (24|20)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(26|18), (26|19)]
GridPattern[type: FIELDS, size: 3, complete: false, disbursed: false, meeples: [], on: [(26|18), (26|19), (27|19)]
GridPattern[type: FIELDS, size: 2, complete: false, disbursed: false, meeples: [], on: [(28|18), (28|19)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(29|18)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(29|18)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(29|18)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(16|19)]
GridPattern[type: CASTLE, size: 3, complete: true, disbursed: false, meeples: [], on: [(17|19), (18|19), (18|20)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(19|19), (19|20)]
GridPattern[type: ROAD, size: 5, complete: true, disbursed: false, meeples: [], on: [(22|19), (23|19), (23|20), (22|20), (22|19)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(22|19), (23|19), (23|20), (22|20)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(26|19), (26|20)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(29|19)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|19)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(30|19)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(18|20), (19|20)]
GridPattern[type: ROAD, size: 4, complete: false, disbursed: false, meeples: [], on: [(18|20), (18|21), (17|21), (17|22)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(18|20)]
GridPattern[type: FIELDS, size: 7, complete: false, disbursed: false, meeples: [], on: [(18|20), (19|20), (19|21), (18|21), (17|21), (17|22), (19|22)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(18|20), (18|21), (17|21), (17|22)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(19|20), (20|20)]
GridPattern[type: ROAD, size: 3, complete: false, disbursed: false, meeples: [], on: [(19|20), (19|21), (19|22)]
GridPattern[type: ROAD, size: 8, complete: true, disbursed: false, meeples: [], on: [(20|20), (21|20), (21|21), (22|21), (22|22), (21|22), (20|22), (20|21)]
GridPattern[type: ROAD, size: 2, complete: true, disbursed: false, meeples: [], on: [(20|20), (20|21)]
GridPattern[type: FIELDS, size: 9, complete: false, disbursed: false, meeples: [], on: [(20|20), (21|20), (21|21), (22|21), (22|22), (21|22), (20|22), (20|21), (20|21)]
GridPattern[type: CASTLE, size: 3, complete: true, disbursed: false, meeples: [], on: [(21|20), (22|20), (22|21)]
GridPattern[type: CASTLE, size: 6, complete: true, disbursed: false, meeples: [], on: [(23|20), (24|20), (25|20), (25|21), (24|21), (23|21)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(28|20)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(28|20)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(28|20)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(17|21)]
GridPattern[type: CASTLE, size: 4, complete: true, disbursed: false, meeples: [], on: [(19|21), (20|21), (21|21), (21|22)]
GridPattern[type: ROAD, size: 8, complete: true, disbursed: false, meeples: [], on: [(23|21), (24|21), (23|22), (24|22), (24|21), (25|22), (25|21), (24|21)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(23|21), (24|21), (24|22), (23|22)]
GridPattern[type: FIELDS, size: 4, complete: false, disbursed: false, meeples: [], on: [(24|21), (25|21), (25|22), (24|22)]
GridPattern[type: ROAD, size: 2, complete: false, disbursed: false, meeples: [], on: [(26|21), (27|21)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(26|21)]
GridPattern[type: FIELDS, size: 2, complete: false, disbursed: false, meeples: [], on: [(26|21), (27|21)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(27|21)]
GridPattern[type: CASTLE, size: 2, complete: true, disbursed: false, meeples: [], on: [(21|22), (21|23)]
GridPattern[type: MONASTERY, size: 4, complete: false, disbursed: false, meeples: [], on: [(23|23), (23|22), (24|22), (22|22)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(25|22)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(19|23)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(19|23)]
GridPattern[type: CASTLE, size: 1, complete: false, disbursed: false, meeples: [], on: [(21|23)]
GridPattern[type: FIELDS, size: 1, complete: false, disbursed: false, meeples: [], on: [(21|23)]
GridPattern[type: ROAD, size: 1, complete: false, disbursed: false, meeples: [], on: [(23|23)]

About internationalization

Hi.

I've internationalized your Java version of Carcassonne and added a Japanese locale in addition to the English one, but I wonder if it's needed?
It's not fully internationalized yet, and the internal error handling and exception handling are untouched, but can I send you a pull request?

I would appreciate it if you would consider it.

I compile my work list into a spreadsheet.
https://docs.google.com/spreadsheets/d/18gFQ-fRBKEtsUixTwGWbh5bhq8yKL0x7LH1ouW5mAXg/edit?usp=sharing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.