作者:HelloGitHub-小鱼干

这是本人宅在家里的第 4 周,代码不想看,技术文章不想读,都不能愉快学习了我还怎么当一个优秀的需求消化师呢?有没有什么轻松地方法来学习技术呢?想起了小时候金山打字通,玩着玩着就学会了打字,Bingo!#用游戏的方式来学习技术#,是时候找找 GitHub 上有哪些好玩的游戏项目来边玩边学了。

  1. 重温经典
  2. 重温童年
  3. 全家桶·模拟器

Tips:文章中的项目分别涵盖了 Python、机器学习、Java、JS、Go、Objective-C 类别,希望不同技术栈的小伙伴都可以找到自己感兴趣的新项目。

一、重温经典

1.1 植物大战僵尸

GitHub 地址→https://github.com/marblexu/PythonPlantsVsZombies

PythonPlantsVsZombies 是 Python 语言编写的植物大战僵尸。

  • 编程语言:Python
  • 功能介绍
    • PythonPlantsVsZombies 支持的植物类型:太阳花、豌豆射手、寒冰射手、坚果、樱桃炸弹、双重豌豆射手等;
    • PythonPlantsVsZombies 支持的僵尸类型:普通僵尸、棋子僵尸、路障僵尸、铁桶僵尸、毒爆僵尸;
    • 项目使用 Json 文件保存关卡信息,可独立设置僵尸出现的时间和位置;
    • 支持关卡开始时选择上场植物;
    • 支持夜间模式;
  • 推荐理由:风靡一时的植物大战僵尸关卡多、组合搭配多样,拿它来学习 Python 练手是一个不错的选择。

1.2 地下城文字游戏

GitHub 地址→https://github.com/AIDungeon/AIDungeon

AIDungeon2 是一个基于机器学习的地下城文字游戏。

  • 编程语言:Python
  • 功能介绍
    • AI Dungeon 基于 OpenAI 打造,采用了最先进的开放源码文本生成功能,辅以自选冒险类特性,向玩家呈现了一段段独特的文字。在 AI Dungeon 中,玩家可以进行各式行为,且无论你的举动多么奇怪都能得到回应;
  • 推荐理由:此项目介绍了如何使用机器学习构建一个游戏,代码简单清晰适合 AI 爱好者深入研究哟~

1.3 斗地主

GitHub 地址→https://github.com/ainilili/ratel

Ratel 是一个命令行可联网的斗地主游戏。

  • 编程语言:Java
  • 功能介绍
    • Ratel 分客户端和服务端,你可以让小伙伴们的客户端都连接你的服务器进行游戏,也可以直接连接作者的公网服务器进行游戏;
  • 推荐理由:Ratel 使用 Java 语言开发,Netty 4.x 网络框架搭配 protobuf 数据协议,此外还可以学到 Server-Client、Client-Client 等交互流程。

二、重温童年

2.1 飞船射击

GitHub 地址→https://github.com/gd4Ark/star-battle

Star Battle 是一个 JavaScript ES6、Canvas 开发的飞船射击类游戏。

  • 编程语言:JavaScript
  • 功能介绍
    • 使用 W、A、S、D 控制飞船,按下 Space 发射;
    • 燃料初始值为 15,每秒递减 1 点,当燃料值为 0 时,游戏结束;
    • 触碰掉下的燃料瓶可增加 15 点,最大值为 30 点;
    • 击中敌方飞船增加 5 分。行星需击中两次,增加 10 分。击中友方扣除 10 分;
    • 撞击敌方损失 15 点燃料,撞击友方扣除 10 分;
    • 游戏允许负分;
    • 按下 P 暂停游戏,按下 M 静音;
  • 推荐理由:作为单机游戏经典款太空大战,本项目除了能重温简单粗暴地击落得分之外,还可以学到 Canvas 实践技术,一举两得。

2.2 俄罗斯方块

GitHub 地址→https://github.com/gd4Ark/star-battle

Tinytetris 是一个用 C++ 编写的终端版俄罗斯方块游戏。

  • 编程语言:C++
  • 功能介绍
    • 通过键位 A(左)、D(右)、W(旋转)、S(放下)和 Q(退出)来控制方块的方向和掉落;
  • 推荐理由:Tinytetris 提供了两个版本的源码,分为注释版和库版,注释较多易于理解和学习。

2.3 扫雷

GitHub 地址→https://github.com/muan/emoji-minesweeper

Emoji-minesweeper 是一款 Emoji 符号的扫雷游戏。代码很简短,游戏创意很酷。

  • 编程语言:JavaScript
  • 功能介绍
    • 左键单击开启一个地点;
    • 右键单击以将一个点标记为炸弹;
    • 双击可打开目标附近的所有 8 个点(使用右键单击已标记为炸弹的点除外);
  • 推荐理由:寥寥 300+ 行代码实现该游戏,还能学到 Javascript 处理 Emoji 的方法,你不来试试嘛~

三、全家桶·模拟器

3.1 Mac 上的红白机

GitHub 地址→https://github.com/OpenEmu/OpenEmu

OpenEmu 是一个可以玩各种复古游戏的游戏机。

  • 编程语言:Objective-C
  • 功能介绍
    • 支持任天堂(NES)、索尼PSP、世嘉 32X 等 30 多种游戏引擎;
    • 支持外接游戏手柄、投屏等操作;
  • 推荐理由:有了它,我们就可以在 Mac 系统上玩各种经典游戏,只需将下载到的游戏 ROM 拖到 NES 即可开心地玩耍 30+ 款掌机游戏。

3.2 远程游戏

GitHub 地址→https://github.com/HFO4/gameboy.live

