Git Product home page Git Product logo

playshogi's Introduction

PlayShogi

An interactive site where you can play shogi puzzles and improve your abilities.

Features

  • Learn: Resources on how to play shogi along with links for further studies
  • Puzzles: A place where you can solve tsumeshogi problems from a collection
  • Practice: tool to explore openings, play against computers, or have a free board to edit
  • Collections: Public and Private game collections

Development

Development instructions can be found in the CONTRIBUTING document here

Deployment

See documentation here

playshogi's People

Contributors

ddugovic avatar dependabot[bot] avatar nibih avatar sleepingchinchilla avatar tellmarch avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

playshogi's Issues

Reveal Threats coaching mode

Is your feature request related to a problem? Please describe.
Foreign players may appreciate a mode which cautions players when they are about to hang a piece. Thanks to @JohnChernoff for the suggestion which is similar to a feature in Kasparov's Gambit and the ChessMaster series:
https://clips.twitch.tv/LightBlightedWatermelonPeteZarollTie

Describe the solution you'd like
If there is a game play/practice zone, that zone should caution a player who is about to make a large blunder, and reveal the opponent's threat(s).
https://clips.twitch.tv/LightBlightedWatermelonPeteZarollTie

Describe alternatives you've considered
Always highlight squares the opponent is attacking.
Audibly announce check, threatmate, attacks on the rook or bishop, etc.

Additional context
Maybe also caution against illegal pawn drops or other illegal moves which beginners struggle with.

Guess The Move

Is your feature request related to a problem? Please describe.
A useful training exercise is Guess The Move, whereby a player follows a game between stronger players and attempts to guess the next move.

Describe the solution you'd like
Add such a training exercise, possibly with user-generated content.

Describe alternatives you've considered
Maybe link to games from Wikipedia, 81Dojo, etc. and trust the players to do the exercise on their own.

Additional context
Guess The Move has been a feature on FICS, ICC, and US Chess Live, operating as a bot which many players could spectate (either from a script/database of games, or on live games). It has also been in print for decades in book and magazine form (e.g. Evans' book What's the Best Move? or a similar Chess Life column, which offers partial credit for incorrect answers).

Add username validation

There are a couple oddities that are produced from a lack of user validation when registering a new user.

image

  1. Usernames are case sensitive.

As you can see in the above screenshot, there is an entry for both "Koshiro" and "koshiro" in the high scores table. I can imagine this would generate issues ranging from accidental account creation to zany antics involving user impersonation.

Perhaps a solution similar to what which does would be a viable alternative? The username itself must be all lowercase but the display name in the URL can have arbitrary capitalization.

  1. Usernames are allowed to have special characters such as "@" in the name.

Note that there is also a user called "@shogi.brasil" in the screenshot. Perhaps it will never be an issue, but oftentimes allowing special symbols in the username will cause unexpected behavior when attempting to parse the stream. The problem can be sidestepped by restricting the number of valid characters to create a username.

Dobutsu

Is your feature request related to a problem? Please describe.
I am bad at dobutsu.

Describe the solution you'd like
Include dobutsu problems.

Describe alternatives you've considered
Include dobutsu teaching materials of any form, if any exist?

Additional context
The animal pieces are cute!

DB autoreconnect

EVERE: Error looking up the user in db
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 675,921,841 milliseconds ago. The last packet sent successfully to the server was 675,921,842 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.

Tsume: Why is my move incorrect?

Is your feature request related to a problem? Please describe.
When playing an incorrect move, the website doesn't explain why it is wrong.

Describe the solution you'd like
Add a "why?" button when the answer is wrong, showing the refutation (as computed by the engine). Let the user play both sides of the board until they click back or next.

Feature Request: Ability to export the initial position from TsumeView mode in SFEN format.

Is your feature request related to a problem? Please describe.
I want to be able to access the position of the initial checkmate problem as a SFEN (or KIF) file to make it easier to do things like modifying tsumeshogi problems or for easier input into Anki using the Shogi plugin. The whole solution available as a KIF export would also be cool, but a simple SFEN would still be a huge quality of life improvement.

