Coder Social home page Coder Social logo

p4ulor / chess4android Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 19.9 MB

Chess app. Play offline, get puzzles from Lichess & play online w/ firebase. Assignment done for the subject Programming in Mobile Devices in the winter of 2021

Kotlin 100.00%
android chess firebase lichess room-database

chess4android's Introduction

Chess games app made for Mobile Device Programming discipline

You can:

  • Play chess offline
  • Play online with other users. Create a challenge/lobby, and wait for someone to accept.
  • Solve daily chess puzzles obtained from the lichess API. You can try these puzzles on the browser here. These puzzles get saved on the app, along with their states of completion and meta-data, like the ID and date.

Current tasks:

  • Fix some bugs
  • Add missing chess rules (pawn promotion and En passant)
  • Simplify and organize some stuff
  • Update AppDocumentation
  • Add more functionalities

Shortcuts for main source code

Repository contents

  • _imgs -> Images used in this README file or other images with technical details
  • AppDocumentation -> Images, diagrams and texts that explain the app on a programmer level and user level
  • Chess4Android -> The android project. Open it using Android Studio
  • The 3 .pdf's named after PDM in this directory are the 3 assignment papers that outline the goals and work to be done in each one.
  • this README file, explains what this entire repository is about, a thing most people don't do for some reason
  • src_code shortcut, a directory independent shortcut to the source code, opens it in another explorer window
  • open in VSC, a short cut to open this directory with VSC wich facilitates browsing through this repo files, especially for the documentation
  • The rest is self explnatory

Activity/Screens demonstration

Fundamental libraries and technologies used

  • Kotlin serialization. Used for turning the json string data obtained from the lichess API and convert it to an object
  • Android Volley. Used for making a get request do the lichess API
  • Android Room. Used for storing chess puzzles in the phone's local database
  • Firebase. Used for playing online. To create games, accept games and pass data between the user's moves and player turns.
  • ViewModel. Used for saving data from an activity when the activity rotates or is when it's running in the background
  • LiveData. Used for observing values in the activity's ViewModel and notifying them to the activity

This is how proud I am for doing this project. ALL DONE BY ME

Classification

  • 17/20 (this project)
  • 14/20 (exam)

Special thanks to:

  • My teacher, Paulo Pereira, for his teaching skills, good humor and personality and help. My teacher youtube playlist for the semester I did this discipline
  • Joe Rogan for keeping me entertained while listening to his podcasts, which avoided me from crashing my dopamine while doing this project. And thus, keeping me focused
  • Three 6 Mafia's music for getting me through the some stress I go through sometimes and for giving me resilience, hype me up, make me man up and put in work

Aftermath

This project proved to me once more that in order to do great work, you must be focused. It's way too hard to do 5 disciplines in a semester at the same time while you have 3 assignments/projects for each one, plus, given the fact that most of the time you have to do it all alone. Everything takes a lot of time to do and learn. I exceled at this discipline because I sacrificed others...

chess4android's People

Contributors

p4ulor avatar

Stargazers

 avatar

Watchers

 avatar

chess4android's Issues

Checking if piece jumps over another is not evaluated

This will may require the reorganization of the Model, specifically on how pieces move and operate, and the listener we set for each Tile (square position) in the board.

This problem is present in this commit and in the first tag

I'm kinda also doing this randomly to try out "Issues" :P. Doing it for the 1st time.

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.