c语言游戏代码炸弹人(C++打造——炸弹人2D地图)

今天带来一个经典的游戏(地图)。炸弹人游戏,不少人都熟悉,也很经典,虽说现在很少玩,但是一提起都知晓,今天用C++来打造一个2D的游戏地图吧

下面我就不把代码发出来了,还是各位大佬们动手比较好,我会发一下这个项目的思路,各位按照思路去做,一般都没问题的,只是记得自己找好素材图片哈

c语言游戏代码大全

Win32 知识

1.初始化窗口结构体

2.创建窗口

3.注册窗口

4.消息循环

1.2D 游戏界面

思路:

1.创建非空项目;

2. 创建全局变量

/************************************************************/

HBITMAP fullmap;

HDC mdc; //不能理解的亲们,可以看作存储照片的缓冲区

//常量定义

constint rows = 8, cols = 8;

void MyPaint(HDC hdc);

/************************************************************/

3.准备工作:数组画图,关联DC 加载图片

/************************************************************/

int mapIndex[rows*cols] = { 2, 2, 2, 2, 2, 2, 2,2, //第1列

2, 0, 1, 0, 0, 0, 1,2, //第2列

2, 0, 0, 1, 0, 0, 0,2, //第3列

2, 1, 0, 1, 0, 1, 1,2,

2, 0, 1, 1, 1, 0, 0,2,

2, 0, 1, 0, 0, 2, 0,2,

2, 1, 0, 1, 0, 0, 1,2,

2, 2, 2, 2, 2, 2, 2,2 };

//mapIndex[x]=2 贴map2

hdc = GetDC(hWnd); //获取窗口dc

mdc = CreateCompatibleDC(hdc); //关联DC

bufdc = CreateCompatibleDC(hdc);

fullmap = CreateCompatibleBitmap(hdc, cols * 50, rows * 50);

SelectObject(mdc, fullmap);

HBITMAP map[3]; //存储位图

TCHAR filename[20] = L""; //宽字节

int rowNum, colNum; //行和列的序号

int i, x, y; //数组对应的方块的左上角的坐标

//加载位图 i++ 自增 i=i+1

for (i = 0; i < 3; i++)

{

//sprintf

//fscanf() stdin stderr stdout

//filename=map0.bmp

wsprintf(filename, L"map%d.bmp", i);

map[i] = (HBITMAP)LoadImage(NULL, filename, IMAGE_BITMAP, 50, 50, LR_LOADFROMFILE);

}

4.求坐标

//mapIndex数组中定义取出对应图片,进行地图拼接

for (i = 0; i < rows*cols; i++)

{

//map[mapIndex[i]] ----- mapIndex[i]=0 1 2

//map[0] map[1] map[2]

SelectObject(bufdc, map[mapIndex[i]]);

//求列编号

rowNum = i / cols;

//求行编号

colNum = i%cols;

//x坐标

x = colNum * 50;

//y坐标

y = rowNum * 50;

BitBlt(mdc, x, y, 50, 50, bufdc, 0, 0, SRCCOPY);

5.贴图

void MyPaint(HDChdc)

{

//贴上拼接后的组合图

SelectObject(mdc, fullmap);

BitBlt(hdc, 0, 0, cols * 50, rows * 50, mdc, 0, 0, SRCCOPY);

}

2.鼠标能够显示坐标

2.1 获取鼠标坐标 LPARAM

LOWORD

HIWORD

2.2 如何在win32 窗口打印信息

void MyPaint(HDChdc, LPARAMlParam)

{

int x, y; //x 和y坐标

TCHAR str[20] = L"";

//LPARAM

x = LOWORD(lParam);

y = HIWORD(lParam);

SetTextColor(hdc, RGB(255, 0, 0));

TextOut(hdc, 10, 10, L"鼠标坐标", wcslen(L"鼠标坐标"));

wsprintf(str, L"X坐标:%d ", x);

TextOut(hdc, 30, 30, str, wcslen(str));

wsprintf(str, L"Y坐标:%d ", y);

TextOut(hdc, 30, 50, str, wcslen(str));

//弹出框,----------弹出这信息

//messageBox 跟着鼠标显示坐标

}

Kbhit() _getch() scanf_s() scanf

(加QQ群:466572167,群内有大量学习资源可供学习)

最后的话,效果图不是很理想,因为的话素材图片没找的很完善,但是一般的2D地图的做法就是这种思路.

其实不止炸弹人地图是2D的模式,那个坦克大战都应该有玩过,很熟悉吧,那个的地图做法同样也可以按照上面的思路进行编程.最后我就说到这了要是有想做游戏方面的,这种2D地图的。按照这个思路去写,很晚了也该睡了,各位都晚安。各位小伙伴们可以加群466572167 。打手不易,有不足欢迎各位大佬们指出,就先说到这。。。。

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友