Describe the solution you'd like
An extra button available somewhere in the TsumeView that allows you to view the SFEN and/or copy it to the clipboard. The Shogi Playground (Mog Project) website has a good example of a SFEN export in their "Share" options.

Example screenshot of Shogi Playground's version:
https://user-images.githubusercontent.com/600562/89496541-6390d800-d76f-11ea-847f-68864e10c57d.PNG

Promotion puzzles

Is your feature request related to a problem? Please describe.
Players sometimes have difficulty reading and evaluating breakthroughs to promote one or more pieces.

Describe the solution you'd like
Allow for "promotion" puzzles (user-submitted or otherwise).

Describe alternatives you've considered
Have some sort of training materials about common breakthroughs.

Additional context
This "promotion" exercise is similar to one from Maurice Ashley Teaches Chess (1995) where the object was to break through the opponent's pawns to promote a pawn.

Upgrade to GWT 2.9

Is your feature request related to a problem? Please describe.
Builds could be faster. Also, when developing new features (such as kifu import) if feasible do not use deprecated technology.

Describe the solution you'd like
Upgrade GWT and Elemental2 to current versions, then re-evaluate.
https://stackoverflow.com/a/52083441

Describe alternatives you've considered

  1. Add playshogi/playshogi-website-gwt-mvn/src/test and remove files until it can be identified why builds are slow
  2. Enable parallel execution in builds, if feasible

Additional context
https://gist.github.com/branflake2267/d424e4a0c0b371e3dd9d15bfd3514429 is an example file reader.

RED SHOUTS

The final text of going through hellish tsumeshogi challenge is "warmly" welcoming you with RED SHOUT. Good job.

High-resolution graphics (zoom)

Is your feature request related to a problem? Please describe.
Although I can manually zoom in on a page, the graphics do not scale perfectly.

Describe the solution you'd like
Allow for high-resolution large graphics

Describe alternatives you've considered
Convert existing graphics into SVG?

Additional context
Most monitors these days support a variety of high resolutions.

Allow piece deselection

Describe the bug
To clear piece selection I need to click an invalid move.

To Reproduce
Steps to reproduce the behavior:

  1. Click a piece (either on the board or piece stand) to select it,
  2. Click again to attempt to deselect it.

Expected behavior
Piece is no longer selected.

Desktop (please complete the following information):

  • OS: Windows 10
  • Browser: MS Edge
  • Version: current

Possibility to merge several Game collections

Is your feature request related to a problem? Please describe.

I am studying opening ideas throug IA and so I try out several IAs on a specific opening.
Basically 1 series of games played by an IA becomes 1 Game collection.
Since I have several I would like to merge several collections into 1.

