C语言编程学习当鸣人放了一个螺旋丸,我突然发觉这个事情不简单......
Posted MAX在码字
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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】了解。想要对程序员的未来发展有兴趣的可以关注微信公众号:【狐狸的编码时光】,希望和大家一起学习进步!!!
以上是关于C语言编程学习当鸣人放了一个螺旋丸,我突然发觉这个事情不简单......的主要内容,如果未能解决你的问题,请参考以下文章