c語言簡單版坦克大戰(AllenBullet檔案)

來源:互聯網
上載者:User

標籤:extern   ==   for   ima   typedef   檔案   bre   erb   移動   

AllenBullet.h

#include "AllenUserTrank.h"#include "AllenEnemyTrank.h"typedef struct PBULLET{    int x;    int y;    int dir;    int life;}Bullet, *Pbullet;//初始化子彈void init_User_Bullet(UserTrank userTrank,Pbullet userBullet);//建立子彈void create_User_Bullet(UserTrank userTrank, Pbullet userBullet);//列印子彈void print_User_Bullet(Bullet userBullet);//清除子彈void clear_User_Bullet(Bullet userBullet);//移動所有void User_Bullet_Move(Pbullet userBullet);//判斷子彈是否在home附近int User_Bullet_home(Pbullet userBullet);////////////////////////////////////////////////////////////////初始化子彈void init_Enemy_Bullet(EnemyTrank enemyTrank, Pbullet userBullet);//建立子彈void create_Enemy_Bullet(EnemyTrank enemyTrank, Pbullet userBullet);//列印子彈void print_Enemy_Bullet(Bullet userBullet);//清除子彈void clear_Enemy_Bullet(Bullet userBullet);//移動所有void Enemy_Bullet_Move(Pbullet pbullet);//判斷子彈是否在home附近int Enemy_Bullet_home(Pbullet pbullet);//使用者extern Bullet UserBullet[100];//敵人extern Bullet EnemyBullet[100];////敵人2//extern Bullet EnemyBullet1[100];////敵人3//extern Bullet EnemyBullet2[100];//extern list<Bullet> ListBullet;

AllenBullet.c

