Giter VIP home page Giter VIP logo

nostalgia's Introduction

Nostalgia

Nostalgia is a chess program that supports three main modes: Human Vs Human, in which the user can play with himself (or with the others); Human Vs Computer, in which the user gets to play with the machine; and Computer Vs Computer, in which two instances of the engine (that may have different levels) would play with each other.

Human Vs Human sample game

Note: The AI implementation still needs a lot of improvements. Do not expect it to play at the same level as that of Stockfish.

How To Run

Nostalgia is (primarily) written in Scala. So to run the program, you need to have a Java Runtime Environment running on your machine. Detailed setup instructions will be provided soon.

Engine + GUI

Nostalgia has two main parts, the Engine and the Graphical User Interface (GUI).

The engine contains the AI implementation and is divided into four sub-parts: board representation, move generators, evaluators, and move searchers. The GUI is the interface with which the user would interact while using the program.

Technologies Used

Programming Languages: Scala, Java

GUI Framework/Library: JavaFX, ScalaFX

Version Control System: Git

Supported Platforms: Linux, Mac, Windows

Credits

Credit goes to Phobos for the wonderful set of chess piece assets. They really made me rethink about updating the UI for my program. I'll include proper acknowledgements for them as part of Nostalgia's upcoming feature-set.

nostalgia's People

Contributors

melvic-ybanez avatar morrme avatar

Stargazers

Anton Sviridov avatar  avatar Michail Liarmakopoulos avatar YoCoda avatar ebigram avatar Daniel Santana Rocha avatar Vel Wu avatar shyan avatar  avatar Pathikrit Bhowmick avatar  avatar Michael Steinkogler avatar Andriy Plokhotnyuk avatar dominick lombardo avatar Chema Cortés avatar Sanket Patil avatar Lutz Hühnken avatar  avatar

Watchers

James Cloos avatar Andriy Plokhotnyuk avatar  avatar

Forkers

d3v3l0 jjcosare

nostalgia's Issues

Computer vs Computer concurrent board state update

This happens when you create a Human vs Computer or Human vs Human game while a Computer vs Computer game is still playing. After the creation of the new game, the human player (White) can’t move and a black square is selected.

One possible reason for this is that the move updates are too fast (since both are level 2) that the computer can still complete the computation before the cancelation of the current move and whole game happens. So when the new game is started, the onSucceeded code still gets executed, leading to changes in the state.

Remove old piece icons

We are now using new piece assets from Phobos. We can remove the old assets, except for the white knight since we are using it as the app's icon for now.

Stalemate

The system should declare stalemate in the absence of a legal move.

Redo for the history view

This is more difficult than expected because the info on the last move is not preserved in the histories.

One possible solution could be to add support to detect a made move given two boards.

Undo doesn't return the turn to the previous player

To replicate:

  1. Move a white piece.
  2. Click on a black piece
  3. Undo
  4. Try clicking the white piece again.

Expected behavior: White piece should be clickable again
Actual behavior: White piece can't be clicked.

In some cases the it can even cause weird behaviors. For instance, if the black piece you clicked is a pawn, and the white piece happens to be at the end row. If you clicked the white piece again the system will think you are moving the black pawn to the last destination, causing the promotion dialog to appear.

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.