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

复制代码

posted on   cleverlzc  阅读(130)  评论(0编辑  收藏  举报

编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示