c语言数组里乘法的含义

0

map[3][3 * 8] = 2;
 givedate(3, 3 * 8);

这是炸弹人小游戏的代码,这个应该是给地图元素赋值用的但是我不懂其中乘法的含义,givedate这个函数也没看懂

void givedate(int x, int y)
{
 map[x][y + 1] = 22;
 map[x][y + 2] = 22;
 map[x + 1][y] = 22;
 map[x + 1][y + 1] = 22;
 map[x + 1][y + 2] = 22;
 map[x + 2][y] = 22;
 map[x + 2][y + 1] = 22;
 map[x + 2][y + 2] = 22;
}

跪求前辈救救孩子,马上就要交第一次课设了,,,

附上完整代码,,,

#include<graphics.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<windows.h>
#include<time.h>
#pragma comment(lib,"Winmm.lib")


#define width 600         //600*400的画布
#define high 400
#define X 60            //地图数组的横坐标
#define Y 40            //地图数组的纵坐标  
#define distence 30     //人物图像的长宽,截取的人物图像为正方形
#define speed 2          //人物移动的速度
#define control 10       //输入限速10
#define Boomwid 23       //炸弹宽
#define Boomhig 33        //炸弹高
#define armewid 17        //敌人宽
#define armehig 30       //敌人高

int x_man, y_man;         //炸弹人的坐标
int x_boom = -30, y_boom = -30;       //炸弹的坐标
int arme_x[3] = { 150,15 * 30,13 * 30 };           //敌人的横坐标
int arme_y[3] = { 30,30,9 * 30 };            //敌人的纵坐标

int map[X][Y] = { 0 };
/*初始化数组地图,0为可走路段
2为可炸毁障碍绘图点,22为障碍碰撞判断数值
3为炸弹判断碰撞点*/

int order = 0, turn = 0;
//炸弹人循环播放  order为横坐标,turn为纵坐标
//turn=0为向下,turn=1为向上,turn=2向左,turn=3胜利,turn=4死亡,turn=5向右
int boom_order = 0, boom_turn = 0;
//炸弹的循环播放,boom_order为横坐标,boom_turn为纵坐标
int arme_order[3] = { 0 }, arme_turn[3] = { 0 };
//敌人的循环播放,arme_order为横坐标,arme_turn为纵坐标
int armenum = 3;

int whether = 0;       //控制炸弹数量的开关变量
int boom = 0;          //判断炸弹是否爆炸的开关变量,0为没有爆炸,大于0为爆炸
int boom_up = 0, boom_down = 0, boom_left = 0, boom_right = 0;//上下左右的爆炸判定开关

int over = 1;       //游戏是否进行的判断常量  1为进行,0为死亡退出,2为胜利退出

clock_t begin, end;

IMAGE img_man, img_man1;
IMAGE img_stop, img_stop1;
IMAGE img_bk;
IMAGE img_boom, img_boom1;
IMAGE img_fail;
IMAGE img_arme, img_arme1;
IMAGE img_start;
IMAGE img_win;

//给障碍图片掩盖的部分全体赋值
void givedate(int x, int y)
{
	map[x][y + 1] = 22;
	map[x][y + 2] = 22;
	map[x + 1][y] = 22;
	map[x + 1][y + 1] = 22;
	map[x + 1][y + 2] = 22;
	map[x + 2][y] = 22;
	map[x + 2][y + 1] = 22;
	map[x + 2][y + 2] = 22;
}

//加载图片
void loadpicture()
{
	loadimage(&img_man, _T(".\\人物.jpg"));
	loadimage(&img_man1, _T(".\\人物1.jpg"));

	loadimage(&img_stop, _T(".\\障碍.jpg"));
	loadimage(&img_stop1, _T(".\\障碍1.jpg"));

	loadimage(&img_bk, _T(".\\地图.jpg"));

	loadimage(&img_boom, _T(".\\爆炸.jpg"));
	loadimage(&img_boom1, _T(".\\爆炸1.jpg"));

	loadimage(&img_fail, _T(".\\fail.jpg"));
	loadimage(&img_win, _T(".\\win.jpg"));

	loadimage(&img_arme, _T(".\\怪物行走图.jpg"));
	loadimage(&img_arme1, _T(".\\怪物行走图1.jpg"));
}

/*数据初始化*/
void startup()
{
	x_man = 20;
	y_man = 20;

}


