【C语言编程学习】当鸣人放了一个螺旋丸,我突然发觉这个事情不简单……

很多时候,你不说,我也不说。就这样,想着想着就算了

嗨,这里是狐狸~~

几天不见,甚是想念,这几天一直在想一些事情,就耽搁了一些时间,今天早上起来的时候,突然刷到了火影忍者,里面鸣人放螺旋丸的样子不管看多少次还是觉的惊艳,然后上班的时候一直在想,乘着摸鱼的时间把想把这个样子实现出来,最后的结果是还不错,在这里给大家分享出来,效果不好勿喷,需要优化的地方还有很多,希望大家多多担待!

 感觉我想要效果还是出来了的,不知道大家觉得怎么样,那么接下来我就来教大家如何来完成这个项目。

之前的项目我们都要用到EasyX图形库,因为我们是用C语言学的,没有这个库,我们就非常难受,但很多同学都不会用这个库,那么在这里呢,简单的教大家如何来用这个库去做我们的一些简单操作。

1、图形基础

     1.1 如何显示一张图片?

          1.1.1 起名字
                类型:IMAGE
           1.1.2 所以要加载图片
                loadimage(&图片名字,"图片的路径");
            1.1.3 显示图片:putimage(int x,int y,那张图片);

      1.2 创建图形窗口

           1.2.1 创建一个多大的窗口
                initgraph(int w,int h);
            1.2.2 关闭窗口
                closegraph();

1.3 透明贴图技术

         1.3.1 认识一下背景图和掩码图
            1.3.2 采用SRCAND 方式掩码图
                putimage(int x,int y,那张图片,SRCAND);
            1.3.3 采用SRCPAINT 方式贴背景图
                putimage(int x,int y,那张图片,SRCPAINT);

2.音乐播放+多线程

        2.1 包含头文件 #include <mmsystem.h>
        2.2 #pragma comment(lib,"winmm.lib")
        2.3 mciSendString("指令",0,0,0);
                指令: 
                        open:打开
                        play:播放
                        close:关闭
            CreateThread---->函数指针

有兴趣的同学可以进群学习更多,想用C语言来做项目,easyx图形库可以说是我们最容易上手的好伙伴了,好,接下来我们进入代码时间,我依旧写了很多的注释,希望大家可以耐心观看以及尝试,自己去写的才是自己的。

代码时间

1、预处理

头文件以及播放音乐的静态库加上去

#define _CRT_SECURE_NO_WARNINGS  //预处理 关闭安全检查--->vs对于某一些函数做了改进
#include <stdio.h>
#include <stdlib.h>
#include <graphics.h>
#include <conio.h>
//做音乐播放的第一步
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")  //如何自己写一个静态库 windows的知识
IMAGE 背景图片;

2、结构体

接下来当然就是我们的结构体了,这里我用的函数名是中文的,建议用英文,不要学我,我这是图让大家更容易理解。

struct 背景属性
{
	//背景从图片坐标的那个位置开始显示
	int xx;
	int yy;
	int speed;		//图片切换速度
};
struct 背景属性 背景 = { 1000, 0, 50 };
//鸣人模块
IMAGE img[16];		//img[0] img[1] img[2] ...img[15];
IMAGE imgy[16];
struct 鸣人属性
{
	//鸣人的开始显示在窗口上的坐标
	int x;
	int y;
	int speed;   //鸣人的移动速度
};
struct 鸣人属性 鸣人 = { 200, 400, 5 };

3、帧动画

接下来我们通过函数,让我们的图片动起来,不要小看帧动画,实现帧动画的函数有很多,方法也有很多,现在的什么动漫,什么电影,都是通过帧动画来实现的,一秒内实现的帧越多也就越清楚

void 画鸣人()
{
	//4帧
	int i = 0;
	while (i < 4)
	{
		putimage(0, 0, 1000, 700, &背景图片, 背景.xx, 背景.yy);
		putimage(鸣人.x, 鸣人.y, &imgy[i], SRCAND);
		putimage(鸣人.x, 鸣人.y, &img[i], SRCPAINT);
		Sleep(50);
		i++;
	}
}
void 画技能()
{
	int i = 4;		//从4帧到第15放技能
	while (i < 16)
	{
		putimage(0, 0, 1000, 700, &背景图片, 背景.xx, 背景.yy);
		putimage(鸣人.x, 鸣人.y, &imgy[i], SRCAND);
		putimage(鸣人.x, 鸣人.y, &img[i], SRCPAINT);
		Sleep(50);
		i++;
	}
}

4、播放音乐

这个比较简单,播放音乐的方式也有很多,大家可以自己选择

//播放音乐:函数指针
DWORD WINAPI  播放音乐(LPVOID lpVoid)
{
	mciSendString("open 1.mp3", 0, 0, 0);
	mciSendString("play 1.mp3 wait", 0, 0, 0);
	mciSendString("close 1.mp3", 0, 0, 0);
	return 0;
}

5、初始化

加载我们的资源

void 加载资源()
{
	//3450*700
	loadimage(&背景图片, "Background\background.jpg");
	//数组用循环去做操作: 批量加载技术
	for (int i = 0; i < 16; i++)
	{
		char imgURL[50] = "";
		sprintf(imgURL, "Helix_attack\Helix_attack_r%d.gif", i + 1);
		loadimage(&img[i], imgURL);
		sprintf(imgURL, "Helix_attack\Helix_attacky_r%d.gif", i + 1);
		loadimage(&imgy[i], imgURL);
	}
}

6、按键控制

控制我们的背景以及鸣人的移动,还有我们鸣人放技能的按键控制

//按键控制-->能够按键控制背景的切换
void 按键控制()
{
	char userKey = _getch();		//接收用户按键
	switch (userKey)
	{
	case 'a':	//左
	case 'A':
	case 75:
		背景.xx -= 背景.speed;
		if (背景.xx <= 0)
		{
			背景.xx = 0;
		}
		break;
	case 'd':	//右
	case 'D':
	case 77:
		背景.xx += 背景.speed;
		if (背景.xx >= 3450 - 1000)
		{
			背景.xx = 3450 - 1000;
		}
		break;
	case ' ':		//按空格键搓一个螺旋丸
		CreateThread(0, 0, 播放音乐, 0, 0, 0);
		画技能();
		break;
	}
}

7、主函数

int main()
{
	加载资源();
	mciSendString("open 2.mp3", 0, 0, 0);
	mciSendString("play 2.mp3 repeat", 0, 0, 0);
	initgraph(1000, 700);
	while (1)
	{
		画鸣人();
		//用kbhit去判断是否存在按键
		if (_kbhit())
		{
			按键控制();
		}
	}
	_getch();
	closegraph();
	return 0;
}

总结

简单说一下吧,大家也可以看出来,代码并不多,效果也比较粗糙,但是基本的效果还是出来的,有兴趣的同学也可以自己去尝试的完成这个项目,不用复制我的,自己用自己的方法去实现也是极好的,相信我能做到,大家一定不会比我差。好啦,今天就到这里啦,感谢大家的一路陪伴以及支持,我也真的希望大家都可以在这里真真实实的学到知识,并从中感受到编程的快乐。

 后续UP主还会发布更多的项目源码以及学习资料,希望大家可以持续关注,有什么问题可以回帖留言。想要C/C++学习资料以及其他项目的源码的可以加群【1083227756】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步!!!

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>