#include "AllenBullet.h"#include "Allendraw.h" Bullet UserBullet[100];//敵人 Bullet EnemyBullet[100];//列印void print_User_Bullet(Bullet userBullet) {    if (!(userBullet.life)) return;    if (g_map[userBullet.x][userBullet.y] == CAOMAP) {        PrintChar(userBullet.x, userBullet.y, CAO, 0x2);        return;    }    //如果障礙     if (g_map[userBullet.x][userBullet.y] == ZHANGAIMAP) {        userBullet.life = 0;        return;    }    if (g_map[userBullet.x][userBullet.y] == KONG)         {        PrintChar(userBullet.x, userBullet.y, "◎", 0x3);        g_map[userBullet.x][userBullet.y] = USERBULLETMAP;        return;    }}//清除使用者子彈void clear_User_Bullet(Bullet userBullet) {    //判斷是否為障礙物    if (g_map[userBullet.x][userBullet.y] == ZHANGAIMAP)    {        userBullet.life = 0;        return;    }    if (g_map[userBullet.x][userBullet.y] == USERBULLETMAP) {        PrintChar(userBullet.x, userBullet.y, "  ", 0x00);        g_map[userBullet.x][userBullet.y] = KONG;        return;    }}//移動所有的生命值為ture子彈void User_Bullet_Move(Pbullet userBullet) {     User_Bullet_home(userBullet);    for (int i = 0; i < 100; i++) {        //移動之前先擦掉        clear_User_Bullet(userBullet[i]);        //如果在障礙物上子彈生命失效        if (g_map[userBullet[i].x][userBullet[i].y] == ZHANGAIMAP) {            userBullet[i].life = 0;        }        //判斷是否在範圍內        if (userBullet[i].x > 2 && userBullet[i].x <= 37 && userBullet[i].y>2 && userBullet[i].y <=37&& (userBullet[i].life==1))        {            switch (userBullet[i].dir) {            case TANK_DIR_UP:                userBullet[i].y--;                break;            case TANK_DIR_DW:                userBullet[i].y++;                break;            case TANK_DIR_LF:                userBullet[i].x--;                break;            case TANK_DIR_RH:                userBullet[i].x++;                break;            }            //再列印出來            //userBullet[i].life = 1;            print_User_Bullet(userBullet[i]);        }        //如果超出範圍這個子彈就沒用了        else        {            userBullet[i].life = 0;        }    }}//產生子彈void create_User_Bullet(UserTrank userTrank, Pbullet userBullet) {    if (((g_map[2 + userTrank.x][userTrank.y] == ZHANGAIMAP || g_map[1 + userTrank.x][-1 + userTrank.y] == ZHANGAIMAP || g_map[1 + userTrank.x][1 + userTrank.y] == ZHANGAIMAP) && userTrank.dir == TANK_DIR_RH) ||        ((g_map[-2 + userTrank.x][userTrank.y] == ZHANGAIMAP || g_map[-1 + userTrank.x][-1 + userTrank.y] == ZHANGAIMAP || g_map[-1 + userTrank.x][1 + userTrank.y] == ZHANGAIMAP) && userTrank.dir == TANK_DIR_LF) ||        ((g_map[userTrank.x][2 + userTrank.y] == ZHANGAIMAP || g_map[1 + userTrank.x][1 + userTrank.y] == ZHANGAIMAP || g_map[-1 + userTrank.x][1 + userTrank.y] == ZHANGAIMAP) && userTrank.dir == TANK_DIR_DW) ||        ((g_map[userTrank.x][-2 + userTrank.y] == ZHANGAIMAP || g_map[-1 + userTrank.x][-1 + userTrank.y] == ZHANGAIMAP || g_map[1 + userTrank.x][-1 + userTrank.y] == ZHANGAIMAP) && userTrank.dir == TANK_DIR_UP)        )     {        return;    }    if (userTrank.life <= 0) return;    if (!(userTrank.x > 3 && userTrank.x < 36 && userTrank.y >3 && userTrank.y <=36))    {        return;    }    //在家附近不產生子彈    if ((userTrank.x >= 15 && userTrank.x <=25 && userTrank.y >=32)&& userTrank.dir!= TANK_DIR_UP)    {        return;    }    if (userTrank.y == 36 && userTrank.dir == TANK_DIR_DW) return;    switch (userTrank.dir) {    case TANK_DIR_UP:        for (int i = 0; i < 100; i++) {            if (userBullet[i].life == 0) {                userBullet[i].life = 1;                userBullet[i].dir = userTrank.dir;                userBullet[i].x = userTrank.x;                userBullet[i].y = userTrank.y - 3;                print_User_Bullet(userBullet[i]);                break;            }            else {                continue;            }        }        break;    case TANK_DIR_DW:        for (int i = 0; i < 100; i++) {            if (userBullet[i].life == 0) {                userBullet[i].life = 1;                userBullet[i].dir = userTrank.dir;                userBullet[i].x = userTrank.x;                userBullet[i].y = userTrank.y + 3;                print_User_Bullet(userBullet[i]);                break;            }            else {                continue;            }        }        break;    case TANK_DIR_LF:        for (int i = 0; i < 100; i++) {            if (userBullet[i].life == 0) {                userBullet[i].life = 1;                userBullet[i].dir = userTrank.dir;                userBullet[i].x = userTrank.x - 3;                userBullet[i].y = userTrank.y;                print_User_Bullet(userBullet[i]);                break;            }            else {                continue;            }        }        break;    case TANK_DIR_RH:        for (int i = 0; i < 100; i++) {            if (userBullet[i].life == 0) {                userBullet[i].life = 1;                userBullet[i].dir = userTrank.dir;                userBullet[i].x = userTrank.x + 3;                userBullet[i].y = userTrank.y;                print_User_Bullet(userBullet[i]);                break;            }            else {                continue;            }        }        break;    }}//所有子彈初始化為flasevoid init_User_Bullet(UserTrank userTrank, Pbullet userBullet) {    for (int i = 0; i < 100; i++) {        userBullet[i].x = userTrank.x;        userBullet[i].y = userTrank.y;        userBullet[i].life = 0;    }}//判斷子彈是否在home附近int User_Bullet_home(Pbullet userBullet) {    for (int i = 0; i < 100; i++) {        if (userBullet[i].x >= 17 && userBullet[i].x <= 23 && userBullet[i].y >= 33) {            userBullet[i].life = 0;            clear_User_Bullet(userBullet[i]);        }    }}///////////////////////////////////_Enemy_////////////////////////////////////////////////////////////列印敵方子彈void print_Enemy_Bullet(Bullet userBullet) {    if (userBullet.x == 0 || userBullet.x == 39 || userBullet.y == 39 || userBullet.y == 0) return;    if (!(userBullet.life)) return;    //如果在草上列印草    if (g_map[userBullet.x][userBullet.y] == CAOMAP) {        PrintChar(userBullet.x, userBullet.y, CAO, 0x2);        return;    }    //如果障礙     if (g_map[userBullet.x][userBullet.y] == ZHANGAIMAP) {        userBullet.life = 0;        return;    }    if(g_map[userBullet.x][userBullet.y]==KONG){        PrintChar(userBullet.x, userBullet.y, "●", 0x6);        g_map[userBullet.x][userBullet.y] = ENETBULLETMAP;        return;    }}//清除敵方子彈void clear_Enemy_Bullet(Bullet userBullet) {    //判斷是否為障礙物    if (g_map[userBullet.x][userBullet.y] == ZHANGAIMAP)    {        userBullet.life = 0;        return;    }    if (g_map[userBullet.x][userBullet.y] == ENETBULLETMAP) {        PrintChar(userBullet.x, userBullet.y, "  ", 0x00);        g_map[userBullet.x][userBullet.y] = KONG;        return;    }}//移動所有的生命值為ture子彈void Enemy_Bullet_Move(Pbullet pbullet) {    Enemy_Bullet_home(pbullet);    for (int i = 0; i < 100; i++) {        //移動之前先擦掉        clear_Enemy_Bullet((pbullet[i]));        //如果在障礙物上子彈生命失效        if (g_map[pbullet[i].x][pbullet[i].y] == ZHANGAIMAP) {            pbullet[i].life = 0;        }        //判斷是否在範圍內        if ((pbullet[i].x )>=2 && (pbullet[i].x) <=37 &&( pbullet[i].y)>=2 && (pbullet[i].y) <= 37&&( pbullet[i].life) == 1)        {            switch (pbullet[i].dir) {            case TANK_DIR_UP:                pbullet[i].y--;                break;            case TANK_DIR_DW:                pbullet[i].y++;                break;            case TANK_DIR_LF:                pbullet[i].x--;                break;            case TANK_DIR_RH:                pbullet[i].x++;                break;            }            //再列印出來            print_Enemy_Bullet((pbullet[i]));        }        //如果超出範圍這個子彈就沒用了        else        {            pbullet[i].life = 0;        }    }}//產生子彈void create_Enemy_Bullet(EnemyTrank enemyTrank, Pbullet EnemyBullet) {    if (((g_map[2 + enemyTrank.x][enemyTrank.y] == ZHANGAIMAP || g_map[1 + enemyTrank.x][-1 + enemyTrank.y] == ZHANGAIMAP || g_map[1 + enemyTrank.x][1 + enemyTrank.y] == ZHANGAIMAP) && enemyTrank.dir == TANK_DIR_RH) ||        ((g_map[-2 + enemyTrank.x][enemyTrank.y] == ZHANGAIMAP || g_map[-1 + enemyTrank.x][-1 + enemyTrank.y] == ZHANGAIMAP || g_map[-1 + enemyTrank.x][1 + enemyTrank.y] == ZHANGAIMAP) && enemyTrank.dir == TANK_DIR_LF) ||        ((g_map[enemyTrank.x][2 + enemyTrank.y] == ZHANGAIMAP || g_map[1 + enemyTrank.x][1 + enemyTrank.y] == ZHANGAIMAP || g_map[-1 + enemyTrank.x][1 + enemyTrank.y] == ZHANGAIMAP) && enemyTrank.dir == TANK_DIR_DW) ||        ((g_map[enemyTrank.x][-2 + enemyTrank.y] == ZHANGAIMAP || g_map[-1 + enemyTrank.x][-1 + enemyTrank.y] == ZHANGAIMAP || g_map[1 + enemyTrank.x][-1 + enemyTrank.y] == ZHANGAIMAP) && enemyTrank.dir == TANK_DIR_UP)        )    {        return;    }    if (enemyTrank.life <= 0) return;    if (!(enemyTrank.x > 3 && enemyTrank.x < 36 && enemyTrank.y >3 && enemyTrank.y <= 36)&& enemyTrank.dir!= TANK_DIR_UP)    {        return;    }    //在家附近不產生子彈    if ((enemyTrank.x >= 15 && enemyTrank.x <= 25 && enemyTrank.y >= 32))    {        return;    }    if (enemyTrank.y == 3 && enemyTrank.dir == TANK_DIR_UP) return;    if (enemyTrank.y == 36 && enemyTrank.dir == TANK_DIR_DW) return;    switch (enemyTrank.dir) {    case TANK_DIR_UP:        for (int i = 0; i < 100; i++) {            if (EnemyBullet[i].life == 0) {                EnemyBullet[i].life = 1;                EnemyBullet[i].dir = enemyTrank.dir;                EnemyBullet[i].x = enemyTrank.x;                EnemyBullet[i].y = enemyTrank.y - 3;                print_Enemy_Bullet(EnemyBullet[i]);                break;            }            else {                continue;            }        }        break;    case TANK_DIR_DW:        for (int i = 0; i < 100; i++) {            if (EnemyBullet[i].life == 0) {                EnemyBullet[i].life = 1;                EnemyBullet[i].dir = enemyTrank.dir;                EnemyBullet[i].x = enemyTrank.x;                EnemyBullet[i].y = enemyTrank.y + 3;                print_Enemy_Bullet(EnemyBullet[i]);                break;            }            else {                continue;            }        }        break;    case TANK_DIR_LF:        for (int i = 0; i < 100; i++) {            if (EnemyBullet[i].life == 0) {                EnemyBullet[i].life = 1;                EnemyBullet[i].dir = enemyTrank.dir;                EnemyBullet[i].x = enemyTrank.x - 3;                EnemyBullet[i].y = enemyTrank.y;                print_Enemy_Bullet(EnemyBullet[i]);                break;            }            else {                continue;            }        }        break;    case TANK_DIR_RH:        for (int i = 0; i < 100; i++) {            if (EnemyBullet[i].life == 0) {                EnemyBullet[i].life = 1;                EnemyBullet[i].dir = enemyTrank.dir;                EnemyBullet[i].x = enemyTrank.x + 3;                EnemyBullet[i].y = enemyTrank.y;                print_Enemy_Bullet(EnemyBullet[i]);                break;            }            else {                continue;            }        }        break;    }}//所有子彈初始化為flasevoid init_Enemy_Bullet(EnemyTrank enemyTrank, Pbullet EnemyBullet) {    for (int i = 0; i < 100; i++) {        EnemyBullet[i].x = enemyTrank.x;        EnemyBullet[i].y = enemyTrank.y;        EnemyBullet[i].life = 0;    }}//判斷子彈是否在home附近int Enemy_Bullet_home(Pbullet userBullet) {    for (int i = 0; i < 100; i++) {        if (userBullet[i].x >= 17 && userBullet[i].x <= 23 && userBullet[i].y >= 34) {            userBullet[i].life = 0;            clear_Enemy_Bullet(userBullet[i]);        }    }}

c語言簡單版坦克大戰(AllenBullet檔案)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.