CC++项目:谁都爱玩的4399小游戏黄金矿工教程

CC++项目:谁都爱玩的4399小游戏黄金矿工教程,第1张

C/C++项目:谁都爱玩的4399小游戏黄金矿工教程

   

《黄金矿工中文版》是一款休闲益智小游戏,游戏中你需要看准时机出钩子勾取金子或者砖石来获得金钱的累加,达到一定的金钱数才能够闯关成功,游戏十分经典,强烈推荐大家学会编写这款游戏,休闲时没网也能自己玩哦。 黄金矿工道具说明:       金块:按大小区分,越大越值钱       石头:笨重且不值钱的障碍物       钻石:值钱的小石头       小猪:移动迅速的地下生物,能被钩子抓住       炸药桶:被触碰到就会爆炸的可怕道具       骨头:不值钱的地下道具       布袋:里面装着随机道具的袋子       炸药:按↑ 可以使用,炸掉钩子上的物品,快速收回钩子       生力药剂:加快你收回钩子的速度,一局内有效       石头收藏书:提高你收集到的石头价值,一局内有效       钻石收藏书:你搜集到的钻石将会更值钱,一局内有效       幸运草:可以从布袋中获得更好的道具,一局内有效

今天我就用C语言带大家一步步去完成好玩有趣学会没网也能打开的黄金矿工小游戏。  PS:要安装easyx图形库哦 #include    开发工具为VS2013

在此之前呢,和大家说明一下,因为这是一个比较大的项目了,所以展示所有代码会有些困难,我裁剪了主要的大部分代码,主要目的是让大家明白实现这个项目的逻辑思路,希望大家可以理解,完整代码/编译器/图形库在文章最下方获取哦 正片开始:
第一步: 打开vs2013,创建一个项目,并将准备好的素材资源放到CPP同级目录下(素材可以在文章最下方领取),如图:

第二步:创建窗口,加上背景:

int main()
{
	//创建一个不一样得窗口,图形窗口
	initgraph(1080, 640,EW_SHOWCONSOLE);
	//设置整个窗口的背景颜色 
	setbkcolor(RGB(45, 121, 157));
	//清楚屏幕
	cleardevice();

	initData();

	BeginBatchDraw();
	while (true)
	{
		cleardevice();
		gameDraw();
		hookRock(0.9);
		hookLongAndshort(5);

		FlushBatchDraw();
	}
	EndBatchDraw();
	

	getchar();
	return 0;
}

第三步:用枚举函数设置钩子,设置老头位置:

enum  Index
{
	i_gold = 1,
	i_money = 3,
	i_roleDwon = 5,
	i_roleUp =7,
	i_stone = 9,
	i_bk = 10
};
enum Dir
{
	LEFT,
	RIGHT
};
enum State
{
	S_Normal,
	S_Long,
	S_Short,	
};
//角色位置(老头)
struct Role
{
	int x;
	int y;
	int w;
	int h;
}role;
// 钩子
struct Hook
{
	int x;
	int y;
	int endx;
	int endy;
	int len;
	double angle;	//钩子的角度
	Dir dir;
	int vx;
	int vy;
	State state;
}hook;
第四步:初始化数据,绘制老头和钩子:

//初始化数据
void initData()
{
	for (int i = 0; i < 10; i++)
	{
		WCHAR fileName[20] = { 0 };
		wsprintf(fileName, _T("./images/%d.jpg"), i);
		loadimage(img + i, fileName);
	}
	loadimage(img + 10, _T("./images/bk.jpg"), getwidth(), getheight() - 120);//加载图片到图片变量中去
	
	//绘制老头子
	role.w = (img + i_roleUp)->getwidth();	//140;
	role.h = img[i_roleUp].getheight();		//120;
	role.x = (getwidth() - role.w) / 2;
	role.y = 0;

	//绘制钩子hook
	hook.x = role.x + 47;
	hook.y = role.y + 100;
	hook.len = 50;
	hook.endx = hook.x;
	hook.endy = hook.y + hook.len;
	hook.angle = 0.0;
	hook.dir = RIGHT;
	hook.vx = 0;
	hook.vy = 0;
	hook.state = S_Normal;
}
第五步:让钩子动起来:

//让钩子动起来
void hookRock(double inc)
{
	if (hook.state != S_NORMAL)
		return;
	if (hook.dir == RIGHT)
	{
		hook.angle += inc;
	}
	else
	{
		hook.angle -= inc;
	}
	if (hook.angle >= 81)
	{
		hook.dir = LEFT;
	}
	else if(hook.angle <= -81)
	{
		hook.dir = RIGHT;
	}
	
	//求当前endx,endy的位置
	hook.endx = hook.x + sin(PI/180* hook.angle)* hook.len;
	hook.endy = hook.y + cos(PI/180 * hook.angle)* hook.len;

}
void hookLongAndshort(int speed)
{
	if (GetAsyncKeyState(VK_SPACE) && hook.state == S_Normal)
	{
		hook.state = S_Long;
		hook.vx = sin(PI / 180 * hook.angle) * speed;
		hook.vy = cos(PI / 180 * hook.angle) * speed;
	}
	if (hook.state == S_Long)
	{
		hook.endx += hook.vx;
		hook.endy += hook.vy;
	}
	else if (hook.state == S_Short)
	{
		hook.endx -= hook.vx;
		hook.endy -= hook.vy;
	}
	if (hook.endx <= 0 || hook.endx >= getwidth() || hook.endy >= getheight())
	{
		hook.state = S_Short;
	}
	if (distance(hook)<= hook.len)
	{
		hook.state = S_Normal;
	}
}
好啦,重要的基础代码就这些~需要完整源码对照的同学可以在文章末领取,黄金矿工教程就到此结束啦,后续我会发布更多的项目源码以及学习资料,希望大家可以持续关注,想要C/C++学习资料以及完整源码素材图形库开发工具等的可以在最下方获取,有问题也可以进群提问,希望大家可以在这里得到自己想要的知识,也希望如果对你有所帮助的话可以多多关注点赞评论,有建议也可以在评论区提出,谢谢大家的支持!
   点击下方链接进群: 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5594034.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存