Skip to content

Latest commit

 

History

History
112 lines (90 loc) · 4.9 KB

README.md

File metadata and controls

112 lines (90 loc) · 4.9 KB
gsnake

About

Welcome to my CLI snake game project! Get ready for some snake-slingin' action, whether you're flying solo or challenging your friends online!

In single-player mode, you can test your skills across three different difficulty levels. Whether you're a beginner or a seasoned pro, there's a challenge waiting for you.

But the real excitement kicks in with the online multiplayer mode. Here, it's all about being the last snake standing! Connect to the online server and compete against others in a battle of survival. Every turn counts as you maneuver your snake, and points are awarded based on who lasts the longest. Keep slithering and scoring until someone reaches the target score and emerges victorious!

So, whether you're aiming to top the leaderboard in single-player mode or outmaneuvering opponents in online mode, there's no shortage of thrills in this snake showdown. Let the games begin!

Table of Contents

Play Now!

Currently running on turutupa.com. Join now!

$ ssh turutupa.com

Edit: had to take it down for now. May bring it up again at some point.

Demo

gsnake

Installation

Execute install.sh script

$ ./install.sh

How to run

Running locally

Upon installation you can start playing locally by running

$ gsnake 

Hosting SSH server

If you want to self-host a gsnake SSH server you can run it by using the -m and -p flags which stand for mode and port. Port number defaults to 5555 if not specified.

$ gsnake -m ssh -p <port_number>

Architecture

To be updated.

architecture

Roadmap

  • Refactor game so that grid is double columned (this way width and height will be roughly the same)
  • Refactor game to comply with Chain of Responsibility design pattern - components!
  • App re-render on user window change event - mostly affects the paddings or if window is not big enough
    • (partial) Re-render main menu
    • Re-render game - only working if user creates new game
  • Update README with latest changes
    • Update architecture with SSH details
    • Update new architecture after refactoring to add multiplayer
  • Add bash script to install/run the game
  • Finish README.md including how to install on machine
  • Inifite mode? Where you can only die if snake hits itself
  • Improve leaderboard
    • Add some borders
    • Add the option to input username
    • See top scores by difficulty/mode
  • Add main menu
    • Be able to select difficulty
  • Super fruit! Add a super fruit (maybe every 5 fruit pieces?) that will appear for an X amount of time
    1. If you eat it in that time snake will not get longer,
    2. otherwise it simply disappears
  • Completely new project would involve to convert this to a SSH application
  • Versus mode! Let players fight!
    • Create rooms/lobbies
    • Create new game logic for multiplayer
      • Extend for multiplayer local mode (1 keyboard)
    • Create side menu with leaderboard and colors of each player
    • Power ups? // not in the near future

Contributing

Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Contact

Feel free to send me an email to [email protected] or schedule a call at cal.com/alber.

Donations

I'm trying to run a server with the game running so donations would help greatly into paying it. Additionally, it may get laggy for users connecting from far away so I'd love to be able to have servers running on different zones.

Buy Me A Coffee