/*地图初始化*/
void datemap()
{
	initgraph(width, high);
	/*绘制地图障碍*/
	map[3][3 * 8] = 2;
	givedate(3, 3 * 8);
	//第一列
	map[2 * 3][2 * 3] = 2;
	givedate(2 * 3, 2 * 3);
	map[2 * 3][4 * 3] = 2;
	givedate(2 * 3, 4 * 3);
	map[2 * 3][5 * 3] = 2;
	givedate(2 * 3, 5 * 3);
	map[2 * 3][6 * 3] = 2;
	givedate(2 * 3, 6 * 3);
	map[2 * 3][8 * 3] = 2;
	givedate(2 * 3, 8 * 3);
	map[2 * 3][10 * 3] = 2;
	givedate(2 * 3, 10 * 3);
	//第二列
	map[3 * 3][4 * 3] = 2;
	givedate(3 * 3, 4 * 3);
	map[3 * 3][8 * 3] = 2;
	givedate(3 * 3, 8 * 3);
	//第三列
	map[4 * 3][3] = 2;
	givedate(4 * 3, 3);
	map[4 * 3][3 * 3] = 2;
	givedate(4 * 3, 3 * 3);
	map[4 * 3][4 * 3] = 2;
	givedate(4 * 3, 4 * 3);
	map[4 * 3][6 * 3] = 2;
	givedate(4 * 3, 6 * 3);
	map[4 * 3][8 * 3] = 2;
	givedate(4 * 3, 8 * 3);
	map[4 * 3][10 * 3] = 2;
	givedate(4 * 3, 10 * 3);
	//第四列
	map[6 * 3][2 * 3] = 2;
	givedate(6 * 3, 2 * 3);
	map[6 * 3][3 * 3] = 2;
	givedate(6 * 3, 3 * 3);
	map[6 * 3][4 * 3] = 2;
	givedate(6 * 3, 4 * 3);
	map[6 * 3][6 * 3] = 2;
	givedate(6 * 3, 6 * 3);
	map[6 * 3][8 * 3] = 2;
	givedate(6 * 3, 8 * 3);
	map[6 * 3][10 * 3] = 2;
	givedate(6 * 3, 10 * 3);
	//第六列
	map[7 * 3][10 * 3] = 2;
	givedate(7 * 3, 10 * 3);
	//第七列
	map[8 * 3][2 * 3] = 2;
	givedate(8 * 3, 2 * 3);
	map[8 * 3][4 * 3] = 2;
	givedate(8 * 3, 4 * 3);
	map[8 * 3][6 * 3] = 2;
	givedate(8 * 3, 6 * 3);
	map[8 * 3][8 * 3] = 2;
	givedate(8 * 3, 8 * 3);
	map[8 * 3][10 * 3] = 2;
	givedate(8 * 3, 10 * 3);
	//第八列
	map[10 * 3][2 * 3] = 2;
	givedate(10 * 3, 2 * 3);
	map[10 * 3][3 * 3] = 2;
	givedate(10 * 3, 3 * 3);
	map[10 * 3][4 * 3] = 2;
	givedate(10 * 3, 4 * 3);
	map[10 * 3][6 * 3] = 2;
	givedate(10 * 3, 6 * 3);
	map[10 * 3][8 * 3] = 2;
	givedate(10 * 3, 8 * 3);
	map[10 * 3][10 * 3] = 2;
	givedate(10 * 3, 10 * 3);
	//第十列
	map[12 * 3][2 * 3] = 2;
	givedate(12 * 3, 2 * 3);
	map[12 * 3][4 * 3] = 2;
	givedate(12 * 3, 4 * 3);
	map[12 * 3][6 * 3] = 2;
	givedate(12 * 3, 6 * 3);
	map[12 * 3][8 * 3] = 2;
	givedate(12 * 3, 8 * 3);
	map[12 * 3][9 * 3] = 2;
	givedate(12 * 3, 9 * 3);
	map[12 * 3][11 * 3] = 2;
	givedate(12 * 3, 11 * 3);
	//第十二列
	map[13 * 3][6 * 3] = 2;
	givedate(13 * 3, 6 * 3);
	map[13 * 3][8 * 3] = 2;
	givedate(13 * 3, 8 * 3);
	//第十三列
	map[14 * 3][3] = 2;
	givedate(14 * 3, 1 * 3);
	map[14 * 3][2 * 3] = 2;
	givedate(14 * 3, 2 * 3);
	map[14 * 3][4 * 3] = 2;
	givedate(14 * 3, 4 * 3);
	map[14 * 3][5 * 3] = 2;
	givedate(14 * 3, 5 * 3);
	map[14 * 3][6 * 3] = 2;
	givedate(14 * 3, 6 * 3);
	map[14 * 3][8 * 3] = 2;
	givedate(14 * 3, 8 * 3);
	map[14 * 3][10 * 3] = 2;
	givedate(14 * 3, 10 * 3);
	//第十四列
	map[16 * 3][2 * 3] = 2;
	givedate(16 * 3, 2 * 3);
	map[16 * 3][4 * 3] = 2;
	givedate(16 * 3, 4 * 3);
	map[16 * 3][6 * 3] = 2;
	givedate(16 * 3, 6 * 3);
	map[16 * 3][8 * 3] = 2;
	givedate(16 * 3, 8 * 3);
	map[16 * 3][10 * 3] = 2;
	givedate(16 * 3, 10 * 3);
	//第十六列
	map[17 * 3][8 * 3] = 2;
	givedate(17 * 3, 8 * 3);
	//第十七列
	map[18 * 3][2 * 3] = 2;
	givedate(18 * 3, 2 * 3);
	map[18 * 3][4 * 3] = 2;
	givedate(18 * 3, 4 * 3);
	map[18 * 3][6 * 3] = 2;
	givedate(18 * 3, 6 * 3);
	map[18 * 3][7 * 3] = 2;
	givedate(18 * 3, 7 * 3);
	map[18 * 3][8 * 3] = 2;
	givedate(18 * 3, 8 * 3);
	map[18 * 3][10 * 3] = 2;
	givedate(18 * 3, 10 * 3);


	BeginBatchDraw();
}

