概述
C语言可视化编程小游戏
纯c语言编写的翻卡消消乐小游戏,有图像有音效,还写了个简单的开头动画
效果图
本人大二学生小白一个,写的不好请见谅
这个是带音效的还有个小开头动画的,可以看演示视频
C语言+Easyx做带图有音效《翻牌消消乐》小游戏 大二学生作品
下面是源码
本来相同图片就消除这个功能我觉得很简单的,可是费老半天劲就是实现不了那个功能,最后只能加了许多变量,所以显得代码很臃肿
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<graphics.h>
#include<windows.h>
#include<time.h>
#include <Mmsystem.h>
#pragma comment ( lib, "Winmm.lib" )
IMAGE res[27];//资源
IMAGE bg,logo,logoy;//背景
int rank[5][10];//顺序
MOUSEMSG mode;
void load_res()//res资源加载
{
int i;
for (i = 0; i <= 26; i++)
{
char name[20] = "";
sprintf_s(name, "res/%d.jpg", i);
loadimage(&res[i], name);
}
loadimage(&bg, "res/bg.jpg");
loadimage(&logo, "res/logo.jpg");
loadimage(&logoy, "res/logoy.jpg");
}
void shuffle_the_cards()//洗牌
{
srand((unsigned)(time(NULL)));
int i, x = 0, y = 0;
int number[26] = { 0 };
for (y = 0; y < 5; y++)
for (x = 0; x < 10; x++)
{
while (1)
{
i = (rand() % 25 + 1);//两对1到25号数字随机安插进数组
if (number[i] < 2)
{
number[i]++;
rank[y][x] = i;
break;
}
}
}
}
int main()
{
int i, x=0, y=0, stay = 0, compare[2][2], card[2];
//compare 两次坐标
//card 两次序号
load_res();
shuffle_the_cards();
initgraph(1200, 700);
putimage(0, 0, &bg);
mciSendString("open ./bg.mp3 alias bk", 0, 0, 0);
mciSendString("open ./first.mp3 alias first", 0, 0, 0);
mciSendString("open ./click.mp3 alias click", 0, 0, 0);
mciSendString("open ./bomb.mp3 alias bomb", 0, 0, 0);
mciSendString("play first", 0, 0, 0);
for (i = 1; i <= 10; i++)//开始动画
{
putimage(560, 300, &res[i]);
Sleep(100);
}
for (i = 11; i <= 14; i++)//开始动画
{
putimage(560, 300, &res[i]);
Sleep(500);
}
putimage(0,0, &bg);
Sleep(1000);
mciSendString("close first", 0, 0, 0);
mciSendString("play bk repeat", 0, 0, 0);
putimage(500, 300, &logoy, SRCAND);
putimage(500, 300, &logo, SRCPAINT);
i = 1;
while (i)//判断鼠标是否点击到了开始按键
{
mode = GetMouseMsg();
switch (mode.uMsg)
{
case WM_LBUTTONDOWN:
{
mciSendString("close click", 0, 0, 0);
mciSendString("open ./click.mp3 alias click", 0, 0, 0);
mciSendString("play click", 0, 0, 0);
if ((mode.x > 500 && mode.x < 700) && (mode.y > 300 && mode.y < 500))
i = 0;
}
}
}
Sleep(500);
putimage(0, 0, &bg);
for (y = 0; y < 5; y++)
for (x = 0; x < 10; x++)
if (rank[y][x] != 0)
putimage(((x + 1) * 100 + 10), ((y + 1) * 100 + 10), &res[0]);
while (1)
{
mode = GetMouseMsg();
switch (mode.uMsg)
{
case WM_LBUTTONDOWN:
{
mciSendString("close click", 0, 0, 0);//点击音效
mciSendString("open ./click.mp3 alias click", 0, 0, 0);
mciSendString("play click", 0, 0, 0);
x = mode.x / 100;
y = mode.y / 100;
if ((x >= 1 && x <= 11) && (y >= 1 && y <= 7))
{
if (rank[y - 1][x - 1] != 0)
{
compare[stay][stay] = y - 1;//当前行
compare[stay][stay + 1] = x - 1;//当前列
card[stay] = rank[y - 1][x - 1];//当前序号
stay++;
putimage(((x * 100) + 10), ((y * 100) + 10), &res[rank[y - 1][x - 1]]);
if (stay == 2)//点开两张 开始对比
{
if (card[0] == card[1])//消除
{
rank[y - 1][x - 1] = 0;
rank[compare[0][0]][compare[0][1]] = 0;
mciSendString("close bomb", 0, 0, 0);
mciSendString("open ./bomb.mp3 alias bomb", 0, 0, 0);
mciSendString("play bomb", 0, 0, 0);
}
Sleep(1000);
stay = 0;
putimage(0, 0, &bg);
for (y = 0; y < 5; y++)
for (x = 0; x < 10; x++)
if (rank[y][x] != 0)
putimage(((x + 1) * 100 + 10), ((y + 1) * 100 + 10), &res[0]);
for (y = 0; y < 5; y++)
for (x = 0; x < 10; x++)
if (rank[y][x] == 0)
putimage(((x + 1) * 100 + 10), ((y + 1) * 100 + 10), &res[26]);
}
}
}
}
}
}
getchar();
getchar();
closegraph();
}
能力有限,代码写的不好看
音乐和图片素材都是网上的免费网站下载下来的
音乐素材来自于 爱给网
图片素材来自于 https://game-icons.net/
里面有很多这种黑白图片素材
本人第一篇博客,日期也很有意义,小白学生一个,代码发出来供大家交流交流
最后
以上就是稳重大神为你收集整理的c语言图形函数小游戏(带音效)——翻牌消消乐C语言可视化编程小游戏的全部内容,希望文章能够帮你解决c语言图形函数小游戏(带音效)——翻牌消消乐C语言可视化编程小游戏所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复