第一版,攻击僵尸函数有严重问题。
#include <stdio.h> #include <string.h> #include "api.h" #include "PlantsVsZombies.h" EndSysInfo sysBaseInfo = {0}; int grassArray[2][10] = {0};//标记草地是否可种植 int zombieLife[2][10] = {3};//标记僵尸的生命值 int tempFlag = 0;//如果是刚产生的僵尸,下1h才能移动,标记为0表示没产生,为1表示产生 void main(int argc, char* argv[]) { CmdReset(); /* 启动Socket服务侦听5555端口(sapi_server_start函数在lib库已实现)。 lib库已实现从Socket接收到字符串后的命令分发处理; */ api_server_start(argc, argv); // 此处不会执行到,注意不要在此处添加代码 } /***************************************************************************** 函 数 名 : CmdReset 功能描述 : 考生自行实现,实现系统初始化 输入参数 : 无 输出参数 : 无 返 回 值 : 无 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2009年9月9日 作 者 : 修改内容 : 新生成函数 *****************************************************************************/ void CmdReset() { sysBaseInfo.endTime = 0; sysBaseInfo.sysSun = 200; sysBaseInfo.sysGold = SYS_GOLD_INIT; sysBaseInfo.sunflowerNum = 0; sysBaseInfo.diedSunflowerNum = 0; sysBaseInfo.beanshooterNum = 0; sysBaseInfo.diedBeanshooterNum = 0; sysBaseInfo.commonZombieNum = 0; sysBaseInfo.ironZombieNum = 0; sysBaseInfo.diedCommonZombieNum = 0; sysBaseInfo.diedIronZombieNum = 0; for(int i = 0; i < 2; i++) { for(int j = 0; j < 10; j++) { grassArray[i][j] = 0; zombieLife[i][j] = 3; } } api_defendsys_ret(OP_E_INIT_SUCCESS); return; } /** 收集阳光 */ void collectSun() { for(int i = 0; i < sysBaseInfo.sunflowerNum; i++) { if(sysBaseInfo.sysSun < SYS_SUN_UP_LIMIT_NUM) { sysBaseInfo.sysSun += SUN_SELECTED; } if(sysBaseInfo.sysSun > SYS_SUN_UP_LIMIT_NUM) { sysBaseInfo.sysSun = SYS_SUN_UP_LIMIT_NUM; } } } /** 产生僵尸 */ void generateZombie(int curTime) { if(curTime%2 == 0) { grassArray[0][9] = COMMON_ZOMBIE; grassArray[1][9] = COMMON_ZOMBIE; sysBaseInfo.commonZombieNum += 2; tempFlag = 1; } tempFlag = 0; } /** 攻击僵尸 */ void attackZombie() { for(int k = 0; k < 2; k++) { for(int i =0; i < 9;i++) { if(grassArray[k][i] == BEAN_SHOOTER) { for(int j=i; j < 10;j++) { if(grassArray[k][j] == COMMON_ZOMBIE) { if(zombieLife[k][j] > 1) { zombieLife[k][j] -= 1; break; } else if(zombieLife[k][j] == 1) { zombieLife[k][j] -= 1; sysBaseInfo.commonZombieNum -= 1; sysBaseInfo.diedCommonZombieNum += 1; grassArray[k][j] = NOTHING; } } } } } } }