美文网首页
C语言游戏开发之消消乐1

C语言游戏开发之消消乐1

作者: 世缘 | 来源:发表于2019-02-11 18:52 被阅读0次

        Hello,亲爱的读者们!

        这是我第一次在简书上写文章哟~

        我现在大二了,作为刚学完C语言的新手来说,课堂中学习的C语言知识固然重要,但也许久而久之会枯燥无味~

        于是乎,趁着这个寒假,我在网上查找了些关于C语言的实际应用,恰巧在香蕉网上看到了夜夜爱消除的游戏开发,于是就跟着视频学习了起来,完成了消消乐的游戏开发,收获颇多~~

        下面我将详细介绍开发~消消乐~项目的过程,希望通过本教程能够帮助到像我这样的C语言初学者;同时由于本人水平有限,难免会出现纰漏,希望广大读者能够多多提出意见,深表感谢!


1、开发环境

        Microsoft Visual C++ 6.0(C语言编程应用软件)  ————下载地址及安装教程见网上,同时还要去easyx官网下载easyx图形库以及附带的graphics头文件。

        兴许有读者会问,可以用其他的C语言编程软件吗?比如visual studio 或者devc++。为此,我上网查了一下,devc++不支持easyx图形库(后面编程要绘制图形),而visual studio 和Microsoft Visual C++ 6.0一样,支持easyx库,可以编程完成这个小项目。

2、游戏思路

        大家小时候应该都玩过消消乐,其具体的游戏过程以及游戏玩法,相信大家都有所了解。而对于开发人员来说,在项目开发前,必须要有明确的目标与清晰的思路。

游戏界面 游戏结束

消消乐的编程思路大致以下:

1.初始化游戏窗口(电脑上打开一个软件,通常都有一个窗口)

2.游戏开始界面

——绘制边框    ——绘制小球

——绘制光标    ——绘制时间

——绘制分数

3.游戏过程

——通过方向键移动光标

——判断相同颜色的小球,记录相同颜色小球位置

——将相同颜色小球消失一段时间

——小球下落,补充新小球

——刷新分数

4.计时时间到,显示游戏结束

5.释放资源


3、代码编写

1.首先,先写main函数。

#include <stdio.h>

int main()

{

    initgame();//初始化游戏窗口

    gamebegin();//游戏开始界面

    gameplay();//玩游戏的具体过程

    closegame();//游戏结束,释放资源

}

这里,main函数由initgame(),gamebegin(),

gameplay(),closegame()构成,通过注释表明各个函数的功能。main函数简洁明了,main函数里面的子函数再另外写,这也是C语言模块化编程的体现。

2.初始化游戏窗口和游戏结束释放资源(initgame()函数和closegame()函数的编写)

添加头文件#include <graphics.h>

        根据easyx文档,在initgame()函数里写initgraph(1000, 700);//创建一个长1000,宽700的游戏窗口;在closegame函数里写

getch();//等待你按下任意键,再继续执行下面的语句;

closegraph;//关闭游戏窗口

        由于用到getch()函数,还需添加头文件#include <conio.h>

3.编写游戏界面

        根据前面的思路,依次绘制边框、小球、光标、时间和分数。

1)绘制边框

setlinestyle(PS_SOLID, 10);//线型为实线,宽度为10

setlinecolor(RGB(50, 50, 50));//边框的颜色

rectangle(255, 45, 745, 655);以(255,45)和(745,655)定义一个矩形边框

边框效果图

2)绘制小球

如何绘制一个红色小球?(以左上角为例)

easyx库提供了很多图形绘制函数,包括形状、颜色、样式等。

setlinecolor(RGB(255,0,0));//圆边界为红色

setlinestyle(PS_SOLID, 1);//圆边界线型为实线,线宽为1

setfillcolor(RGB(255,0,0));//圆的填充颜色为红色

fillcircle(280,70,20);//以(280,70)为圆心,半径20画圆

如何在边框里绘制180个红色小球?

——这里要用到for循环

for(int x=280;x<740;x+=40)

{

    for(int y=70;y<650;y+=40)

    {

        setlinecolor(RGB(255,0,0));

        setlinestyle(PS_SOLID, 1);

        setfillcolor(RGB(255,0,0));

        fillcircle(x,y,18);//小球半径适当改小

    }

}

180个红色小球

如何绘制180个不同颜色的小球?

~大家想一下~

        这里,需要用到随机数,小编在这里想说,当时在学C语言的时候,当学到随机数,感觉用处不大。现在看来,呵呵@

为此,需要添加头文件:#include <time.h>

        如果要产生0-9的随机数——

srand((unsigned)time(NULL));

//提供随机数种子

int  random=rand()%10;

//生成随机数

        这样,生成180个不同颜色的小球的程序可以这样写:

        首先,定义一个数组,用来存放6种不同的颜色。