//显示函数
void show()
{
	int i, j;
	putimage(0, 0, &img_bk);

	if (whether > 0)
	{
		putimage(x_boom, y_boom, Boomwid, Boomhig, &img_boom1, boom_order * Boomwid, boom_turn * Boomhig, NOTSRCERASE);
		putimage(x_boom, y_boom, Boomwid, Boomhig, &img_boom, boom_order * Boomwid, boom_turn * Boomhig, SRCINVERT);
		//显示炸弹
	}
	if (boom > 0)
	{
		boom_turn = 1;
		putimage(x_boom, y_boom, Boomwid, Boomhig, &img_boom1, boom_order * Boomwid, boom_turn * Boomhig, NOTSRCERASE);
		putimage(x_boom, y_boom, Boomwid, Boomhig, &img_boom, boom_order * Boomwid, boom_turn * Boomhig, SRCINVERT);
		if (boom_up > 0)
		{
			boom_turn = 4;
			putimage(x_boom, y_boom - Boomhig, Boomwid, Boomhig, &img_boom1, boom_order * Boomwid, boom_turn * Boomhig, NOTSRCERASE);
			putimage(x_boom, y_boom - Boomhig, Boomwid, Boomhig, &img_boom, boom_order * Boomwid, boom_turn * Boomhig, SRCINVERT);
		}
		if (boom_down > 0)
		{
			boom_turn = 5;
			putimage(x_boom, y_boom + Boomhig, Boomwid, Boomhig, &img_boom1, boom_order * Boomwid, boom_turn * Boomhig, NOTSRCERASE);
			putimage(x_boom, y_boom + Boomhig, Boomwid, Boomhig, &img_boom, boom_order * Boomwid, boom_turn * Boomhig, SRCINVERT);
		}
		if (boom_left > 0)
		{
			boom_turn = 2;
			putimage(x_boom - Boomwid, y_boom, Boomwid, Boomhig, &img_boom1, boom_order * Boomwid, boom_turn * Boomhig, NOTSRCERASE);
			putimage(x_boom - Boomwid, y_boom, Boomwid, Boomhig, &img_boom, boom_order * Boomwid, boom_turn * Boomhig, SRCINVERT);
		}
		if (boom_right > 0)
		{
			boom_turn = 3;
			putimage(x_boom + Boomwid, y_boom, Boomwid, Boomhig, &img_boom1, boom_order * Boomwid, boom_turn * Boomhig, NOTSRCERASE);
			putimage(x_boom + Boomwid, y_boom, Boomwid, Boomhig, &img_boom, boom_order * Boomwid, boom_turn * Boomhig, SRCINVERT);
		}
		boom_turn = 0;
	}


	for (i = 0; i < X; i++)
	{
		for (j = 0; j < Y; j++)
		{

			if (map[i][j] == 2)
			{
				putimage(i * 10, j * 10, &img_stop1, NOTSRCERASE);
				putimage(i * 10, j * 10, &img_stop, SRCINVERT);
			}


		}
	}

	putimage(x_man, y_man, distence, distence, &img_man1, order * distence, turn * distence, NOTSRCERASE);
	putimage(x_man, y_man, distence, distence, &img_man, order * distence, turn * distence, SRCINVERT);
	//显示炸弹人

	for (i = 0; i < 3; i++)
	{
		putimage(arme_x[i], arme_y[i], armewid, armehig, &img_arme1, arme_order[i] * armewid, arme_turn[i] * armehig, NOTSRCERASE);
		putimage(arme_x[i], arme_y[i], armewid, armehig, &img_arme, arme_order[i] * armewid, arme_turn[i] * armehig, SRCINVERT);
	}

	FlushBatchDraw();

}

