当前位置:网站首页>The latest tank battle 2022 - Notes on the whole development -2
The latest tank battle 2022 - Notes on the whole development -2
2022-07-06 13:27:00 【Programmer rock】
6、 ... and 、 Create tanks
6.1 Define tank data types
typedef enum Direction {
DIRRECT_START,
DIRECT_UP = DIRRECT_START,
DIRECT_RIGHT,
DIRECT_DOWN,
DIRECT_LEFT,
DIRECT_COUNT
} direct_t;
typedef struct tank {
bool heroFlag; // true: own false: The enemy
IMAGE* imgBody;
IMAGE* imgSafe;
int x, y; // Column and row numbers in the map
int sn; // Number
bool used; // Whether to use
direct_t diret; // Direction
} tank_t;6.2 Define tank texture
enum {
TANK_MINE,
TANK_ENEMY_1,
TANK_TYPE_COUNT
};
IMAGE imgUnits[UNIT_COUNT];
IMAGE imgTanks[TANK_TYPE_COUNT][DIRECT_COUNT];6.3 Define tank variables
#define ENEMY_TANK_MAX 10
#define MY_TANK_MAX 3
tank_t myTank;
tank_t enemyTanks[ENEMY_TANK_MAX];
int myTankCount; // The number of our tanks 6.3 Load the texture of the tank
Define the image texture array of the tank .
enum {
TANK_MINE,
TANK_ENEMY_1,
TANK_TYPE_COUNT
};
IMAGE imgTanks[TANK_TYPE_COUNT][DIRECT_COUNT];stay init In the initialization function , Load the image texture of the enemy and our tanks in all directions .
loadimage(&imgTanks[TANK_MINE][DIRECT_UP], "res/tankUp.png");
loadimage(&imgTanks[TANK_MINE][DIRECT_RIGHT], "res/tankRight.png");
loadimage(&imgTanks[TANK_MINE][DIRECT_DOWN], "res/tankDown.png");
loadimage(&imgTanks[TANK_MINE][DIRECT_LEFT], "res/tankLeft.png");
loadimage(&imgTanks[TANK_ENEMY_1][DIRECT_UP], "res/tankEnemyUp.png");
loadimage(&imgTanks[TANK_ENEMY_1][DIRECT_RIGHT], "res/tankEnemyRight.png");
loadimage(&imgTanks[TANK_ENEMY_1][DIRECT_DOWN], "res/tankEnemyDown.png");
loadimage(&imgTanks[TANK_ENEMY_1][DIRECT_LEFT], "res/tankEnemyLeft.png");6.4 Create our tanks
void createMyTank() {
if (myTank.used) return;
if (myTankCount > 0) {
myTankCount--;
myTank.used = true;
myTank.heroFlag = true;
myTank.diret = DIRECT_UP;
myTank.x = 9;
myTank.y = 16;
myTank.imgBody = imgTanks[TANK_MINE];
}
}stay main Call in function createMyTank().
6.5 Create enemy tanks
int enemyCurCount; // The number of enemy tanks currently fighting
int enemyTankCountCanUsed; // Total number of enemy tanks available ( What has appeared and what is ready to appear later )
void createEnemyTank() {
if (enemyCurCount < 4 && enemyTankCountCanUsed > 0) {
int index;
for (index = 0; index < ENEMY_TANK_MAX && enemyTanks[index].used; index++);
if (index >= ENEMY_TANK_MAX) return;
enemyCurCount++;
enemyTanks[index].heroFlag = false;
enemyTanks[index].used = true;
enemyTanks[index].direct = DIRECT_DOWN;
enemyTanks[index].x = rand() % 2 ? 9 : 15; // stay init Function to add srand Configure random seeds
enemyTanks[index].y = 0;
enemyTanks[index].imgBody = imgTanks[TANK_ENEMY_1];
}
}stay main Call in function createEnemyTank().
6.6 Initialize the number of tanks
stay init Function to initialize the number of tanks .
myTankCount = MY_TANK_MAX;
enemyTankCountCanUsed = ENEMY_TANK_MAX;
enemyCurCount = 0;7. Render all tanks
Definition updateAllTanks()
void updateTank(tank_t* tank) {
if (!tank->used) return;
putimagePNG(tank->x * 50 + 5, tank->y * 50 + 5, &tank->imgBody[tank->direct]);
}
void updateAllTanks() {
updateTank(&myTank);
for (int i = 0; i < ENEMY_TANK_MAX; i++) {
if (enemyTanks[i].used) {
updateTank(&enemyTanks[i]);
}
}
}stay main Call in function updateAllTanks()
int main(void) {
init();
createMyTank();
createEnemyTank();
updataMap();
updateAllTanks();
system("pause");
return 0;
} Perform project , Check the running effect of the game :
Next section , We optimize the code , Design the main frame of the game .
边栏推荐
- String class
- 【九阳神功】2021复旦大学应用统计真题+解析
- View UI plus released version 1.3.1 to enhance the experience of typescript
- 【快趁你舍友打游戏,来看道题吧】
- Introduction and use of redis
- TYUT太原理工大学2022数据库大题之分解关系模式
- 6. Function recursion
- Common method signatures and meanings of Iterable, collection and list
- string
- What are the advantages of using SQL in Excel VBA
猜你喜欢

Smart classroom solution and mobile teaching concept description

Cloud native trend in 2022

MySQL Database Constraints

Data manipulation language (DML)

Relational algebra of tyut Taiyuan University of technology 2022 database

TYUT太原理工大学2022“mao gai”必背

IPv6 experiment

西安电子科技大学22学年上学期《基础实验》试题及答案

9.指针(上)

5.函数递归练习
随机推荐
Introduction pointer notes
View UI plus released version 1.3.1 to enhance the experience of typescript
167. Sum of two numbers II - input ordered array - Double pointers
4.30 dynamic memory allocation notes
Pit avoidance Guide: Thirteen characteristics of garbage NFT project
System design learning (I) design pastebin com (or Bit.ly)
Data manipulation language (DML)
【毕业季·进击的技术er】再见了,我的学生时代
1.初识C语言(1)
FileInputStream和BufferedInputStream的比较
Network layer 7 protocol
Experience summary of autumn recruitment of state-owned enterprises
2-year experience summary, tell you how to do a good job in project management
System design learning (III) design Amazon's sales rank by category feature
Tyut Taiyuan University of technology 2022 "Mao Gai" must be recited
View UI Plus 發布 1.3.1 版本,增强 TypeScript 使用體驗
Quickly generate illustrations
初识指针笔记
How to ensure data consistency between MySQL and redis?
Introduction and use of redis