PlantsVsZombies_1

第一版,攻击僵尸函数有严重问题。

#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;
                        }
                    }
                }
            }
        }
    }
}

原文地址:https://www.cnblogs.com/liuzc/p/6517552.html