#include <graphics.h>
#include <conio.h>
#include <Windows.h>
#include <time.h>#include <stdio.h>
#pragma comment (lib, “Winmm.lib”) //导入声音库
//#define KEY_DOWN(vk_code)(GetAsyncKeyState(vk_code)&0X8000)?1:0
#define SUCCESS 0
#define FAILURE 1
#define ENEMY_NUM 10enum DIRECTION{ UP, DOWN, LEFT, RIGHT};
//坦克结构体struct tank_s{ int x; //坦克在地图数组中所在列
int y; //坦克在地图数组中所在的行
DIRECTION direction; //坦克的方向,上、下、左、右
int live; //是否生存 1-活着 0-挂了};
//子弹结构体
struct bullet_s{ int pos_x; //子弹在“戏台”上的横坐标
int pos_y; //子弹在“戏台”上的纵坐标
DIRECTION direction; //子弹方向
int status; //子弹是否存在};
//定义地图数组
int map[26][26] = {//二维数组在内存顺序存储的
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0 }, { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 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, 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, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }};
void menu();
void init_map();
void init_map_2(int map, int rows, int cols);
int play();
int do_tank_walk(tank_s tank, DIRECTION direction, IMAGE img, int step);
void set_prop_map(int x, int y, int val);
int bullet_action(bullet_s bullet, tank_s enemy_tank);
void tank_walk(tank_s tank, DIRECTION direction, IMAGE img);
DIRECTIONenemy_direction(tank_s tank, int x, int y);
void game_over(int result);
int main(void){ int result = SUCCESS;
//搭建舞台
initgraph(650,650);
AGAIN:
//开始场景,显示菜单
menu();
//初始化地图
//init_map_2(&map[0][0], 26, 26)
init_map();
//判断play 的结果,返回1说明我方失败,否则,我方胜利
result = play();
//显示游戏的结果
game_over(result);
//是否继续游戏?
/
int ret = MessageBox(NULL, TEXT(“是否重新开始?”), TEXT(“请选择”), MB_YESNO | MB_ICONQUESTION);
if (ret == IDYES)
{ cleardevice();
//重新导入地图,进入第二关,自己考虑怎么实现?
goto AGAIN;
}
/
system(“pause”);
closegraph();
exit(0);}
void game_over(int result){
IMAGE img;
if(result == SUCCESS){
loadimage(&img, _T(“success.jpg”), 500, 250);
putimage(
c++坦克大战
最新推荐文章于 2024-08-17 15:36:51 发布
这是一个使用C++编写的坦克大战游戏代码实现,包括坦克的移动、碰撞检测、地图设置等功能。游戏包含多个坦克角色,可以进行战斗,并且有子弹发射、碰撞效果。玩家通过键盘控制坦克移动和射击,游戏结束条件是所有敌方坦克被消灭或我方坦克被击中。
摘要由CSDN通过智能技术生成