//与用户输入无关的更新
void updateWithoutInput()
{
	static int x = 0;              //炸弹爆炸时间判断
	if (whether > 0)
	{
		if (x < 5)
			x++;
		if (x == 5)
		{
			boom_order++;
			if (boom_order == 3)
				boom_order = 0;
		}
		end = clock();
		if (((double)end - begin) / CLK_TCK > 2)
		{
			begin = clock();
			boom = 1;
		}
	}
	if (boom > 0)                   //炸弹爆炸后时间判断
	{
		if (x < 5)
			x++;
		if (x == 5)
		{
			boom_order++;
			if (boom_order == 3)
				boom_order = 0;
		}
		end = clock();
		if (((double)end - begin) / CLK_TCK > 0.5)
		{
			boom = 0;
			whether = 0;
			map[x_boom / 10 + 1][y_boom / 10 + 1] = 0;
			map[x_boom / 10 + 1][y_boom / 10] = 0;
			map[x_boom / 10 + 1][y_boom / 10 + 2] = 0;
			map[x_boom / 10][y_boom / 10 + 1] = 0;
			map[x_boom / 10 + 2][y_boom / 10 + 1] = 0;
		}
		if (map[(x_boom + 5) / 10 - Boomhig / 10][(y_boom + 5) / 10 + 1] == 0)       //炸弹上方的爆炸判定   y+1为了保持在中间判定
			boom_up++;
		if (map[(x_boom + 5) / 10 + Boomhig / 10][(y_boom + 5) / 10 + 1] == 0)      //炸弹下方的爆炸判定   
			boom_down++;
		if (map[(x_boom + 5) / 10 + 1][(y_boom + 5) / 10 - Boomwid / 10] == 0)     //炸弹左侧的爆炸判定
			boom_left++;
		if (map[(x_boom + 5) / 10 + 1][(y_boom + 5) / 10 + Boomwid / 10] == 0)      //炸弹右侧的爆炸判定
			boom_right++;

		//炸弹伤害判断
		//人物死亡判定
		if (x_man <= x_boom + 2 * Boomwid && x_man >= x_boom - Boomwid)
		{
			if (y_man <= y_boom + Boomhig && y_man >= y_boom)
			{
				over = 0;
			}
		}
		if (y_man <= y_boom + 2 * Boomhig && y_man >= y_boom - Boomhig)
		{
			if (x_man <= x_boom + Boomwid && x_man >= x_boom)
			{
				over = 0;
			}
		}
		//怪物死亡判定
		int i = 0, j = 0;
		for (i = 0; i < 3; i++)
		{
			if (arme_x[i] <= x_boom + 2 * Boomwid && arme_x[i] >= x_boom - Boomwid)
			{
				if (arme_y[i] <= y_boom + Boomhig && arme_y[i] >= y_boom)
				{
					arme_x[i] = -50;
					arme_y[i] = -50;
					armenum--;
				}
			}
			if (arme_y[i] <= y_boom + 2 * Boomhig && arme_y[i] >= y_boom - Boomhig)
			{
				if (arme_x[i] <= x_boom + Boomwid && arme_x[i] >= x_boom)
				{
					arme_x[i] = -50;
					arme_y[i] = -50;
					armenum--;
				}
			}
		}
	}

	//敌人移动更新模块
	static int armespeed[3] = { 0 };  //怪物移动限速
									  //怪物1
	if (arme_x[0] == 150 && arme_y[0] == 30)  //向下转
	{
		arme_turn[0] = 1;
		arme_order[0]++;
		if (arme_order[0] == 3)
			arme_order[0] = 0;
	}
	else if (arme_x[0] == 150 && arme_y[0] == 150)       //向右转
	{
		arme_turn[0] = 2;
		arme_order[0]++;
		if (arme_order[0] == 3)
			arme_order[0] = 0;
	}
	else if (arme_x[0] == 13 * 30 && arme_y[0] == 150)   //向上转
	{
		arme_turn[0] = 3;
		arme_order[0]++;
		if (arme_order[0] == 3)
			arme_order[0] = 0;
	}
	else if (arme_x[0] == 13 * 30 && arme_y[0] == 30)     //向左转
	{
		arme_turn[0] = 0;
		arme_order[0]++;
		if (arme_order[0] == 3)
			arme_order[0] = 0;
	}
	//怪物1移动
	if (arme_x[0] == 150 && arme_y[0] < 150)           //向下移动
	{
		if (armespeed[0] < 10)
			armespeed[0]++;
		if (armespeed[0] == 10)
		{
			armespeed[0] = 0;
			if (map[arme_x[0] / 10 + 1][(arme_y[0] + armehig) / 10] != 3)
				arme_y[0]++;
		}
	}
	else if (arme_x[0] == 13 * 30 && arme_y[0] > 30)    //向上移动
	{
		if (armespeed[0] < 10)
			armespeed[0]++;
		if (armespeed[0] == 10)
		{
			armespeed[0] = 0;
			if (map[arme_x[0] / 10 + 1][arme_y[0] / 10] != 3)
				arme_y[0]--;
		}
	}
	else if (arme_y[0] == 150 && arme_x[0] < 13 * 30)   //向右移动
	{
		if (armespeed[0] < 10)
			armespeed[0]++;
		if (armespeed[0] == 10)
		{
			armespeed[0] = 0;
			if (map[(arme_x[0] + armewid) / 10][arme_y[0] / 10 + 1] != 3)
				arme_x[0]++;
		}
	}
	else if (arme_y[0] == 30 && arme_x[0] > 150)       //向左移动
	{
		if (armespeed[0] < 10)
			armespeed[0]++;
		if (armespeed[0] == 10)
		{
			armespeed[0] = 0;
			if (map[arme_x[0] / 10][arme_y[0] / 10 + 1] != 3)
				arme_x[0]--;
		}
	}

	//怪物2
	if (arme_x[1] == 15 * 30 && arme_y[1] == 30)  //向下转
	{
		arme_turn[1] = 1;
		arme_order[1]++;
		if (arme_order[1] == 3)
			arme_order[1] = 0;
	}
	else if (arme_x[1] == 15 * 30 && arme_y[1] == 7 * 30)   //向右转
	{
		arme_turn[1] = 2;
		arme_order[1]++;
		if (arme_order[1] == 3)
			arme_order[1] = 0;
	}
	else if (arme_y[1] == 7 * 30 && arme_x[1] == 17 * 30)   //向上转
	{
		arme_turn[1] = 3;
		arme_order[1]++;
		if (arme_order[1] == 3)
			arme_order[1] = 0;
	}
	else if (arme_x[1] == 17 * 30 && arme_y[1] == 30)       //向左转
	{
		arme_turn[1] = 0;
		arme_order[1]++;
		if (arme_order[1] == 3)
			arme_order[1] = 0;
	}
	//怪物2移动
	if (arme_x[1] == 15 * 30 && arme_y[1] < 7 * 30)     //向下移动
	{
		if (armespeed[1] < 10)
			armespeed[1]++;
		if (armespeed[1] == 10)
		{
			armespeed[1] = 0;
			if (map[arme_x[1] / 10 + 1][(arme_y[1] + armehig) / 10] != 3)
				arme_y[1]++;
		}
	}
	else if (arme_y[1] == 7 * 30 && arme_x[1] < 17 * 30)    //向右移动
	{
		if (armespeed[1] < 10)
			armespeed[1]++;
		if (armespeed[1] == 10)
		{
			armespeed[1] = 0;
			if (map[(arme_x[1] + armewid) / 10][arme_y[1] / 10 + 1] != 3)
				arme_x[1]++;
		}
	}
	else if (arme_x[1] == 17 * 30 && arme_y[1] > 30)      //向上移动
	{
		if (armespeed[1] < 10)
			armespeed[1]++;
		if (armespeed[1] == 10)
		{
			armespeed[1] = 0;
			if (map[arme_x[1] / 10 + 1][arme_y[1] / 10] != 3)
				arme_y[1]--;
		}
	}
	else if (arme_y[1] == 30 && arme_x[1] > 15 * 30)       //向左移动
	{
		if (armespeed[1] < 10)
			armespeed[1]++;
		if (armespeed[1] == 10)
		{
			armespeed[1] = 0;
			if (map[arme_x[1] / 10][arme_y[1] / 10 + 1] != 3)
				arme_x[1]--;
		}
	}

	//怪物3
	if (arme_x[2] == 13 * 30 && arme_y[2] == 9 * 30)  //向下转
	{
		arme_turn[2] = 1;
		arme_order[2]++;
		if (arme_order[2] == 3)
			arme_order[2] = 0;
	}
	if (arme_x[2] == 13 * 30 && arme_y[2] == 11 * 30)       //向右转
	{
		arme_turn[2] = 2;
		arme_order[2]++;
		if (arme_order[2] == 3)
			arme_order[2] = 0;
	}
	if (arme_x[2] == 17 * 30 && arme_y[2] == 11 * 30)        //向上转
	{
		arme_turn[2] = 3;
		arme_order[2]++;
		if (arme_order[2] == 3)
			arme_order[2] = 0;
	}
	if (arme_x[2] == 17 * 30 && arme_y[2] == 9 * 30)         //向左转
	{
		arme_turn[2] = 0;
		arme_order[2]++;
		if (arme_order[2] == 3)
			arme_order[2] = 0;
	}
	//怪物3移动
	if (arme_x[2] == 13 * 30 && arme_y[2] < 11 * 30)         //向下移动
	{
		if (armespeed[2] < 10)
			armespeed[2]++;
		if (armespeed[2] == 10)
		{
			armespeed[2] = 0;
			if (map[arme_x[2] / 10 + 1][(arme_y[2] + armehig) / 10] != 3)
				arme_y[2]++;
		}
	}
	else if (arme_y[2] == 11 * 30 && arme_x[2] < 17 * 30)            //向右移动
	{
		if (armespeed[2] < 10)
			armespeed[2]++;
		if (armespeed[2] == 10)
		{
			armespeed[2] = 0;
			if (map[(arme_x[2] + armewid) / 10][arme_y[2] / 10 + 1] != 3 && map[(arme_x[2] + armewid) / 10][arme_y[2] / 10 + 2] != 3)
				arme_x[2]++;
		}
	}
	else if (arme_x[2] == 17 * 30 && arme_y[2] > 9 * 30)          //向上移动
	{
		if (armespeed[2] < 10)
			armespeed[2]++;
		if (armespeed[2] == 10)
		{
			armespeed[2] = 0;
			if (map[arme_x[2] / 10 + 1][arme_y[2] / 10] != 3)
				arme_y[2]--;
		}
	}
	else if (arme_y[2] == 9 * 30 && arme_x[2] > 13 * 30)         //向左移动
	{
		if (armespeed[2] < 10)
			armespeed[2]++;
		if (armespeed[2] == 10)
		{
			armespeed[2] = 0;
			if (map[arme_x[2] / 10][arme_y[2] / 10 + 1] != 3 && map[arme_x[2] / 10][arme_y[2] / 10 + 2] != 3)
				arme_x[2]--;
		}
	}
}

//与用户输入有关的更新
void updateWithInput()
{
	static int num = 0;
	if ((GetAsyncKeyState(0x57) & 0x8000))//w 
	{
		if (num < control)
			num++;
		else if (num == control)
		{
			if (y_man > 30)
			{

				order++;
				turn = 1;

				if (map[(x_man + distence / 2) / 10][y_man / 10] != 2 && map[(x_man + distence / 2) / 10][y_man / 10] != 22)
				{
					y_man = y_man - speed;
				}


				Sleep(1);
				if (order == 3)
					order = 0;
			}
			num = 0;
		}
	}
	if ((GetAsyncKeyState(0x53) & 0x8000))//s
	{
		if (num < control)
			num++;
		else if (num == control)
		{
			if (y_man + distence < high - 30)
			{

				order++;
				turn = 0;

				if (map[(x_man + distence / 2) / 10][(y_man + distence) / 10] != 2 && map[(x_man + distence / 2) / 10][(y_man + distence) / 10] != 22)
				{
					y_man = y_man + speed;
				}


				Sleep(1);
				if (order == 3)
					order = 0;
			}
			num = 0;
		}
	}
	if ((GetAsyncKeyState(0x41) & 0x8000))//a 
	{
		if (num < control)
			num++;
		else if (num == control)
		{
			if (x_man > 30)
			{
				order++;
				turn = 2;
				if (map[x_man / 10][(y_man + distence / 2) / 10] != 22 && map[x_man / 10][(y_man + distence / 2) / 10] != 2)
				{
					x_man = x_man - speed;
				}
				Sleep(1);
				if (order == 3)
					order = 0;
			}
			num = 0;
		}
	}
	if ((GetAsyncKeyState(0x44) & 0x8000))//d
	{
		if (num < control)
			num++;
		else if (num == control)
		{
			if (x_man + distence < width - 30)
			{
				order++;
				turn = 5;
				if (map[(x_man + distence) / 10][(y_man + distence / 2) / 10] != 22 && map[(x_man + distence) / 10][(y_man + distence / 2) / 10] != 2)
				{
					x_man = x_man + speed;
				}

				Sleep(1);
				if (order == 3)
					order = 0;
			}
			num = 0;
		}
	}
	if ((GetAsyncKeyState(VK_SPACE)))
	{
		if (whether == 0)
		{
			begin = clock();
			x_boom = x_man;
			y_boom = y_man;
			map[x_boom / 10 + 1][y_boom / 10 + 1] = 3;
			map[x_boom / 10 + 1][y_boom / 10] = 3;
			map[x_boom / 10 + 1][y_boom / 10 + 2] = 3;
			map[x_boom / 10][y_boom / 10 + 1] = 3;
			map[x_boom / 10 + 2][y_boom / 10 + 1] = 3;
			whether++;
		}
	}
}

