当前位置:网站首页>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 .
边栏推荐
- TYUT太原理工大学2022数据库之关系代数小题
- Tyut Taiyuan University of technology 2022 "Mao Gai" must be recited
- 最新坦克大战2022-全程开发笔记-2
- 3. Number guessing game
- Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)
- 5. Function recursion exercise
- Tyut Taiyuan University of technology 2022 introduction to software engineering
- 7. Relationship between array, pointer and array
- Iterable、Collection、List 的常见方法签名以及含义
- 用栈实现队列
猜你喜欢
Questions and answers of "signal and system" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
8.C语言——位操作符与位移操作符
How do architects draw system architecture blueprints?
Tyut Taiyuan University of technology 2022 introduction to software engineering summary
Counter attack of flour dregs: redis series 52 questions, 30000 words + 80 pictures in detail.
系统设计学习(三)Design Amazon‘s sales rank by category feature
MySQL 30000 word essence summary + 100 interview questions, hanging the interviewer is more than enough (Collection Series
TYUT太原理工大学2022“mao gai”必背
System design learning (III) design Amazon's sales rank by category feature
C language to achieve mine sweeping game (full version)
随机推荐
【毕业季·进击的技术er】再见了,我的学生时代
Redis介绍与使用
Network layer 7 protocol
5. Function recursion exercise
IPv6 experiment
View UI Plus 發布 1.3.1 版本,增强 TypeScript 使用體驗
MySQL Database Constraints
Cloud native trend in 2022
arduino+DS18B20温度传感器(蜂鸣器报警)+LCD1602显示(IIC驱动)
3.C语言用代数余子式计算行列式
FileInputStream和BufferedInputStream的比较
1.初识C语言(1)
Implement queue with stack
魏牌:产品叫好声一片,但为何销量还是受挫
Comparison between FileInputStream and bufferedinputstream
(ultra detailed onenet TCP protocol access) arduino+esp8266-01s access to the Internet of things platform, upload real-time data collection /tcp transparent transmission (and how to obtain and write L
初识指针笔记
Alibaba cloud microservices (III) sentinel open source flow control fuse degradation component
Relational algebra of tyut Taiyuan University of technology 2022 database
One article to get UDP and TCP high-frequency interview questions!