⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tank.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 5 页
字号:
int infshowflag; //状态框更新标志
BOOLEAN bulletflag;
BOOLEAN dirflag;//坦克改变方向标志
int dir;  //坦克方向
int PAUSE_OR_OK;//坦克暂停控释 标志
int gTankitemcnt;
int gFlashflag;//暂停动画闪烁标志
int gInpaintflag;
int ENEMYBULLETMAX;  //敌子弹数量
int ENEMYMAX;    // 敌坦克数量
int BULLET_MAXNUM;  //玩家坦克能连续发射的子弹数量
int tankareamark;//地图上的坦克数量
int bulletareamark;//地图上的子弹数量
int goodsappear0;
int goodsappear1;
int goodsappear2;
int flashflag1;//物品的闪烁控制
UINT16   gPausemap;
int tankgoodsprotection;//城堡的加强控制
int goodsmoveL_R;
int goodsmoveU_D;
int enemytanktypeflag;//敌人坦克分类
int scoreperbarry;//每一关的得分
GameMovie Explode;
GameMovie MinExplode;
GameMovie BirthMovie;
GameMovie Burning;
GameTankBullet bullettype[4];
GameTank playertype[3];
GameTank tanktype[6];
Goods goodstype[9];
int playertankinit;//玩家坦克初始化标志
int TANKPAUSE;//暂停标志
int PlayerTankUndead;
int EnemyTankSpeedZeroTimer;//敌坦克原地等待时间
int ParkUndead;
int partdangeflag;
int TimeAlarmflg;
int alarmflag;
/*----------------------------------------------------------------------------*/
/*
Name : RockGetSysTimerCount
Desc : 得到系统Timer的count值
Param :
Return :
Global :

Note :
Author :
Log  :
*
*    hxy     2007/09/12  用于随机数产生
*
*/
/*----------------------------------------------------------------------------*/
UINT32 RockGetSysTimerCountTank(void)
{
#ifdef __arm
    return Timer_GetCount(SCNF_TIMER_OS);
#else
    return 0;
#endif

}

/*----------------------------------------------------------------------
Name  :  GetRamdom
Desc  :  获取随机数(0-255)
Params:  只在ARM环境上可用
Return:
Author:  System Author
Date  :  070830
----------------------------------------------------------------------*/
UINT8 GetRadomTank(void)
{
    UINT32 I = RockGetSysTimerCountTank();
    UINT8 Radom = (((I >> 24) + (I >> 16) + (I >> 8) + I) & 0xff);

    return Radom;
}

/**************************************************************
Desc   : 全局变量初始化
Param:无
Return:无
Global:无
Author:xiexiuxie
*****************************************************************/
void GameTankDealInit(void)   //游戏开始的初始化
{
    INT32U GetPositiveRand(INT16U maxValue);
    int i, j;
    EnemyTankSpeedZeroTimer = ENEMYSPEEDZEROTIME;
    partdangeflag = 0;
    infshowflag = 0;
    bulletflag = 0;
    PAUSE_OR_OK = 0;
    TANKPAUSE = 0;
    dirflag = 0;
    dir = 0;
    gTankitemcnt = 0;
    gInpaintflag = 0;
    tankgoodsprotection = 0;
    tankareamark = 0;
    bulletareamark = 0;
    enemytanktypeflag = 0;
    scoreperbarry = 0;
    gTankgame.parttimer = 0;
    gTankgame.parkflag = 0;
    gTankgame.lossclock = 0;
    gTankgame.wonclock = 0;
    gTankgame.timflag = 0;
    gTankgame.goods.active = 0;
    gTankgame.gamestatus = COMMON;
    gTankgame.events[0].Fire = 0;//
    gTankgame.TankLeftAdd = 0;
    flashflag1 = 0;
    goodsappear0 = 0;
    goodsappear1 = 0;
    goodsappear2 = 0;
    goodsmoveL_R = 0;
    goodsmoveU_D = 0;
    PlayerTankUndead = 0;
    ParkUndead = 0;
    TimeAlarmflg = 0;
    alarmflag = 0;
    gPausemap = 0;
    playertankinit = 1;
    if (playertankinit || gTankgame.barriesflag == 0)//
    {
        gTankgame.playerleft[0] = 3;  //玩家坦克初始化
        gTankgame.player[0].active = 0;
    }

    for (i = 0;i < 6;i++)
    {
        TankNumPerEnemyType[i] = 0;//被消灭的坦克种类数量初始化
    }
    for (i = 0;i < ENEMYMAX;i ++) //敌 坦克初始化
    {
        gTankgame.enemy[i].active = 0;
    }
    for (i = 0;i < ENEMYBULLETMAX;i ++)  //子弹初始化
    {
        gTankgame.enemybullet[i].active = 0;
    }
    for (i = 0;i < MOVIEPLAYMAX;i++)
    {
        gTankgame.movie[i].active = 0;
    }
    for (j = 0;j < BULLET_MAXNUM;j++)//玩家坦克子弹  初始化
    {
        gTankgame.playerbullet[0][0][j].active = 0;
        gTankgame.playerbullet[0][1][j].active = 0;
        gTankgame.playerbullet[0][2][j].active = 0;
        gTankgame.playerbullet[0][3][j].active = 0;
    }
    for (i = 0;i < TREES_MAXNUM;i++)
    {
        treespoint[i].x = GetPositiveRand(200) + 10;
        treespoint[i].y = GetPositiveRand(192) + 10;
    }
    switch (gTankgame.tankleverchoce) //坦克类型初始化
    {
        case 0:
            {
                for (i = 0;i < 4;i++)
                {
                    gTankgame.enemyleft[i] = TANKLEFT_EASY;
                }
            }
            break;
        case 1:
            {
                for (i = 0;i < 4;i++)
                {
                    gTankgame.enemyleft[i] = TANKLEFT_NOMAL;
                }
            }
            break;
        case 2:
            {
                for (i = 0;i < 4;i++)
                {
                    gTankgame.enemyleft[i] = TANKLEFT_DIFFICULTY;
                }
            }
            break;
        default:
            break;

    }

}
/************************************************************************
Desc  : 敌人坦克数量和子弹数量的设定
Param:无
Return:无
Global:ENEMYBULLETMAX、ENEMYMAX
Author:xiexiuxie
*************************************************************************/
void TankNumSet(void)
{
    switch (gTankgame.tankleverchoce)
    {
        case 0://简单等级
            {
                ENEMYBULLETMAX = TANKSET_EASY_MAXNUM;
                ENEMYMAX = TANKSET_EASY_MAXNUM;
            }
            break;
        case 1://中等等级
            {
                ENEMYBULLETMAX = TANKSET_NOMAL_MAXNUM;
                ENEMYMAX = TANKSET_NOMAL_MAXNUM;
            }
            break;
        case 2://困难等级
            {
                ENEMYBULLETMAX = TANKSET_DIF_MAXNUM;
                ENEMYMAX = TANKSET_DIF_MAXNUM;
            }
            break;
        default:
            break;
    }
}
/************************************************************************
Desc  : 不知道LCD_Update()有无效果控制其使用
Param:无
Return:无
Global:gTankgame.map.maptiles_id 地图数组指针
Author:xiexiuxie
*************************************************************************/
void TankGameDeal(void)
{

    LCD_Update();
    // return;

}

