Coder Social home page Coder Social logo

chessgame's Introduction

Chess Game

Java CI with Maven License Release Contributor Covenant contributions welcome

Semplice gioco degli scacchi implementato a oggetti in Java-FX. Al suo interno si può trovare anche una parte automatizzata che gioca il ruolo delle pedine nere. Anche se con una grafica molto semplice e poco strutturata è un gioco molto interessante e divertente.

Il progetto è nato nell'anno 2022 come progetto scolastico di fine corso. Dopo la v1.0.0 (consegna scolastica), a marzo 2023 ho ripreso in mano il progetto aggiungendo funzionalità e aggiungendo patch per correggere eventuali bug non rilevati precedentemente.


Installazione

  1. Estrarre i file dalla ZIP
  2. Aprire la cartella all'interno di un IDE
  3. Eseguire la build del progetto

Interfaccia utente (GUI)

Classica Personalizzata Durante il gioco

Struttura delle cartelle (package)📦

ChessGame               
├── src                 
│   ├── main            
|   │   |__ java        
|   │     ├── core          # Logica della scacchiera
|   |     |   |── board     # Logica + utiity della scacchiera virtuale
|   |     |   |── move      # Mosse effettuabili
|   |     |   |── pieces    # Pedine del gioco
|   |     |   |   |__ piece # Pedina come entità singola (generica)
|   |     |   |── player    # Giocatori (bianco/nero)
|   |     |   |   |__ ai    # AI che controlla l'avversario
|   |     |   |__ utils     # Utility, costanti comuni alla logica del core
│   |     ├── gui           # Elementi che compongono la GUI Java-FX
|   |     |__ util          # Costanti generali

Librerie implementate


Volete contribuire? 🤝

Se vuoi contribuire a questa applicazione, sei sempre il benvenuto! Leggi linee guida per contribuire.


Licenza 🔖

    Apache 2.0 License
    Copyright 2021 Spikey sanju
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
       http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

chessgame's People

Contributors

ec25p5e avatar

chessgame's Issues

Invertire gli estremi sulla board (flip)

Obbiettivo:

Possibilità di invertire la posizione dei bianchi con quella dei neri e viceversa

Scopo:

Permettere al giocatore di poter giocare con la configurazione di pedine migliore per lui, senza dover avere vincoli del sistema sul posizionamento.

Gestire lo scacco del giocatore (pedina)

Dopo l'implementazione di una prima versione dell'AI, è emerso che lo stato di scacco non viene gestita correttamente.
Ovvero, non si lascia più spostare la pedina sullo scacco.

Image

Identità di genere - pedine

Descrizione

Dopo aver aggiunto una logica (ancora da migliorare) che funge da AI per muovere le pedine avversarie, l'identità delle pedine dopo il movimento mutava.
Nel senso che se mangiavo con un cavallo una pedina, essa si trasformava in una regina o casi simili di movimenti o scomparse non motivate.

In console durante l'esecuzione non si presenta alcun errore

Possibili soluzioni

Informazioni aggiuntive:

Il problema l'ho notato con la regina per la mutazione e la torre per la scomparsa.

Per riprodurre la problematica

  1. Avviare il gioco dal branch
  2. Muovere le pedine bianche e mangiare altre pedine nere

Immagine:

image

Mostrare le mosse possibili

Obbiettivo:

Attualmente vengono mostrati i quadratini sulle celle dove è possibile muoversi.
Impostare questa cosa come un'opzione

Scopo:

Permettere al giocatore di incrementare la sua abilità con il gioco, senza avere suggerimenti computerizzati sul come muoversi

Scegliere il set di immagini da usare

Di base inserire nel gioco 3/4 set di immagini predefinite tra cui scegliere.
EVO: aggiungere la possibilità di importare delle immagini e associarle alle pedine (key, value)

Aggiungere il menu nella "Window"

Obbiettivo:

Aggiungere un menu in cima alla schermata. Nel menu devono vedersi le opzioni "File", "Preferenze" e "Opzioni".
File con il fonetico sulla "F", il secondo sulla "P" e opzioni sulla "O".

Scopo:

Questi menu conterranno delle voce di utility per il gioco.

Aggiunta AI

Scopo

Questa issue è collegata al branch per lo sviluppo e integrazione dell'AI che muove le pedine avversarie.

Annullare l'ultima mossa

Obbiettivo:

Permettere all'utente di annullare l'ultima mossa eseguita.

Scopo:

Permettere al giocatore di ripensare l'ultima mossa. Funzionalità utile soprattutto quando si sta ancora imparando le mosse del gioco.

Aggiunta della persistenza su MYSQL

Aggiunto il collegamento al Database MYSQL dove vengono salvate le mosse, le configurazioni.
I file json verranno spostati sulla banca dati e letti da li.

Aggiungere pannello delle pedine catturate

Consegna:

Aggiungere sulla sinistra della scacchiera un pannello che mostri le pedine catturate per ogni giocatore. Deve essere diviso in due colonne verticali, una per il giocatore bianco e un'altra per il nero. Il set di icone da utilizzare deve essere il medesimo rappresentato sulla scacchiera.

Per poter implementare questo è necessario creare una classe contenitore (ArrayList), che sia in grado di memorizzare tutte le mosse eseguite, sia dal giocatore bianco che dal nero. La determinazione supplementare lo farà il pannello.

IMPORTANTE:

Nei messaggi di commit includere la referenza alla issue (#15)

Serializzazione JSON

Lo scopo è di poter leggere la configurazione delle pedine da un file.
Inoltre deve essere anche possibile scrivere la struttura delle pedine in un file (serializzazione).

Iniziare una nuova partita

Obbiettivo:

Aggiungere la possibilità di fare un game reset per iniziare una nuova partita (interrompendo quella vecchia).

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.