当前位置:网站首页>C语言手写魂斗罗(一)

C语言手写魂斗罗(一)

2022-08-11 10:51:00 程序员Rock

目录

1. 项目介绍

配套视频教程

2. 游戏效果演示

3. 项目准备

4. 创建项目

5. 实现游戏的启动界面


1. 项目介绍

使用C语言,手写魂斗罗经典游戏场景。

配套视频教程

视频讲解整个开发过程。 

2. 游戏效果演示

为了避免违规,这里不做演示,可以直接在视频教程中查看完整效果。

3. 项目准备

VS2019+EasyX图形库
Easyx直接在easyx官网下载,然后双击安装。

4. 创建项目

使用vs2019创建一个空项目,并导入项目素材资源(留言邮箱地址获取)

素材目录res: 

 修改项目属性,把字符集修改为多字节字符集:

5. 实现游戏的启动界面

先导入工具文件tools.h和tools.cpp 。

#include <stdio.h>
#include <graphics.h>
#include "tools.h"

#define WIN_WIDTH	1400
#define WIN_HEIGHT	600

IMAGE imgWelcome;
IMAGE imgStartNormal;
IMAGE imgStartPress;
IMAGE imgBg;

void loadResources() {
	char name[128];
	initgraph(WIN_WIDTH, WIN_HEIGHT);

	loadimage(&imgBg, "res/bg.png");
	loadimage(&imgWelcome, "res/welcome.png");
	loadimage(&imgStartNormal, "res/start_normal.png");
	loadimage(&imgStartPress, "res/start_press.png");
}

void updateWindow() {
	putimage(0, 0, &imgBg);
}

void welcome() {
	mciSendString("play res/welcome.mp3", 0, 0, 0);

	putimage(0, 0, &imgWelcome);
	int x = 192;
	int y = 452 - 5 - 12;
	putimagePNG(x, y, &imgStartNormal);

	MOUSEMSG msg;
	while (1) {
		msg = GetMouseMsg();
		if (msg.uMsg == WM_MOUSEMOVE || msg.uMsg == WM_LBUTTONDOWN || msg.uMsg == WM_LBUTTONUP) {
			if (msg.x > x && msg.x < x + imgStartNormal.getwidth() &&
				msg.y > y && msg.y < y + imgStartNormal.getheight()) {
				if (msg.uMsg == WM_LBUTTONUP) {
					break;
				}
				putimagePNG(x, y, &imgStartPress);
			}
			else {
				putimagePNG(x, y, &imgStartNormal);
			}
		}
	}
}

int main(void) {
	loadResources();
	welcome();
	while (1) {
		updateWindow();		
		// to do
	}

	system("pause");
	return 0;
}

 启动按钮的点击原理,非常简单。直接根据鼠标消息的位置来判断,如果在按钮区域之内,就高亮显示,如果在按钮区域之外,按钮就显示正常状态,如果鼠标位置落在按钮区域之内,同时点击了鼠标左键,就认为是按钮的单击事件,然后跳转到游戏场景。

下一节,实现玩家Hero的走动。

 

 

 

原网站

版权声明
本文为[程序员Rock]所创,转载请带上原文链接,感谢
https://rock6.blog.csdn.net/article/details/126260195