/************************************************************************
Desc  : 读取地图
Param:无
Return:无
Global:gTankgame.map.maptiles_id 地图数组指针
Author:xiexiuxie
*************************************************************************/
void GetTankMap(void)
{
    MY_FILE  *fmap = NULL;
    switch (gTankgame.barriesflag)
    {


#ifdef __arm
        case 0:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map00.bin", "rb");
            break;
        case 1:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map01.bin", "rb");
            break;
        case 2:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map02.bin", "rb");
            break;
        case 3:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map03.bin", "rb");
            break;
        case 4:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map04.bin", "rb");
            break;
        case 5:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map05.bin", "rb");
            break;
        case 6:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map06.bin", "rb");
            break;
        case 7:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map07.bin", "rb");
            break;
        case 8:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map08.bin", "rb");
            break;
        case 9:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map09.bin", "rb");
            break;
        case 10:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map10.bin", "rb");
            break;
        case 11:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map11.bin", "rb");
            break;
        case 12:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map12.bin", "rb");
            break;
        case 13:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map13.bin", "rb");
            break;
        case 14:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map14.bin", "rb");
            break;
        case 15:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map15.bin", "rb");
            break;
        case 16:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map16.bin", "rb");
            break;
        case 17:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map17.bin", "rb");
            break;
        case 18:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map18.bin", "rb");
            break;
        case 19:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map19.bin", "rb");
            break;
        case 20:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map20.bin", "rb");
            break;
        case 21:
            fmap = FSFileOpen("C:\\APPDATA\\tank\\map21.bin", "rb");
            break;
        default:
            break;








#else

        case 0:
            fmap = FSFileOpen("map00.bin", "rb");
            break;
        case 1:
            fmap = FSFileOpen("map01.bin", "rb");
            break;
        case 2:
            fmap = FSFileOpen("map02.bin", "rb");
            break;
        case 3:
            fmap = FSFileOpen("map03.bin", "rb");
            break;
        case 4:
            fmap = FSFileOpen("map04.bin", "rb");
            break;
        case 5:
            fmap = FSFileOpen("map05.bin", "rb");
            break;
        case 6:
            fmap = FSFileOpen("map06.bin", "rb");
            break;
        case 7:
            fmap = FSFileOpen("map07.bin", "rb");
            break;
        case 8:
            fmap = FSFileOpen("map08.bin", "rb");
            break;
        case 9:
            fmap = FSFileOpen("map09.bin", "rb");
            break;
        case 10:
            fmap = FSFileOpen("map10.bin", "rb");
            break;
        case 11:
            fmap = FSFileOpen("map11.bin", "rb");
            break;
        case 12:
            fmap = FSFileOpen("map12.bin", "rb");
            break;
        case 13:
            fmap = FSFileOpen("map13.bin", "rb");
            break;
        case 14:
            fmap = FSFileOpen("map14.bin", "rb");
            break;
        case 15:
            fmap = FSFileOpen("map15.bin", "rb");
            break;
        case 16:
            fmap = FSFileOpen("map16.bin", "rb");
            break;
        case 17:
            fmap = FSFileOpen("map17.bin", "rb");
            break;
        case 18:
            fmap = FSFileOpen("map18.bin", "rb");
            break;
        case 19:
            fmap = FSFileOpen("map19.bin", "rb");
            break;
        case 20:
            fmap = FSFileOpen("map20.bin", "rb");
            break;
        case 21:
            fmap = FSFileOpen("map21.bin", "rb");
            break;
        default:
            break;
#endif
    }
    if (fmap)
    {
        FSFileRead(&(gTankgame.map.maptiles_id), 784, fmap);
        FSFileClose(fmap);
    }
}

/************************************************************************
Desc  : 获取随机位置
Param: maxValue  随机参数根据机率大小而定
Return:value%maxValue
Global:无
Author:xiexiuxie

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -