CS50 2D(原名 CS50G)是哈佛 CS50x 的后续课程,从零拆解童年经典游戏的底层实现,搞清楚一个 2D 游戏到底是怎么跑起来的。
课程共八周,使用 Lua 与 LÖVE 2D 框架,每周动手复刻一款经典游戏——从 Pong、Flappy Bird、Breakout、三消,一路做到马里奥、塞尔达、愤怒的小鸟和宝可梦,涵盖游戏循环、2D 渲染、精灵动画、音效、碰撞检测、状态机与关卡生成等核心机制,最后完成一个自选的 Final Project。
仓库里是 @mancuoj 自学时的项目与作业代码,每周一个目录;实现上不完全照搬课程源码,更多是按自己的理解重写。
| 资源 | 链接 |
|---|---|
| 课程主页 | CS50 2D 游戏开发 |
| 讲座视频 | YouTube 播放列表 · CS50 Video Player |
| 官方讲义 | Week 0 notes · slides (PDF) |
| 官方源码 | github.com/games50 · Week 0 源码 zip |
| 我的笔记 | 在线查看 · 仓库 |
| LÖVE / Lua | love2d.org · LÖVE Wiki · Lua 5.1 手册 |
| 周 | 项目 | 作业 | 代码 | 笔记 | 状态 |
|---|---|---|---|---|---|
| 0 | Pong | 说明 | 00-pong/ |
笔记 | 🚧 |
| 1 | Flappy Bird | 说明 | 01-flappy-bird/ |
笔记 | ⬜ |
| 2 | Breakout | 说明 | 02-breakout/ |
笔记 | ⬜ |
| 3 | Match 3 | 说明 | 03-match3/ |
笔记 | ⬜ |
| 4 | Super Mario Bros. | 说明 | 04-mario/ |
笔记 | ⬜ |
| 5 | Legend of Zelda | 说明 | 05-zelda/ |
笔记 | ⬜ |
| 6 | Angry Birds | 说明 | 06-angry-birds/ |
笔记 | ⬜ |
| 7 | Pokémon | 说明 | 07-pokemon/ |
笔记 | ⬜ |
| ✦ | Final Project | — | final/ |
— | ⬜ |
状态:⬜ 未开始 · 🚧 进行中 · ✅ 已完成
需要 LÖVE 11.5(当前稳定版)。macOS 可以用 Homebrew 安装,其他平台见下载页。
# macOS
brew install --cask love
# 运行某一周
love 00-pong课程由 Colton Ogden 与 David J. Malan 讲授,课程材料(讲义、素材、示例代码)版权归 CS50 所有,遵循 CC BY-NC-SA 4.0。本仓库为个人学习记录,仅供参考。