COLORREF colorArr[6]={RGB(200,0,0),RGB(0,200,0),RGB(0,0,200),

RGB(200,200,0),RGB(200,0,200),RGB(0,200,200)};

其次,再修改之前的程序如下:

srand((unsigned)time(NULL));

setlinestyle(PS_SOLID, 1);

for(int x=280;x<740;x+=40)

{

    for(int y=70;y<650;y+=40)

    {

        COLORREF c1=colorArr[rand()%6];

        setlinecolor(c1);

        setfillcolor(c1);

        fillcircle(x,y,18);

    }

}

小球效果图

3)绘制光标

——先随机找一中心点绘制白色矩形光标

setlinecolor(RGB(255,255,255));

rectangle(480-20,390-20,480+20,390+20);

        由于后期绘制移动的光标,所以将它封装成函数,以便多次调用。

void drawcursor(int x,int y,COLORREF c1)

//绘制光标

{

    setlinecolor(c1);

    rectangle(x-20,y-20,x+20,y+20);

}

        因为x,y同时出现才有意义,为此定义一个结构体的数据类型,用以表示位置坐标。

typedef  struct  position{

    int x;

    int y;

}posType;//由于结构体名字过长,换个名字

void drawcursor(posType cur,COLORREF c1)

{

    setlinecolor(c1);

    rectangle(cur.x-20,cur.y-20,cur.x+20,cur.y+20);

}

我们在前面定义一个全局变量:

posType cur;//当前光标的位置

#原来的程序可修改为:

cur.x=480;

cur.y=390;

drawcursor(cur,RGB(255,255,255));

光标效果图

4)绘制时间

void drawtime(int sec)

{

    char str[30];

    settextcolor(RGB(255,255,0));//文字颜色

    settextstyle(25,0,_T(“黑体”));//文字大小与字体

    sprintf(str,“剩余时间:%2d s”,sec);//将字符串存入str数组

    outtextxy(20,50,str);//在指定位置(20,50)输出字符串

}

5)绘制分数

void drawscore(int score)

{

    char str[30];

    settextcolor(RGB(255,0,0));//文字颜色

    settextstyle(25,0,_T(“黑体”));//文字大小与字体

    sprintf(str,“分数:%d ”,score);//将字符串存入str数组

    outtextxy(20,550,str);//在指定位置(20,550)输出字符串

}

整体效果图

        由于时间和分数都是需要刷新的,将它们封装成函数,可以在后面很方便地调用它们。

        本章介绍的主要是就是游戏界面代码的编写,至于游戏具体过程的编写,后面会出详细的教程,希望广大读者批评指正,谢谢!

链接:    C语言游戏开发之消消乐2

                C语言游戏开发之消消乐3

相关文章

  • C语言游戏开发之消消乐1

    Hello,亲爱的读者们! 这是我第一次在简书上写文章哟~ 我现在大二了,作为刚学完C语言...

  • C语言游戏开发之消消乐3

    在上一章中,小编主要讲述了如何通过方向键控制光标的移动、如何判断并获取同色小球、判断同色小球是否合法以及使...

  • C语言游戏开发之消消乐2

    在上一章中,小编主要介绍了游戏编程的思路,以及游戏界面的代码实现。 本章,小编将介绍游戏的具体过程...

  • 开心消消乐,C语言辅助鸟炸天修改器爆发!

    一个类似气泡消消乐的C++游戏源码,这里是消灭彩球,玩法有点像消消乐,编译游戏源码时需要LibUIDK控件,控制主...

  • 【Day18】D1张娟

    开心消消乐APP分析 关于《开心消消乐》: 它是腾讯计算机有限公司开发的一款策略型类游戏。游戏画面清新亮丽,音乐动...

  • 2018-06-15开心消消乐游戏大全

    开心消消乐游戏大全_开心消消乐破解版2018_开心消消乐最新破解版下载 开心消消乐版本大全是当易网为广大开心消消乐...

  • 游戏:消消乐

    “第一次打开游戏请允许“使用数据”,否则游戏无法正常运行。” 2017国民消除游戏强势来袭,一起来闯关,人人都玩,...

  • 消消乐海滨假日:界面设计的3个问题

    消消乐海滨假日,是开心消消乐的姐妹篇,游戏自2017年1月上线以来很火爆。作为一个三消游戏的忠实玩家,我迅速完成了...

  • 【flutter 起步走】Flutter 布局搞定消消乐,谁说只

    身为一个APP开发者,在复制黏贴的路上越走越远。最近玩了一款消消乐游戏,于是怀疑自己是否也能复刻出一个简单的消消乐...

  • Dev C++中配置YZKGame游戏引擎项目的方法

    多年前,我开发了使用C语言进行游戏开发的框架YzkGame,让初学者可以通过游戏开发的形式学习C语言,并且基于它编...

网友评论

      本文标题:C语言游戏开发之消消乐1

      本文链接:https://www.haomeiwen.com/subject/ongteqtx.html