不用忘了设置好图形库,一流Mary菜单模块设计

极品玛丽菜单模块设计,switch使用,最后样式

图片 1

至上Mary菜单模块设计,动态效果

今天带来一个小游戏——连连看,用C语言营造,里面涉及的知识点也并不是很多的。涉及到了,数组、函数、分支协会、循环结构。自然配上音乐就会有痛感了,不要忘了设置好图形库。

正文相应视频教程

其一的话代码也略微多的,我就只先把一部分的代码发出来啊

C语言摄像,C语言零基础创设动态菜单,C语言达成一级Mary菜单

/********************************************************************************

源码分享

*~~~~~~~~总结~~~~~~~~*

加载资源函数

*透过一维数组来给二维数组赋值*

#include

*使用任意数通过switch语句进行自由打印图片*

#include

*处理鼠标信息设置标准来清除(逐行扫描画实心矩形来掩盖图片消除)*

#include

********************************************************************************/

IMAGE beginImg;

#include //图形库

IMAGE menuBackground;

#include //标准输入输出

IMAGE menuBlack;

#include //标准库

IMAGE gameOver;

#include //随机

IMAGE beginGame;

#include

int width;

#include //多媒体设备接口头文件和库文件

int height;

#pragma comment(lib,”winmm.lib”)

int countMenu = 1;

void tupian();

void loadResourse()

void shubiao();

{

int a[120] =
{1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,

loadimage(&beginImg, “beginImg.jpg”);

6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,

width = beginImg.getwidth();

11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,

height = beginImg.getheight();

14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15};//图片个数

loadimage(&menuBackground, “menubackgroud.jpg”,30,30);

int xia, chang=120;//下标 长度

loadimage(&menuBlack, “menuBlack.jpg”,30, 30);

int er[10][12];// 二维

loadimage(&gameOver, “gameOver.jpg”, width, height);

IMAGE tu[15];//类

loadimage(&beginGame, “beginGameImg.jpg”, width, height);

int main()

}

{

初阶化界面

initgraph(500,600);//开始化图形窗口

void gameBeginUI()

setbkcolor(WHITE);//背景颜色

{

cleardevice();//刷新

putimage(0, 0, &beginImg);

srand((unsigned int)time(NULL));//随机数种子

//测试地点

PlaySound(L”群星 –
老车手带带我(陕西山歌).wav”,NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);

putimage(170, 270, &menuBlack, SRCAND);

loadimage(&tu[0], L”1.jpg”); //存图片

putimage(170, 270, &menuBackground, SRCPAINT);

loadimage(&tu[1], L”2.jpg”);

//putimage(170, 312, &menuBlack, SRCAND);

loadimage(&tu[2], L”3.jpg”);

//putimage(170, 312, &menuBackground, SRCPAINT);

loadimage(&tu[3], L”4.jpg”);

}

loadimage(&tu[4], L”5.jpg”);

用户选取

loadimage(&tu[5], L”6.jpg”);

void userChoice()

loadimage(&tu[6], L”7.jpg”);

{

loadimage(&tu[7], L”8.jpg”);

////方向键:上:72 下:80 左:75 右:77

loadimage(&tu[8], L”9.jpg”);

int choice = _getch();

loadimage(&tu[9], L”10.jpg”);

switch (choice)

loadimage(&tu[10], L”11.jpg”);

{

loadimage(&tu[11], L”12.jpg”);

//上

loadimage(&tu[12], L”13.jpg”);

case 72:

loadimage(&tu[13], L”14.jpg”);

case 80:

loadimage(&tu[14], L”15.jpg”);

if (countMenu == 1)

tupian();

{

shubiao();

putimage(0, 0, &beginImg);

system(“pause”);//系统 暂停

putimage(170, 312, &menuBlack, SRCAND);

closegraph();//关闭画布

putimage(170, 312, &menuBackground, SRCPAINT);

getchar();

countMenu = 2;

return 0;

}

}

else

void tupian()// 随机发生图片

{

{

putimage(0, 0, &beginImg);

for (int i = 0; i < 10; i++)

putimage(170, 270, &menuBlack, SRCAND);

{

putimage(170, 270, &menuBackground, SRCPAINT);

for (int j = 0; j < 12; j++)

countMenu = 1;

{

}

xia = rand() % chang; //通过一维数组给二维数组赋值

break;

er[i][j] = a[xia];

case 13:

for (int k = xia; k < chang; k++)// 将取走的因素后边的因素向前挪动

if (countMenu == 1)

{

{

a[k] = a[k + 1];

putimage(0, 0, &beginGame);

}

Sleep(3000);

chang–;

exit(0);

}

}

}

else

for (int i = 0; i < 10; i++)

{

{

putimage(0, 0, &gameOver);

for (int j = 0; j < 12; j++)//遍历二维数组举行抉择 随机发生图片

Sleep(3000);

{

exit(0);

switch (er[i][j])

}

{

break;

case 1:

}

putimage(i * 50, j * 50, &tu[0]); break;

}

case 2:

主函数

putimage(i * 50, j * 50, &tu[1]); break;

int main()

case 3:

{

putimage(i * 50, j * 50, &tu[2]); break;

loadResourse();

case 4:

initgraph(width, height);

putimage(i * 50, j * 50, &tu[3]); break;

gameBeginUI();

case 5:

while (1)

putimage(i * 50, j * 50, &tu[4]); break;

{

case 6:

userChoice();

putimage(i * 50, j * 50, &tu[5]); break;

}

case 7:

getchar();

putimage(i * 50, j * 50, &tu[6]); break;

closegraph();

case 8:

return 0;

putimage(i * 50, j * 50, &tu[7]); break;

}

case 9:

好了先天的享受就到此地截至了,谢谢大家。

putimage(i * 50, j * 50, &tu[8]); break;

case 10:

putimage(i * 50, j * 50, &tu[9]); break;

case 11:

putimage(i * 50, j * 50, &tu[10]); break;

case 12:

putimage(i * 50, j * 50, &tu[11]); break;

case 13:

putimage(i * 50, j * 50, &tu[12]); break;

case 14:

putimage(i * 50, j * 50, &tu[13]); break;

case 15:

putimage(i * 50, j * 50, &tu[14]); break;

}

}

}

}

