Author: HelloGitHub- Dried fish

This is the fourth week I’ve been cooped up at home. I don’t want to read code, I don’t want to read technical articles, and I can’t learn happily. How can I be a good requirements digester? Is there an easy way to learn technology? Remember when I was a child jinshan typing, playing and learned to type, Bingo! It’s time to find out what fun games on GitHub are for learning while playing.

  1. Revisit the classic
  2. Back to childhood
  3. Family bucket · Simulator

Tips: The projects in this article cover the Python, machine learning, Java, JS, Go, and Objective-C categories respectively. I hope you can find new projects that interest you in different technology stacks.

First, revisit the classics

1.1 Plants vs. Zombies

Making address – https://github.com/marblexu/PythonPlantsVsZombies

PythonPlantsVsZombies is a Python language for plants versus zombies.

  • Programming language: Python
  • Function is introduced
    • PythonPlantsVsZombies support plant types: Sunflower, Pea Shooter, Ice Shooter, nut, cherry Bomb, Double Pea Shooter, etc.
    • PythonPlantsVsZombies Supports the following zombie types: normal zombie, chess zombie, barricade zombie, Barrel zombie, newspaper reader zombie.
    • The project uses Json files to save level information, which can set the time and location of zombies independently.
    • [Fixed] Support for selecting plants at the beginning of a level
    • Support for night mode;
  • Why you should check it out: The popular Plants vs. Zombies level is a great way to get your hands on Python.

1.2 Dungeon word games

Making address – https://github.com/AIDungeon/AIDungeon

AIDungeon2 is a word game for dungeons based on machine learning.

  • Programming language: Python
  • Function is introduced
    • Built on OpenAI, AI Dungeon features state-of-the-art open source text generation, complemented by optional adventure features that present players with unique paragraphs of text. In the AI Dungeon, you can do all sorts of things and get a response no matter how strange your actions are;
  • This project introduces how to use machine learning to build a game

1.3 doudizhu

Making address – https://github.com/ainilili/ratel

Ratel is a command line network-enabled fight Landlord game.

  • Programming language: Java
  • Function is introduced
    • Ratel has two servers: client and server. You can have your friends’ clients connect to your server to play, or you can directly connect to your author’s public network server to play.
  • Ratel is developed using Java language, Netty 4.x network framework and Protobuf data protocol. In addition, you can learn server-side and client-client interaction processes.

Relive your childhood

2.1 Spacecraft Shooting

Making address – https://github.com/gd4Ark/star-battle

Star Battle is a JavaScript ES6, Canvas developed ship shooting game.

  • Programming language: JavaScript
  • Function is introduced
    • Use W, A, S, D to control the spacecraft and press Space to launch;
    • The fuel value starts at 15 and decreases by 1 point per second. When the fuel value reaches 0, the game ends.
    • Touching a dropped fuel bottle adds 15 points, Max 30.
    • Hitting enemy ships adds 5 points. Planets need to hit twice for an increase of 10 points. 10 points are deducted for hitting a friendly side.
    • [Fixed] You lose 15 fuel when hitting enemies and 10 fuel when hitting friends.
    • The game allows negative points;
    • Press P to pause the game and M to mute it;
  • Recommended reasons: As a classic stand-alone game space War, this project in addition to review the simple and crude shot down score, but also learn Canvas practice technology, kill two birds with one stone.

2.2 Tetris

Making address – https://github.com/taylorconor/tinytetris

Tinytetris is a terminal version of tetris written in C++.

  • Programming language: C++
  • Function is introduced
    • Control the direction and fall of blocks by keys A (left), D (right), W (rotation), S (drop) and Q (exit);
  • Recommended reasons: Tinytetris provides two versions of the source code, divided into annotations and library versions, annotations more easy to understand and learn.

2.3 demining

Making address – https://github.com/muan/emoji-minesweeper

Emoji-minesweeper is an Emoji minesweeper game. The code is short and the game idea is cool.

  • Programming language: JavaScript
  • Function is introduced
    • Left-click to open a site;
    • Right-click to mark a point as a bomb
    • Double click to open all 8 points near the target (except by right-clicking on points marked as bombs);
  • Why you should try it: it’s only 300+ lines of code, and you can learn how to handle Emoji in Javascript

3. Family bucket · Simulator

3.1 Red and White on the Mac

Making address – https://github.com/OpenEmu/OpenEmu

OpenEmu is a console that allows you to play all kinds of retro games.

  • Programming language: Objective-C
  • Function is introduced
    • Support nintendo (NES), SONY PSP, Sega 32X and more than 30 game engines;
    • Support external gamepad, screen casting and other operations;
  • Why you should check it out: It allows you to play all kinds of classic games on the Mac, and just drag your downloaded ROM onto the NES and have fun playing 30+ console games.

3.2 Remote Games

Making address – https://github.com/HFO4/gameboy.live

Gameboy.Live is a Gameboy emulator that can play pixel games remotely over sockets.

  • Programming language: Golang
  • Function is introduced
    • CPU instruction simulation
    • Timers and interrupts
    • Only ROM, MBC1, and MBC2 tapes are supported
    • Sound simulation
    • Graphic simulation
    • Cloud game
    • ROM the debugger
    • Game save and restore tape levels
  • Why you should check it out: Gameboy.Live is a Gameboy simulator written for learning purposes, so you can quickly Pick up Golang techniques with this project.

Do you have any games on GitHub to share? Let us know in the comments.


Welcome to pay attention to HelloGitHub public account, join the communication group.