Hi ๐
I'm a senior technologist with expertise in Ruby, Python and Java (and more recently, Kotlin).
Play the abstract strategy game "Go" and variants
Hi ๐
I'm a senior technologist with expertise in Ruby, Python and Java (and more recently, Kotlin).
Every few turns stones "slip" in a certain direction, depending on the board. Stones are locked in place if there is no free space to slide into.
This can be visualised as a 3D landscape where the stones move downhill. It should be possible for stones to be captured in this way.
File
New Game
Load Game
Save Game
Exit
Edit
Undo
Game
Pass
Resign
Help
How to Play
About
Dialogs displayed on invalid moves and game over
Moves
Marking dead stones
Confirming dead stones
These all should go through the controller object, as this is what keeps track of the local/remote players and clients need to ignore anything originating from themselves.
Basic settings should be easy enough. Board will be more tricky. Use XML or something similar for this.
Some things that would be useful to define:
name
number of dimensions
Individual points/connnections
Points/connections which get repeated using some kind of lattice structure
Masked areas which contain no points
extras:
Ability to define connections for multiple stones using expressions like
Rengo and Multicolour go
Any kind of player can play rengo with basic settings, but anything more complicated rules out using GTP
Single player only at the moment
Rather than opening a game window when the game is started, we should show a basic window that allows different sorts of games to be created.
The game creation process should allow you to separately configure the players, the board the game is played on, the rules of the game, and things like komi, handicap, and timing.
There should be a simpler way to setup standard go games - 9x9, 13x13 and 19x19 with no weird rules.
GTP games should also use the simplified version.
Build on top of a lattice
Your stone has a random chance of being placed somewhere other than where you clicked. Continuous distribution would be nice - e.g. there's a small chance it could go to the complete opposite side of the board.
Multiplayer
Players may be allied or enemies. There are 2 main ways a foreign stone may act towards you:
Capturing a stone you are not hostile towards would be suicide.
A stone may also be neutral, i.e. friendly towards two sides that are hostile towards each other. This means that it will connect to both sides. If two opposing groups are linked by a neutral stone, both groups gain the liberties of the neural stone, but not each other's liberties.
Should be possible to have a game mode where you can change allegiances at any time but each side still holds their own territory and scores independently.
But there should also be a game mode where allegiances do not change and allies share territory and score.
Ensure everything is documented. Cleanup the docs for geometry and gui stuff.
It currently redraws the whole board once for every grid change. We either need to make the display watch the board for changes (moves) instead of the grid, or do a partial repaint instead.
Base rules:
No liberties = stone is dead
Play order depends on team setup
Anything else can be changed
game.current_player returns player color instead of the object
Move and player objects are a mess
Functionality to support creating & playing games against GTP players. (Some of this is already there but is no longer compatible with the current codebase)
Listen on a socket for players/connect to another host
Handle sending game setup, sending moves back and forth & marking dead stones at the end
Extract all strings and make them translatable. Add menu to switch languages. This can wait until the GUI is more developed.
2D boards as surfaces of 3D objects
Cylinder, Mobius Strip, etc.
Marking dead stones in gui
Scoring
You can't see your stones after they've been played. Could be made easier by having the colour stay for a few turns.
Parts of the board slowly disappear throughout the game. Stones can be destroyed or captured in this way.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.