当前位置:网站首页>The latest tank battle 2022 full development notes-1

The latest tank battle 2022 full development notes-1

2022-07-06 13:26:00 Programmer rock

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
easyx Download link

After downloading , Double click Install directly to install .
easyx Quick start

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 .

原网站

版权声明
本文为[Programmer rock]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060916110083.html