C语言程序设计新手入门基础编程学习打造——小表情连连看

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

这个的话代码也有点多的,我就只先把一部分的代码发出来吧

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

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

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

*利用随机数通过switch语句进行随机打印图片*

*处理鼠标消息设置条件来消除(逐行扫描画实心矩形来覆盖图片消除)*

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

#include //图形库

#include //标准输入输出

#include //标准库

#include //随机

#include

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

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

void tupian();

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,

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,

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

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

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

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

IMAGE tu[15];//类

int main()

{

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

setbkcolor(WHITE);//背景颜色

cleardevice();//刷新

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

PlaySound(L"群星 - 老司机带带我(云南山歌).wav",NULL,SND_FILENAME|SND_ASYNC|SND_LOOP);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

tupian();

shubiao();

system("pause");//系统 暂停

closegraph();//关闭画布

getchar();

return 0;

}

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

{

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

{

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

{

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

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

for (int k = xia; k < chang; k++)// 将取走的元素后面的元素向前移位

{

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

}

chang--;

}

}

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

{

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

{

switch (er[i][j])

{

case 1:

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

case 2:

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

case 3:

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

case 4:

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

case 5:

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

case 6:

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

case 7:

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

case 8:

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}},群内有大量学习资源可供学习)

重要的事情,说三遍!!!不要忘了装图形库,图形库,图形库。我就说到这就结束吧,各位晚安哈,打手不易,也希望各位大佬们,多多提下意见哈,~~在这里希望每一位爱好编程的伙伴们,在这条道路上越走越远。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容