cis3296f24 / Section4-ProjectPresentation

cis3296f24-classroom-project-presentation-ProjectsFeedbackBoard-template created by GitHub Classroom
0 stars 0 forks source link

Running Chess #6

Open EdgardoJ-Gonzalez opened 1 month ago

EdgardoJ-Gonzalez commented 1 month ago

Project Abstract

This document proposes a version of chess called running chess that uses the strava running app api to get running data. All rules of chess apply with the only changes being there is no turn order, and each chess piece’s point worth doubles as a price to move it. The currency is milage. For example, a pawn is normally considered one point. This means that in order for one player to move a pawn, said player must run a mile (or whatever conversion rate chosen) and upload a run to strava. The strava api gathers the miles and then those miles are converted to points. The player may move any piece they can afford as long as that piece has a possible viable move. The users must have a strava account and authorize the retrieval of the data from their account.

Conceptual Design

The project proposed in this document requires the use of the Strava api. It works on all major operating systems. The backend language is python while the frontend is javascript, html, css. All the chess pieces must be programmed with a point total and valid moves, along with the board itself. Before the game begins, the players must be prompted to sign in and authorize the game using their strava accounts. From there, instead of taking turns moving pieces, the users must press a button when they wish to make a move. The button press then activates an api call to check the mileage of the user since the start of the game. If the user enters a run of at least one mile, they will be prompted to move any piece they can afford. If the player has yet to add a run to their strava, a message will display saying they do not have enough points to move. Lastly, all players must use curl/Postman to update their access token to the proper credentials, as the initial one provided by strava does not hold the proper credentials

Proof of Concept

Repository Link: https://github.com/EdgardoJ-Gonzalez/RunningChess

Background

Chess running is a chess game that uses a point system instead of a turn order to make moves. The points are based on mileage the player runs, which is tracked using the app strava. The project requires the creation of the chess board and pieces in python with front end visuals using javascript, react.js or a different preferred language. Players must have a strava account to play the game and update their access tokens to the proper credentials. Instead of a turn order players must use points earned by uploading runs to strava to make moves. Each piece in chess has a point value. These point values are used as the price for moving each piece.

At the start of the game, the time is saved. Everytime the user presses the move button, the user will either be prompted to make a move using the points they have, or they will be told they lack enough points to move a piece. Due to the api call threshold, if the user presses the move button a specific amount of times under 200 (decided by programmers), the player will be locked from moving for a minute. Either way, an api call returns the total miles run from the start of the game. Those miles are converted to points using a conversion rate set by the players before the game starts. If the player has enough points, they can move any piece they can afford that has a valid move available.

This project visually looks very similar to any online chess program, but differs in the backend due to the api calls and lack of turn order functions. Replacing the turn order functions is an api call function that ensures the user does not use too many api calls as strava has a threshold of 200 calls per minute and 1000 per 15 minutes. A project such as this is very similar as it is basic chess. The end result may look similar to other chess programs as there are so many. However, if code is directly copied, it will be credited.

Use Case Diagram: UseCase drawio

Required Resources

Development Requirements

Python Interpreter & IDE Frontend Language that functions with python (Ex: react.js/javascript) 2 Strava Accounts Strava Api (Comes with strava account) Updated Api tokens using either curl or Postman

Project Presentation

Link: https://docs.google.com/presentation/d/1nyOp3VUsIEqp9VuT28f_g6SM1O472y6XvSyE0A-21fM/edit?usp=sharing

GavinMai-tul33743 commented 1 month ago

This is a very interesting project that makes people work out in order to play chess. One bad thing about chess and most sitting games is that there is barely any physical movement. By forcing players to exercise in order to perform any action, this project is encouraging exercise in addition to allowing the user to play chess. In a world where people spend most of their time in front of a computer screen, making people run to play games can give many people the excuse to go outside.

I would like to contribute by proposing that the chess aspect of the game is converted to 3d chess. Better yet, create a prompt that allows the user to choose between 2d and 3d chess. This could allow the user to try out a new chess experience in addition to the running aspect of the app. Overall, this project has a lot of promise and I would like to be a part of it.

TonyGao777 commented 1 month ago

Hi, this is a great project proposal. I like this project because I'm a fan of board games. I like that you included exercising as a game mechanic. This project can help people decrease the time spent sitting in a chair.

I can contribute to this project because I have experience in Python. I have made simple games in Unity and can help with the game logic. I would suggest using Pygame for the Chess application part, as it is designed for writing video games.

TuEthanBuera commented 1 month ago

Hi Edgardo, I really like this project proposal. It reminds me of those fitness apps the makes exercising into a game and gives rewards such as like Pokemon Go or Zombies Run. I also like how it shakes up the game of chess by changing how the turn order works. I personally really like this project because I like playing chess and I also used to run a lot.

I don't really specifically know what I can contribute to the project but I am familiar with python and I have and use Strava whenever I run. I think a feature that you can add to the project is by adding speed bonuses based on average mile/km pace and also an elevation bonus based on elevation gains. Another feature could also be spending points to transform a pawn into another piece whenever it reaches the end of the board.