Giter Site home page Giter Site logo

gsnake's Introduction

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

gsnake's People

Contributors

turutupa avatar

Stargazers

 avatar Matthew Malensek avatar

Watchers

 avatar

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.