Alloxyme代码 / 光
游戏主画面:草坪上的太阳花、豌豆射手、飞行中的豌豆和僵尸

全部作品/ 003

植物大战僵尸

一份课程设计:用 C 语言和 EasyX 图形库写的植物大战僵尸,并把实现过程整理成了 15 篇教程。

年份
2024
技术
C · EasyX
亮点
15 篇教程

A是什么

这是一份课程设计。和原版不同,玩家操控的是僵尸:在 5 行 9 列的草坪上用 WSAD 移动、按 E 和植物交互,要在限定时间内走到最左边。

B规则

豌豆射手会向右发射豌豆,僵尸被击中扣 25 分;吃掉太阳花能延长剩余时间,吃掉豌豆射手加 100 分。开始之前要在自己实现的登录界面输入玩家名,游戏界面上显示玩家名、当前得分、历史最高分和倒计时。

C怎么做的

整个游戏用 C 语言和 EasyX 图形库在 Visual Studio 里完成。场上的豌豆用链表管理,击中僵尸或飞出画面后及时释放内存;历史最高分写进二进制文件保存;植物摇摆和僵尸行走的动画在主循环里逐帧绘制,并控制节奏。

D教程

实现过程拆成了 15 篇文章:从数据结构和通用函数、登录页、图片资源加载、动画绘制、碰撞判定、内存释放,一直写到积分存档和 Release 编译,发布在我的 Hexo 博客上。下面这段就是其中读写最高分的代码。

E核心的几行

int getScore() {	int fileNumber = 0;	FILE* file = fopen("score.bin", "rb");	if (file != NULL) {		if (fread(&fileNumber, sizeof(int), 1, file) != 1) {			fileNumber = 0;		}		fclose(file);	}	return fileNumber;}void compearScore(int Userscore) {	int fileNumber = getScore();	if (Userscore > fileNumber) {		FILE* file = fopen("score.bin", "wb");		if (file != NULL) {			fwrite(&Userscore, sizeof(int), 1, file);			fclose(file);		}	}}
004下一个项目alloxy.me就是你正在看的这个网站:一间搭在浏览器里的暗房,照片由代码字符颗粒组成,在红光里浮现,再显影成彩色。

10联系

有项目,或者只是想聊聊某支镜头

hello@alloxy.me

北京时间 --:--:--

图片与视频来源
  • Travel photos taken by Alloxyme on trips (photography is a hobby)
  • Project screenshots: Aivory, FlowMuse and Plants vs. Zombies are the author’s own projects
  • “Photographic lenses and tubes 2025” by Carlos Valenzuela Montuy, CC BY 4.0, Wikimedia Commons

© 2026 Alloxyme — 代码与文字保留所有权利