C语言手写魂斗罗(一)

78 篇文章 1 订阅
14 篇文章 0 订阅

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的走动。


源码素材资源有疑问+q群:951028656 或关注公众号:奇牛编程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值