Gameboy.Live 是一个 Gameboy 模拟器,可以通过 Socket 远程玩像素游戏。

  • 编程语言:Golang
  • 功能介绍
    • CPU指令仿真
    • 计时器和中断
    • 支持仅 ROM、MBC1、MBC2 磁带
    • 声音模拟
    • 图形仿真
    • 云游戏
    • ROM 调试器
    • 游戏保存和恢复卡带级别
  • 推荐理由:Gameboy.Live 是为学习目的而编写的 Gameboy 模拟器,所以通过这个项目你可以快速 Pick Golang 技术。

以上为不才最近找到的可以学习知识的 GitHub 游戏项目,#你有什么 GitHub 上的游戏项目来分享下吗?# 欢迎留言告诉我们。


关注公众号加入交流群

宅在家学不进去吗?试试这些 GitHub 上简单易学的游戏项目吧的更多相关文章

  1. [老老实实学WCF] 第九篇 消息通信模式(上) 请求应答与单向

    老老实实学WCF 第九篇 消息通信模式(上) 请求应答与单向 通过前两篇的学习,我们了解了服务模型的一些特性如会话和实例化,今天我们来进一步学习服务模型的另一个重要特性:消息通信模式. WCF的服务端 ...

  2. 零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里

    原文:零元学Expression Blend 4 - Chapter 31 看如何简单的把SampleData 绑进ListBox里 前面几章连续讲到ListBox的运用,本章要讲得是如何简单的把Sa ...

  3. 新年在家学java之基础篇--循环&数组

    因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}w ...

  4. 新年在家学java之基础篇-高级类的特性

    继承 extends 子类的共性代码都是继承自父类的,每个子类只要写自己特有的代码 class 子类 extends 父类 继承提高了代码的复用性,提供了多态的前提,但是不要为了某个功能去继承 子类不 ...

  5. 新年在家学java之基础篇-参数&修饰符&构造器

    可变参数 不知道可能给方法传递多少个参数时使用这个方法 public void printInfo (String[] args) --可以定义一个数组,在调用这个方法适合赋值给一个数组 public ...

  6. 新年在家学java之基础篇--类&方法

    面向对象 面向对象OOP,面向过程POP 面向对象三大特征 封装 继承 多态 类 类由属性(对应类中的成员变量)和行为(成员方法)来构成 类的成员变量可以先声明,不用初始化,有默认值 方法名称如果多个 ...

  7. 十一讲/十二讲 最近总是学不进去,这咋办啊 哭了我i我i我i

    0: 2,9,7      错错错 帽号回来是列表 1:好像一样?   错错错  不一样,list[0]是一个值,冒号回来是个列表 2:A.insert(0,A[-1]) del A[-1]      ...

  8. 看github上有18万star的第一开源项目如何教你学前端编程的

    作为 Github | star 第一开源项目,已经超过18万 star:比之前最火的bootstrap的10万star还要多出8w,freeCodeCamp 越来越受关注,建站两年时间不到已经近40 ...

  9. 《PHP 5.5从零開始学(视频教学版)》内容简单介绍、文件夹

    <PHP 5.5从零開始学(视频教学版)>当当网购买地址: http://product.dangdang.com/23586810.html <PHP 5.5从零開始学(视频教学版 ...

随机推荐

  1. Python 任务自动化工具 tox 教程

    在我刚翻译完的 Python 打包系列文章中,作者提到了一个神奇的测试工具 tox,而且他本人就是 tox 的维护者之一.趁着话题的相关性,本文将对它做简单的介绍,说不定大家在开发项目时能够用得上. ...

  2. Web开发学习目录

    1.MyBaits 1.1mybatis学习入门 1.2mybatis学习之CURD 1.3mybatis学习之连接池 1.4mybatis学习之动态SQL 1.5mybatis学习之多表操作 1.6 ...

  3. 解决springmvc报错,java.lang.IllegalArgumentException:No converter found for return value of type: class .......

    1.背景 最近在自学java中的三大框架 ssm,在 springmvc 与 mybatis 整合过程中用到 json 数据交互.因为看的视频的是比较早的嘛,一些配置.jar包什么的,要么跟 jdk ...

  4. SpringBoot 2.1.6 启动原理解析(一)

    小白第一次写博客,如果有不足之处烦请各位大佬指正. 用了好久的SpringBoot了,一直不清楚它内部的一些启动原理,如何加载yml文件.如何初始化bean的,今天就记录一下,新建了一个springb ...

  5. PPP协议 PAP认证

       

  6. Mysql 性能优化Explain详解

    explain 功能我们在日常使用中,使用慢查询找到执行时间比较久的查询,然后使用SHOW STATUS.SHOW PROFILE.和explain做单条语句的分析.使用explain关键字可以模拟优 ...

  7. 2019牛客暑期多校第二场题解FH

    F.Partition problem 传送门 题意:有2n个人,分两组,每组n个,要求sum(vij)最大值. 题解:n并不大我们可以枚举每个人是在1组还是2组爆搜. 代码: #include &l ...

  8. matlab读取excel文件中的数据

    1.读取sheet1中的所有数据 1.1首先我们建立一个sheet表,表名为‘111’ 1.2 默认这些文本以及数字都放在sheet1中,我们将此excel选入当前工作目录(必要步骤), 选入当前工作 ...

  9. Map and HashMap

    1.1.1. Map 接口 java提供了一组可以以键值对(key-value)的形式存储数据的数据结构,这种数据结构称为Map.我们可以把Map看成一个多行两列的表格,其中第一列存放key,第二列存 ...

  10. 什么是aPaas?aPaas与低代码又是如何促进应用程序开发现代化的?

    从软件即服务(SaaS)到基础设施即服务(IaaS),云计算的兴起使“一切皆服务”(XaaS)模型得以泛滥,而aPaaS可能是这些模型中最鲜为人知的模型.随着aPaaS市场预计将从2018年的近90亿 ...