Describe the solution you'd like
When building a new collection have an option to include games from other game collections.
( This way you don't need to duplicate the games)

Describe alternatives you've considered
If I want to do it manually i will have to duplicate the games I already entered into a bigger collection, it's a waste of time and a waste of storage ressource.

Additional context
This feature could be used if you want to split&merge games played by amateurs/pro/IAs.

Pieces in hand order

Pieces in hand order should be from the strongest to weakest. (like on 81dojo)

persist sessions

Currently they are only kept in memory, so they don't survive a server restart.

Bad Problems: Koma Amari mainline, unintended alternate solutions, unaccepted valid alternate lines, etc.

Courtesy of Alexei, these problems all have issues according to him.

Cooks found so far (problems 1-400 all systematically reviewed by Alexei):

  • 31 koma amari
  • 38 doesn't accept 72H
  • 46 doesn't accept 12R=
  • 48 doesn't accept 83H
  • 50 koma amari
  • 54 koma amari
  • 59 doesn't accept 53B=
  • 68 koma amari
  • 77 doesn't accept 65H
  • 87 doesn't accept 41G*
  • 93 doesn't accept 12R=
  • 101 doesn't accept 31B=
  • 104 doesn't accept 33S=
  • 110 koma amari
  • 114 doesn't accept 23B=
  • 155 doesn't accept 91B and 82B
  • 158 doesn't accept 33B=
  • 162 koma amari
  • 163 doesn't accept 13B=
  • 170 doesn't accept 23S=
  • 171 koma amari
  • 176 doesn't accept 13B=
  • 187 koma amari
  • 193 12G accepted at first but wrong later
  • 198 doesn't accept 41B= and 14B+ and 14B=
  • 203 doesn’t accept 46H
  • 206 doesn’t accept other bishop moves along the 61-16 diagonal
  • 210 doesn’t accept 31B=
  • 219 doesn’t accept other moves along the 12-89 diagonal
  • 224 doesn't accept 32B=
  • 227 koma amari
  • 240 doesn't accept 51B=
  • 248 doesn't accept 42B=
  • 250 doesn't accept 41H
  • 255 doesn't accept 43B+
  • 257 doesn't accept 23R=
  • 273 doesn't accept 45R=
  • 292 doesn't accept 22R=
  • 296 doesn't accept 21R+
  • 298 doesn't accept 32B=
  • 303 koma amari
  • 304 koma amari
  • 311 is a genuine cook 31D
  • 329 doesn't accept 42R=
  • 353 doesn't accept 14L
  • 357 doesn't accept other moves on 2nd rank aside from 32R
  • 359 doesn't accept 91B+82B
  • 366 doesn't accept 13R=
  • 367 doesn't accept 13B=
  • 371 koma amari
  • 381 29D(26) isn’t accepted and is the only correct move
  • 384 koma amari
  • 500 doesn't allow 13S=

Certificate store

Is your feature request related to a problem? Please describe.
Players enjoy having a sense of achievement.

Describe the solution you'd like
Allow players somehow to purchase signed certificates of achievement.

Describe alternatives you've considered
Have some online way of indicating achievement like https://projecteuler.net/ does.

Additional context
Do your best! It's good to inspire players somehow.

Even if the move is illegal, the promotion window still pops out

Describe the bug
If you click on a piece that can promote and then click on any other square, promotion window will pop out.

To Reproduce
Steps to reproduce the behavior:

  1. Go to tsume problems
  2. Click on any piece that can promote
  3. click on any other square

Expected behavior
The piece becomes unselected

Github Usage Suggestion: Add labels to github issues based on category of issue (bugs, feature request, etc)

Is your feature request related to a problem? Please describe.
When reading through the github issues, it's clear that the Issues are a bit disorganized. This repository will clearly benefit from labeling issues for easier filtering. The problem will get worse as more people provide feedback. Starting a process of labeling issues now before feedback gets overwhelming is a big quality of life improvement!

Describe the solution you'd like
Most major projects have a system for labeling their issues for easier organization. Some examples I've seen in other projects: Bug, Duplicate, Feature Request, Invalid (not a bug), Enhancement, Question, wontfix, help wanted, and "good first issue" (issue that is useful for onboarding new contributors).

If all the devs are too busy to go through and apply labels, I might suggest assigning someone trusted (applying labels apparently requires write access to the repository) as a "collaborator" for the repository.

Feature Request: Ability to comment on problems.

Is your feature request related to a problem? Please describe.
Sometimes when there is a particularly interesting problem, I'll want to share my amazement with the world! Being able to make comments on a problem, just like how ChessTempo does, would educate a lot of people on interesting alternative variations, similar types of problems, or even the answers to the most elusive question of all "Why does this random pawn/piece have to be all the way down the board for the tsume to work?!"

Describe the solution you'd like
Only having the ability to comment and a way to "upvote" high quality comments would be a gigantic improvement. If the comments also support an embedded syntax to play/display variations, that would be even better. If you don't want to develop your own comment system, perhaps it would be easy to integrate an off-the-shelf solution such as Disqus.

Describe alternatives you've considered
The best alternative I can think of would be to include a thumbs up / thumbs down rating system. This will help determine if a problem is of low quality and should be removed from the database. The advantage of this system is that it would not require any moderation, arbitrary user input, or very much additional data storage. You could just have a couple of additional fields in the database for number of upvotes/downvotes.

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.