当前位置:网站首页>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 .
边栏推荐
- 1. C language matrix addition and subtraction method
- MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series
- 【九阳神功】2020复旦大学应用统计真题+解析
- 2-year experience summary, tell you how to do a good job in project management
- Tyut Taiyuan University of technology 2022 introduction to software engineering examination question outline
- Questions and answers of "Fundamentals of RF circuits" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
- 3.猜数字游戏
- IPv6 experiment
- 阿里云微服务(二) 分布式服务配置中心以及Nacos的使用场景及实现介绍
- What are the advantages of using SQL in Excel VBA
猜你喜欢
String class
2.C语言矩阵乘法
最新坦克大战2022-全程开发笔记-2
TYUT太原理工大学2022数据库大题之分解关系模式
2.C语言初阶练习题(2)
5. Download and use of MSDN
Questions and answers of "basic experiment" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
System design learning (III) design Amazon's sales rank by category feature
1.C语言矩阵加减法
How do architects draw system architecture blueprints?
随机推荐
Several high-frequency JVM interview questions
5.MSDN的下载和使用
Database operation of tyut Taiyuan University of technology 2022 database
2.C语言初阶练习题(2)
凡人修仙学指针-1
20220211-CTF-MISC-006-pure_ Color (use of stegsolve tool) -007 Aesop_ Secret (AES decryption)
[中国近代史] 第六章测验
Redis cache obsolescence strategy
魏牌:产品叫好声一片,但为何销量还是受挫
Application architecture of large live broadcast platform
Ten minutes to thoroughly master cache breakdown, cache penetration, cache avalanche
13 power map
JS interview questions (I)
View UI plus releases version 1.1.0, supports SSR, supports nuxt, and adds TS declaration files
2. Preliminary exercises of C language (2)
继承和多态(下)
Tyut Taiyuan University of technology 2022 introduction to software engineering summary
TYUT太原理工大学2022数据库题库选择题总结
167. Sum of two numbers II - input ordered array - Double pointers
Solution: warning:tensorflow:gradients do not exist for variables ['deny_1/kernel:0', 'deny_1/bias:0',