
植物大战僵尸
一份课程设计:用 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); } }}