void playmusic()
{
	mciSendString(_T("open .\\炸弹人.mp3 alias bkmusic"), NULL, 0, NULL);//背景音乐
	mciSendString(_T("play bkmusic repeat"), NULL, 0, NULL);  // 循环播放
}
//游戏结束
void gameover()
{
	_getch();
	closegraph();
	EndBatchDraw();

}

void main()
{
	int start = 0;
	loadpicture();//加载图片
	startup();  // 数据初始化
	datemap();  //地图初始化
	playmusic();           //播放音乐 
	while (1)  //  游戏循环执行
	{
		if (over == 0)           //炸弹人死亡,游戏失败
		{
			putimage(0, 0, &img_fail);
			FlushBatchDraw();
			Sleep(3000);
			exit(0);
		}
		if (armenum == 0)       //敌人全灭,胜利
		{
			putimage(0, 0, &img_win);
			FlushBatchDraw();
			Sleep(3000);
			exit(0);
		}
		if (over == 1 && armenum > 0)
		{
			show();  // 显示画面
			updateWithInput();     // 与用户输入有关的更新
			updateWithoutInput();  // 与用户输入无关的更新
		}
	}
	gameover();     // 游戏结束、后续处理
}

ava
芥末味牙膏

2019-12-20

0

数组内乘法只看乘积是多少就好。

map[x][y] = 只是按照作者的意愿,在他想要的地方设置障碍物

// 这个函数表示一次设置 8 个障碍物,具体放置的位置看 x,y 的值即可

givedate(x, y)

{

map[x][y + 1] = 22;
 map[x][y + 2] = 22;
 map[x + 1][y] = 22;
 map[x + 1][y + 1] = 22;
 map[x + 1][y + 2] = 22;
 map[x + 2][y] = 22;
 map[x + 2][y + 1] = 22;
 map[x + 2][y + 2] = 22;
}

ava
xiongfj ◑◑

2019-12-21

技术讨论社区