void shubiao()//处理鼠标信息 消除图片

{

MOUSEMSG m;//定义鼠标变量

int r, c, r1 = 12, c1 = 12, temp = 0;

while (1)

{

m = GetMouseMsg();//获得鼠标新闻

switch (m.uMsg)//处理鼠标音讯

{

/*case WM_RBUTTONDOWN://右键按下再也开端

//fillcircle(m.x, m.y, 25);

//cleardevice();

break;*/

case WM_LBUTTONDOWN:

if (temp % 2 == 0)

{

r = m.x / 50;

c = m.y / 50;

}

else//if (temp % 2 != 0)

{

r1 = m.x / 50;

c1 = m.y / 50;

}

temp++;

//消除

if (temp % 2 == 0)

{

if ((er[r][c] == er[r1][c1]) && (r == r1 || c == c1))//(r == r1
|| c == c1)不加那个相同就解除

{

if (r == r1 && c == c1)//r == r1 && c == c1不加这些规则
点两下一个图纸会免去 小bug

{

break;

}

if (r == 0)//逐行扫描

{

switch (c)

{

case 0:fillrectangle(0, 0, 50, 50); break;

case 1:fillrectangle(0, 50, 50, 100); break;

case 2:fillrectangle(0, 100, 50, 150); break;

case 3:fillrectangle(0, 150, 50, 200); break;

case 4:fillrectangle(0, 200, 50, 250); break;

case 5:fillrectangle(0, 250, 50, 300); break;

case 6:fillrectangle(0, 300, 50, 350); break;

case 7:fillrectangle(0, 350, 50, 400); break;

case 8:fillrectangle(0, 400, 50, 450); break;

case 9:fillrectangle(0, 450, 50, 500); break;

case 10:fillrectangle(0, 500, 50, 550); break;

case 11:fillrectangle(0, 550, 50, 600); break;

}

}

if (r == 1)

{

switch (c)

{

case 0:fillrectangle(50, 0, 100, 50); break;

case 1:fillrectangle(50, 50, 100, 100); break;

case 2:fillrectangle(50, 100, 100, 150); break;

case 3:fillrectangle(50, 150, 100, 200); break;

case 4:fillrectangle(50, 200, 100, 250); break;

case 5:fillrectangle(50, 250, 100, 300); break;

case 6:fillrectangle(50, 300, 100, 350); break;

case 7:fillrectangle(50, 350, 100, 400); break;

case 8:fillrectangle(50, 400, 100, 450); break;

case 9:fillrectangle(50, 450, 100, 500); break;

case 10:fillrectangle(50, 500, 100, 550); break;

case 11:fillrectangle(50, 550, 100, 600); break;

}

}

末端的话如故一如既往的代码,是分支语句,行数,所以不发了,代码太多了,最后的效果图,在这就发下吧(加QQ群:{{315732400:0}},群内有雅量上学资源可供就学)

图片 2

图片 3

紧要的作业,说三回!!!不要忘了装图形库,图形库,图形库。我就说到那就停止吧,各位晚安哈,打手不易,也可望各位大佬们,多多提下意见哈,~~在那里希望每一位爱好编程的同伙们,在这条道路上越走越远。

图片 4

图片 5