{"id":19758914,"url":"https://github.com/jcampbell57/ruby_chess","last_synced_at":"2026-05-04T17:35:40.661Z","repository":{"id":251336415,"uuid":"805199130","full_name":"jcampbell57/ruby_chess","owner":"jcampbell57","description":"A command line Chess game where two players can play against each other. The purpose of this project is to show that I can take on a project with a lot of different components. This is the capstone project of The Odin Project's Ruby course.","archived":false,"fork":false,"pushed_at":"2024-08-02T08:41:22.000Z","size":54,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T22:51:44.321Z","etag":null,"topics":["localstorage","object-oriented-programming","oop","rspec","ruby","serialization","tdd","test-driven-development","yaml"],"latest_commit_sha":null,"homepage":"https://replit.com/@jcampbell57/Chess#main.rb","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jcampbell57.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-24T04:52:24.000Z","updated_at":"2024-08-02T22:23:20.000Z","dependencies_parsed_at":"2024-08-02T10:12:38.619Z","dependency_job_id":"5b8bad05-7910-4bfa-8027-9fdb17d15c23","html_url":"https://github.com/jcampbell57/ruby_chess","commit_stats":null,"previous_names":["jcampbell57/ruby_chess"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcampbell57%2Fruby_chess","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcampbell57%2Fruby_chess/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcampbell57%2Fruby_chess/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcampbell57%2Fruby_chess/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcampbell57","download_url":"https://codeload.github.com/jcampbell57/ruby_chess/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241090250,"owners_count":19907912,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["localstorage","object-oriented-programming","oop","rspec","ruby","serialization","tdd","test-driven-development","yaml"],"created_at":"2024-11-12T03:26:34.197Z","updated_at":"2026-05-04T17:35:35.640Z","avatar_url":"https://github.com/jcampbell57.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chess\n\n## Project info\n\nA command line Chess game where two players can play against each other. The purpose of this project is to show that I can take on a project with a lot of different components. This is the capstone project of [The Odin Project's Ruby course](https://www.theodinproject.com/paths/full-stack-ruby-on-rails/courses/ruby).\n\nProject description can be found [here](https://www.theodinproject.com/lessons/ruby-ruby-final-project).\n\n\n## Game info\n\n- Use [Standard Algebraic Notation](https://en.wikipedia.org/wiki/Algebraic_notation_(chess)) to select your moves.\n- Type 'save' at any point to save your game.\n- Type 'info' at any point for game information or instructions.\n\n\n## Live demo\n\nLive demo available [on Replit (account required)](https://replit.com/@jcampbell57/Chess#main.rb)\n\n\n## Table of Contents\n\n* [Features](#features)\n* [Technologies utilized](#technologies-utilized)\n* [Learning outcomes](#learning-outcomes)\n* [Project screenshot](#project-screenshot)\n* [Behind the Scenes](#behind-the-scenes)\n* [Installation](#installation)\n\n\n## Features\n\n- Play multiplayer or singleplayer against the computer.\n- Save and resume your games.\n- Validation of player and computer moves.\n- A stylish brown chess board.\n\n\n## Technologies utilized\n\n- Ruby\n- RSpec\n- YAML\n\n\n## Learning outcomes\n\nThis project helped to reinforce the following skills:\n\n- Test Driven Development (TDD)\n- Object Oriented Programming (OOP)\n- implementation of game saves through serialization\n- basic Ruby knowledge\n\n\n## Project screenshot\n\n![Chess](assets/chess_600w.png)\n\n\n## Behind the scenes\n\n### Project notes\n\n- I tried to reduce save file size by having each piece create an adjacency list each time update_children is called, but that slowed the game down significantly\n\n### Improvements\n\nThis project could be improved with:\n\n- a more sophisticated computer AI \n- a turn output like the one in [this example](https://andrewjh271.github.io/chess/)\n- each move should be recorded to a game history\n  - undo move should pull from game history instead of undo any piece's previous move.\n  - feature to 'replay game' and go through move by move or let it autoplay the whole game.\n- Binary search implemented where appropriate\n\n### Resources\n\n- Run `rspec` to run tests\n- The larger display was inspired by [this example](https://andrewjh271.github.io/chess/)\n\n\n## Installation\n\n- Clone this repository to your desktop.\n- Navigate to the top level of the directory by running `cd ruby_chess`.\n- Run `ruby main.rb` in your terminal.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcampbell57%2Fruby_chess","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcampbell57%2Fruby_chess","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcampbell57%2Fruby_chess/lists"}