当前位置:网站首页>The latest tank battle 2022 full development notes-1
The latest tank battle 2022 full development notes-1
2022-07-29 05:20:00 【CPP programming】
One 、 Project introduction
Tanks war 1990 As a classic stand-alone game , yes 80 after 、90 Good memories after , It's also C/C++ A must for beginners .

But tanks 1990, The game screen is too simple . We are now on tanks 1990 Make a new upgrade , Use C Language , Build the latest tank 2022! The effect of the game is as follows :

The supporting video address of this project
Two 、 Project purpose
Whole project , Fully using the C Language , Starting from scratch , From game frame design to game rendering , Integrated C The main technical points of language , about C Language beginners , It helps a lot . It can be used as a quick improvement project for beginners , It can also be directly used as the curriculum of college students .
3、 ... and 、 Project preparation
1.Windows System , Apple computer is not suitable .
2. Mastered C The simple foundation of language , Like constants 、 Variable 、if-for-while Control statement .
3. install VS Any version , It is recommended to use VS2019 or VS2022.
VS2019 Installation instructions
4. install easyx Graphics library
Download the latest version directly on the official website easyx Graphics library
After downloading , Double click Install directly to install .
5. download “ Tanks war 2020” Game materials and sound files .
Send me a private message directly to get .
Four 、 Create project
Use VS2019, Or other versions VS, Create a new project , Select an empty project template .

5、 ... and 、 Realize the battlefield layout of tank war
5.1 Import game resources
Put resource directory res Import project directory .

5.2 Realize the game background
add to main.cpp
#include <stdio.h>
#include <graphics.h>
IMAGE imgBG;
void init() {
initgraph(1300, 900);
loadimage(&imgBG, "res/bg1.png");
}
void updataMap() {
putimage(0, 0, &imgBG); // Update the game background
}
int main(void) {
init();
updataMap();
system("pause");
return 0;
}
5.3 Realize game map
First add the most basic map elements , Add other elements later , Such as jungle cover 、 The river 、 Shields and other props .

Define enumeration types , To represent various map elements .
enum {
EMPTY, // clearing
TU_WALL, // The earth wall
GANG_WALL, // Steel wall
MY_HOME, // Our commander
ENEMY_HOME, // The opposing commander
UNIT_COUNT
};
Define the image array imgUnits To represent each map element
IMAGE imgUnits[UNIT_COUNT];stay init In the initialization function , Load map elements .
imgUnits[EMPTY] = NULL;
loadimage(&imgUnits[TU_WALL], "res/wall1.png");
loadimage(&imgUnits[GANG_WALL], "res/wall2.png");
loadimage(&imgUnits[MY_HOME], "res/pj2.png");
loadimage(&imgUnits[ENEMY_HOME], "res/wukelan2.png");Use a two-dimensional array to represent the map layout , The subsequent optimization is to use multiple files to represent the map data of each level .
int map[18][26] = {
{ 0,0,1,1,0,0,1,1,0,0,0,1,4,0,1,0,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,1 },
{ 2,2,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,2,2 },
{ 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,1,1,0,0,1,1,0,0,0,1,1,1,1,0,0,0,1,1,0,0,1,1,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,1,3,0,1,0,0,0,0,0,0,0,0,0,0,0 },
{ 0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0 }
};According to the two-dimensional array map data , stay updataMap Function to update map data .
for (int i = 0; i < 18; i++) {
for (int j = 0; j < 26; j++) {
putimage(j * 50, i * 50, &imgUnits[map[i][j]]);
}
}Run the program , View the game map effect :

5.4 Realize the transparent background of the command post and import customized tools.h and tools.cpp
1) Import custom tools.h and tools.cpp
2) stay main.cpp Add
#include "tools.h"3) Modify the code
//putimage(j * 50, i * 50, &imgUnits[map[i][j]]);
putimagePNG(j * 50, i * 50, &imgUnits[map[i][j]]);The test results are as follows :

next step , We will create tanks on both sides .
Today's sharing is here , Everyone should study hard C Language /C++ yo ~
For preparing to learn C/C++ Programming partners , If you want to better improve your core programming skills ( Internal skill ) From now on !
C Language C++ Programming learning communication circle ,QQ Group :763855696
【 Click to enter 】
Organize and share ( Years of learning source code 、 Project practice video 、 Project notes , Introduction to Basics )
Welcome to change careers and learn programming partners , Using more information to learn and grow faster than thinking about it yourself !

C Language from entry to mastery (C Introduction to language C Language course C Language zero basis C Language foundation C Language learning C
边栏推荐
- 【微信小程序】swiper滑动页面,滑块左右各露出前后的一部分,露出一部分
- 传奇开区网站如何添加流量统计代码
- 2022年SPSSPRO认证杯数学建模B题第二阶段方案及赛后总结
- ODOO开发教程之图表
- C how to realize simple factory mode
- 7.2-function-overloading
- Mapper agent development
- Scikit learn -- steps and understanding of machine learning application development
- WDDM学习
- SM integration is as simple as before, and the steps are clear (detailed)
猜你喜欢

ODOO开发教程之透视表

Google gtest事件机制

2021-10-23

7.2-function-overloading

How mongodb inserts, deletes and updates documents
![[file download] easyexcel quick start](/img/fd/b3b08c67c5a81f0ab58c20653f9398.png)
[file download] easyexcel quick start

Arfoundation starts from scratch 8-geospatial API (geospatial) development

pytorch学习笔记

开源汇智创未来 | 2022开放原子全球开源峰会 openEuler 分论坛圆满召开

Deep learning brush a bunch of tricks of SOTA
随机推荐
WPS insert hyperlink cannot be opened. What should I do if I prompt "unable to open the specified file"!
MySQL many to many relationship, grouping and splicing to query multiple data to one data
ODOO开发教程之图表
2022年SPSSPRO认证杯数学建模B题第二阶段方案及赛后总结
2021-10-11
[sudden] solve remote: support for password authentication was removed on August 13, 2021. please use a perso
The representation of time series analysis: is the era of learning coming?
6.3 references
AttributeError: ‘module‘ object has no attribute ‘create_ connection‘
Jackson parsing JSON detailed tutorial
TCP三次握手四次挥手
玩家访问网站自动弹窗加QQ群方法以及详细代码
Getting started with arfoundation tutorial 10- plane detection and placement
Visual Basic .Net 如何获取命令参数
Raspberry pie 4B + Intel neural computing stick (stick2) +yolov5 feasibility study report
What servers are needed to build mobile app
ARFoundation从零开始9-AR锚点(AR Anchor)
Pytorch learning notes
优炫数据库启动失败,报网络错误
Mapper agent development