精华内容
下载资源
问答
  • 需要导入ege图形库(文章后半部分写了ege如何导入codeblocks,以及我用到的ege函数)一、先介绍如何将ege图形库导入codeblocks:1、下载codeblocks2、下载ege图形库的文件包 官方网址:ege图形库主站 (1)打开下载好的...

    扫雷游戏适合C练手,会C基本语法就可以尝试。需要导入ege图形库(文章后半部分写了ege如何导入codeblocks,以及我用到的ege函数)

    一、先介绍如何将ege图形库导入codeblocks:

    1、下载codeblocks

    2、下载ege图形库的文件包 官方网址:ege图形库主站

    (1)打开下载好的压缩包,找到ege文件夹中的include中的内容。d726e90d8df7333d38fba63abb9edadf.png

    5c9e0f394565529303b2d4b2303450e0.png

    将ege中include中的上述六个文件复制粘贴到codeblocks的include中。

    93435f9fe845e411768d9a0cb5b35e24.png

    (2)和上面(1)的操作相同,把ege文件夹中的lib中的内容复制粘贴到codeblocks的lib中。

    3413ab990b0407475a4153071d596255.png

    注意:如果在有出现有64位的和32位的mingw,应选32位的,因为ege库本身是32位,添加64的会报错。3796f226558e9e3da2b0a776f3a32e9f.png

    (3)点开codeblock,新建一个C++project,点击project---->build options---->选linker setting---->在link libraries中点add---->点打开文件夹的那个图标---->进入lib文件夹后,把这8个添加进去:"libgraphics.a""libgdi32.a" "libimm32.a" "libmsimg32.a""libole32.a" "liboleaut32.a" "libwinmm.a""libuuid.a"

    添加完成后点ok。

    二、扫雷游戏源代码:

    //头文件

    #include #include //图形库

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

    using namespace std;

    #define ROW 15 //行

    #define COL 15 //列

    #define NUM 15 //雷的个数

    #define SIZE 20 //图片大小50

    ege::MUSIC music1; //定义音乐

    ege::MUSIC music2;

    ege::MUSIC music3;

    int blank=0; //点开空白的个数 ROW*COL-NUM==count 即获胜

    int mp[ROW+2][COL+2]; 分为辅助区和游戏区 (定义在全局的数组都是初始化了的(值全为0))

    PIMAGE img0; //定义图片

    PIMAGE img1;

    PIMAGE img2;

    PIMAGE img3;

    PIMAGE img4;

    PIMAGE img5;

    PIMAGE img6;

    PIMAGE img7;

    PIMAGE img8;

    PIMAGE img9;

    PIMAGE img10;

    PIMAGE img11;

    //绘制函数

    //绘制函数(打印二维数组)

    void gameDraw(){

    for(int i=1;i<=ROW;i++){

    for(int j=1;j<=COL;j++){

    printf("%02d ",mp[j][i]);

    }

    printf("\n");

    }

    }

    //初始化游戏函数(新开始一局游戏重新设定)

    //初始化函数

    void gameInit(){

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

    for(int i=0;i

    //载入图片

    void drawMap(){

    for(int i=0;i30(标记) img[11]

    ################################################################### */

    if(mp[i][j]==-1){

    putimage((i-1)*SIZE,(j-1)*SIZE,img9); //雷

    }else if(mp[i][j]==0){

    putimage((i-1)*SIZE,(j-1)*SIZE,img0); //数字0

    }else if(mp[i][j]==1){

    putimage((i-1)*SIZE,(j-1)*SIZE,img1); //数字1

    }else if(mp[i][j]==2){

    putimage((i-1)*SIZE,(j-1)*SIZE,img2); //数字2

    }else if(mp[i][j]==3){

    putimage((i-1)*SIZE,(j-1)*SIZE,img3); //数字3

    }else if(mp[i][j]==4){

    putimage((i-1)*SIZE,(j-1)*SIZE,img4); //数字4

    }else if(mp[i][j]==5){

    putimage((i-1)*SIZE,(j-1)*SIZE,img5); //数字5

    }else if(mp[i][j]==6){

    putimage((i-1)*SIZE,(j-1)*SIZE,img6); //数字6

    }else if(mp[i][j]==7){

    putimage((i-1)*SIZE,(j-1)*SIZE,img7); //数字7

    }else if(mp[i][j]==8){

    putimage((i-1)*SIZE,(j-1)*SIZE,img8); //数字8

    }else if(mp[i][j]>=19&&mp[i][j]<=28){

    putimage((i-1)*SIZE,(j-1)*SIZE,img10); //空白图片

    }else if(mp[i][j]>30){

    putimage((i-1)*SIZE,(j-1)*SIZE,img11); //标记

    }

    }

    }

    }

    //翻开空白出现到0后展开九宫格

    void openZero(int r,int c){

    //先打开这个0

    mp[r][c]-=20;

    blank++;

    for(int m=r-1;m<=r+1;m++){

    for(int n=c-1;n<=c+1;n++){

    if(m>=1&&m<=ROW&&n>=1&&n<=COL){ //确保0位于游戏区

    if(mp[m][n]>=19&&mp[m][n]<=28){

    if(mp[m][n]!=20){

    mp[m][n]-=20;

    blank++;

    }else{

    openZero(m,n);

    }

    }

    }

    }

    }

    }

    //游戏开始

    int playGame(){ //玩游戏

    //定义一个鼠标消息

    mouse_msg msg={0};

    int r,c; //定义鼠标的行和列

    while(1){

    //msg=getmouse(); //获取鼠标消息信息

    while(mousemsg()){

    msg=getmouse(); //获取鼠标消息信息

    if(msg.is_down()&&msg.is_left()){ //左键按下:翻开 空白图片19~28

    r=msg.x/SIZE+1;

    c=msg.y/SIZE+1;

    if(mp[r][c]>=19&&mp[r][c]<=28){

    if(mp[r][c]==20){ //翻开是0

    openZero(r,c);

    }else{

    mp[r][c]-=20; //-1~8

    blank++;

    }

    }

    return mp[r][c];

    break;

    }else if(msg.is_down()&&msg.is_right()){ //右键按下:标记一个空白图片,取消一个标记

    r=msg.x/SIZE+1;

    c=msg.y/SIZE+1;

    if(mp[r][c]>=19&&mp[r][c]<=28){

    mp[r][c]+=50; //标记>30

    }else if(mp[r][c]>30){

    mp[r][c]-=50;

    }

    return mp[r][c];

    break;

    }

    }

    }

    }

    //主函数

    int main(){

    //HWND hwnd=initgraph(ROW*SIZE,COL*SIZE,SHOWCONSOLE);

    initgraph(ROW*SIZE,COL*SIZE); //界面

    /*mciSendString("open \"pic\win.mp3\" alias music",NULL,0,NULL);

    mciSendString("play file",NULL,0,NULL);

    */

    music1.OpenFile("bgm.mp3");

    music1.Play();

    img0=newimage();

    img1=newimage();

    img2=newimage();

    img3=newimage();

    img4=newimage();

    img5=newimage();

    img6=newimage();

    img7=newimage();

    img8=newimage();

    img9=newimage();

    img10=newimage();

    img11=newimage();

    /*for(int i=0;i<11;i++){

    getimage(imgi,"i.jpg"); //0~8为数字图片。9是雷。10是空白。11是标记图片

    }*/

    // loadimage(&img[0],L"0.jpg",50,50); 把0.jpg这张图片以50*50的大小保存到img[0]中

    getimage(img0,"pic/0.jpg");

    getimage(img1,"pic/1.jpg");

    getimage(img2,"pic/2.jpg");

    getimage(img3,"pic/3.jpg");

    getimage(img4,"pic/4.jpg");

    getimage(img5,"pic/5.jpg");

    getimage(img6,"pic/6.jpg");

    getimage(img7,"pic/7.jpg");

    getimage(img8,"pic/8.jpg");

    getimage(img9,"pic/9.jpg");

    getimage(img10,"pic/10.png");

    getimage(img11,"pic/11.png");

    gameInit();

    gameDraw();

    while(1){ //防止闪退

    drawMap();

    /* if(playGame()==0){

    openZero(r,c);

    }*/

    if(playGame()==-1){ //点到雷

    music2.OpenFile("fail.mp3");

    music2.Play();

    drawMap();

    music1.Stop();

    MessageBox(NULL,"\t\tGame over!\n\n\t\t是否继续游戏?","提示",3);

    break;

    }

    if(ROW*COL-NUM==blank){

    music1.Stop();

    music3.OpenFile("win.mp3");

    music3.Play();

    MessageBox(NULL,"\t Congratulate,You win!\n\n\t是否继续游戏?","提示",4);

    break;

    }

    //closegraph();

    }

    return 0;

    }

    三、我所用到的ege函数

    头文件:#include 定义界面:

    intigraphy(size,size); // 界面

    鼠标:

    mouse_msg msg={0}; //定义一个鼠标消息

    msg=getmouse(); //获取鼠标消息信息

    mousemsg(); // 有鼠标消息

    msg.is_down(); // 鼠标按下

    msg.is_left(); // 鼠标左键

    msg.is_right(); // 鼠标右键

    图片:

    PIMAGE img0; //定义图片

    img0=newimage();

    getimage(img0,"pic/0.jpg"); // 获取图片

    putimage(SIZE,SIZE,img0); // 载入图片

    音乐:

    ege::MUSIC music1; //定义音乐

    music2.OpenFile("fail.mp3"); // 打开音乐所在的文件

    music2.Play(); // 播放音乐

    music1.Pause(); // 暂停音乐

    music1.Stop(); //停止音乐

    弹框(游戏获胜或失败后弹出):

    MessageBox(NULL,"\t\tGame over!\n\n\t\t是否继续游戏?","提示",3);

    参考链接:ege图形库函数

    展开全文
  • C语言+EGE图形库小游戏吃豆子

    千次阅读 2018-08-21 17:16:09
    #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;stdlib.h&gt; #include &lt;graphics.h&gt; void loadMenu(); void homeMenu();...void enterNe...
    #include <stdio.h>
    #include <time.h>
    #include <stdlib.h>
    #include <graphics.h>
    void loadMenu();
    void homeMenu();
    void choice();
    void introduce();
    void createMap();
    void enterNext();
    void roleMove();
    void mstMove();
    void dieOver();
    void crashJudge();
    void showScore();
    void gameOver();
    //记录人物坐标重置坐标
    //(row,col)
    int row=0;
    int col=0;
    //记录怪物坐标
    //(mstrow,mstcol)
    int mstrow=0;
    int mstcol=0;
    //记录血量
    int roleBlood=0;
    //记录分数
    int score=0;
    //判断关卡
    int lvFlag=0;
    int TOTAL=0;
    #define t1 20
    #define t2 12
    #define t3 10
    
    #define WIDTH 10
    #define LENGTH 10
    #define BLR 9
    #define BLC1 0
    #define BLC2 1
    #define BLC3 2
    
    
    
    int pMap[WIDTH][LENGTH]={0};
    const int pMap1[WIDTH][LENGTH]=
    {
    1,1,1,1,1,1,1,1,1,1,
    1,9,0,0,0,0,0,0,9,1,
    1,4,9,2,9,9,2,9,9,1,
    1,0,2,9,9,9,9,2,0,1,
    1,9,9,9,3,9,9,9,9,1,
    1,0,2,9,9,9,9,2,0,1,
    1,0,9,2,9,9,2,9,0,1,
    1,0,0,0,0,0,0,0,0,1,
    1,9,1,1,9,9,1,1,9,1,
    10,10,10,9,9,9,9,9,9,9
    };
    
    const int pMap2[WIDTH][LENGTH]=
    {
    1,1,1,1,1,1,1,1,1,1,
    1,0,0,2,0,0,0,0,0,1,
    1,0,9,2,9,9,9,2,2,1,
    1,0,9,2,9,9,9,9,0,1,
    1,0,9,9,3,9,9,9,0,1,
    1,9,9,9,9,9,2,9,9,1,
    1,2,2,9,4,9,2,9,9,1,
    1,9,9,9,9,9,2,9,9,1,
    1,1,1,1,1,1,1,1,1,1,
    10,10,10,9,9,9,9,9,9,9
    };
    
    const int pMap3[WIDTH][LENGTH]=
    {
    1,1,1,1,1,1,1,1,1,1,
    1,0,0,2,0,0,2,0,0,1,
    1,0,2,9,9,9,9,2,0,1,
    1,0,2,9,9,9,9,2,0,1,
    1,9,9,9,3,9,9,9,9,1,
    1,2,9,9,9,9,9,9,2,1,
    1,4,9,2,9,9,2,9,9,1,
    1,9,9,2,9,9,2,9,9,1,
    1,1,1,1,1,1,1,1,1,1,
    10,10,10,9,9,9,9,9,9,9
    };
    
    int main()
    {
        initgraph(500, 550);
        loadMenu();
        delay_ms(800);
        homeMenu();
        cleardevice();
        closegraph();
        return 0;
    }
    
    
    //加载界面
    void loadMenu()
    {
        PIMAGE pLoad = newimage();
        getimage(pLoad, "img\\load.png",0,0);
        putimage(0, 0, pLoad);
        delimage(pLoad);
    
    }
    //主界面
    void homeMenu()
    {
        PIMAGE istart = newimage();
        getimage(istart, "img\\start.bmp",0,0);
        putimage(0, 0, istart);
        delimage(istart);
    
        // 画帧率文字
        char str[20];
        sprintf(str, "fps %.02f", getfps()); //调用getfps取得当前帧率
        setcolor(WHITE);
        outtextxy(0, 0, str);
    
        //鼠标点击
        mouse_msg mMsg = {0};
        for ( ; is_run(); delay_fps(60))
        {
            //获取鼠标消息,这个函数会等待,等待到有消息为止
            while(mousemsg())
            {
                mMsg = getmouse();
            }
            //选择关卡
            if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>140&&mMsg.x<335&&mMsg.y>260&&mMsg.y<300)
            {
                choice();
            }
            //游戏说明
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>140&&mMsg.x<335&&mMsg.y>340&&mMsg.y<370)
            {
                introduce();
            }
            //退出
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>140&&mMsg.x<335&&mMsg.y>400&&mMsg.y<435)
            {
                cleardevice();
                closegraph();
            }
    
        }
        getch();
    }
    //选择关卡界面
    void choice()
    {
        PIMAGE pChioce = newimage();
        getimage(pChioce, "img\\choice.bmp",0,0);
        putimage(0, 0, pChioce);
        delimage(pChioce);
        mouse_msg mMsg = {0};
        for ( ; is_run(); delay_fps(60))
        {
            //获取鼠标消息,这个函数会等待,等待到有消息为止
            while(mousemsg())
            {
                mMsg = getmouse();
            }
            //选择关卡01
            if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>40&&mMsg.x<155&&mMsg.y>180&&mMsg.y<335)
            {
                lvFlag=1;
                TOTAL=t1;
                for(int i=0;i<WIDTH;i++)
                {
                    for(int j=0;j<LENGTH;j++)
                        pMap[i][j]=pMap1[i][j];
                }
                createMap();
    
            }
            //02
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>215&&mMsg.x<335&&mMsg.y>270&&mMsg.y<420)
            {
                lvFlag=2;
                TOTAL=t2;
                for(int i=0;i<WIDTH;i++)
                {
                    for(int j=0;j<LENGTH;j++)
                        pMap[i][j]=pMap2[i][j];
                }
                createMap();
            }
            //03
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>375&&mMsg.x<500&&mMsg.y>340&&mMsg.y<500)
            {
                lvFlag=3;
                TOTAL=t3;
                for(int i=0;i<WIDTH;i++)
                {
                    for(int j=0;j<LENGTH;j++)
                        pMap[i][j]=pMap3[i][j];
                }
                createMap();
    
            }
    
        }
        getch();
    }
    
    //游戏介绍
    void introduce()
    {
        PIMAGE pIntro = newimage();
        getimage(pIntro, "img\\introduce.bmp",0,0);
        putimage(0, 0, pIntro);
        delimage(pIntro);
        mouse_msg mMsg = {0};
        for ( ; is_run(); delay_fps(60))
        {
            //获取鼠标消息,这个函数会等待,等待到有消息为止
            while(mousemsg())
            {
                mMsg = getmouse();
            }
            //选择关卡01
            if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>0&&mMsg.x<500&&mMsg.y>0&&mMsg.y<550)
            {
                cleardevice();
                homeMenu();
            }
    
        }
        getch();
    }
    //进入下一关卡
    void enterNext()
    {
        PIMAGE pNext = newimage();
        getimage(pNext, "img\\next.bmp",0,0);
        putimage(0, 0, pNext);
        delimage(pNext);
        mouse_msg mMsg = {0};
        for ( ; is_run(); delay_fps(60))
        {
            //获取鼠标消息,这个函数会等待,等待到有消息为止
            while(mousemsg())
            {
                mMsg = getmouse();
            }
            //选择下一关卡
            if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>185&&mMsg.x<310&&mMsg.y>370&&mMsg.y<430)
            {
                cleardevice();
                choice();
            }
            //退出
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>380&&mMsg.x<470&&mMsg.y>350&&mMsg.y<450)
            {
                cleardevice();
                closegraph();
    
            }
            //进入到
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>50&&mMsg.x<135&&mMsg.y>350&&mMsg.y<450)
            {
                gameOver();
            }
    
        }
    }
    
    
    //死亡游戏结束界面
    void dieOver()
    {
        delay_ms(600);
        PIMAGE pOver = newimage();
        getimage(pOver, "img\\dieover.bmp",0,0);
        putimage(0, 0, pOver);
        delimage(pOver);
    
        mouse_msg mMsg = {0};
        for ( ; is_run(); delay_fps(60))
        {
            //获取鼠标消息,这个函数会等待,等待到有消息为止
            while(mousemsg())
            {
                mMsg = getmouse();
            }
            //重新开始
            if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>190&&mMsg.x<310&&mMsg.y>420&&mMsg.y<480)
            {
                //判断在第几关重新开始???
                if(lvFlag==1)
                {
                    for(int i=0;i<WIDTH;i++)
                    {
                        for(int j=0;j<LENGTH;j++)
                            pMap[i][j]=pMap1[i][j];
                    }
                    createMap();
                }
                else if (lvFlag==2)
                {
                    for(int i=0;i<WIDTH;i++)
                    {
                        for(int j=0;j<LENGTH;j++)
                            pMap[i][j]=pMap2[i][j];
                    }
                    createMap();
                }
                else if (lvFlag==2)
                {
                    for(int i=0;i<WIDTH;i++)
                    {
                        for(int j=0;j<LENGTH;j++)
                            pMap[i][j]=pMap3[i][j];
                    }
                    createMap();
                }
            }
            //退出
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>365&&mMsg.x<465&&mMsg.y>390&&mMsg.y<520)
            {
                cleardevice();
                closegraph();
    
            }
    
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>40&&mMsg.x<140&&mMsg.y>390&&mMsg.y<520)
            {
                gameOver();
            }
        }
    }
    //游戏结束界面
    void gameOver()
    {
        PIMAGE pgover = newimage();
        getimage(pgover, "img\\gover.bmp",0,0);
        putimage(0, 0, pgover);
        delimage(pgover);
        //显示分数
        char s[5];
        sprintf(s, "%d", score);
        setfont(-30, 0, "宋体");
        outtextxy(145, 355, s);
    
        mouse_msg mMsg = {0};
        for ( ; is_run(); delay_fps(60))
        {
            //获取鼠标消息,这个函数会等待,等待到有消息为止
            while(mousemsg())
            {
                mMsg = getmouse();
            }
            //重新开始
            if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>180&&mMsg.x<290&&mMsg.y>470&&mMsg.y<510)
            {
                homeMenu();
            }
            //退出
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>365&&mMsg.x<445&&mMsg.y>440&&mMsg.y<520)
            {
                cleardevice();
                closegraph();
            }
            //
            else if(mMsg.is_up()&&mMsg.is_left()&&mMsg.x>35&&mMsg.x<115&&mMsg.y>450&&mMsg.y<530)
            {
    
            }
        }
    }
    
    
    //生成地图+移动后的重绘
    void createMap()
    {
        PIMAGE img = newimage();
        getimage(img, "img\\di.bmp",0,0);
        putimage(0, 0, img);
        delimage(img);
    
        int x =0;
        int y =0;
        PIMAGE imgMap;
        //记录豆子的数目
        int cntFood;
        int cntJudge;
        //记录血量
        int cntBlood;
    
    
        //while(1)
        //{
            //每次重置地图都将数据归零
            cntFood=0;
            cntBlood=0;
            for(int i=0;i<WIDTH;i++)
            {
                y=i*55;
                for(int j=0;j<LENGTH;j++)
                {
                    x=j*50;
                    imgMap=newimage();
                    //豆子
                    if(pMap[i][j]==0)
                    {
                        getimage(imgMap,"img\\food.bmp",0,0);
                        putimage(x,y,imgMap);
    
                        //遍历后剩余总数,计数豆子总数
                        cntFood++;
                    }
    
                    //cntJudge=cntFood;
                    //树
                    else if(pMap[i][j]==1)
                    {
                        getimage(imgMap,"img\\shu.bmp",0,0);
                        putimage(x,y,imgMap);
    
                    }
                    //墙
                    else if(pMap[i][j]==2)
                    {
                        getimage(imgMap,"img\\wall.bmp",0,0);
                        putimage(x,y,imgMap);
    
                    }
                    //怪物
                    else if(pMap[i][j]==3)
                    {
                        getimage(imgMap,"img\\guaiwu1.bmp",0,0);
                        putimage(x,y,imgMap);
                        //传出怪物所在的位置
                        mstrow=i;
                        mstcol=j;
                        //怪物随机移动后的坐标就是(i,j)==(mstrow,mstcol)
                        //每次遍历都通过怪物坐标pMap[mstrow][mstcol]的值贴图并把坐标(i,j)传给(mstrow,mstcol)
                        //所以不需要修改pMap[mstrow][mstcol]的横纵坐标
                    }
    
                    else if(pMap[i][j]==5)  //左
                    {
                        getimage(imgMap,"img\\renL.bmp",0,0);
                        putimage(x,y,imgMap);
                    }
                    else if(pMap[i][j]==6)  //右
                    {
                        getimage(imgMap,"img\\renR.bmp",0,0);
                        putimage(x,y,imgMap);
                    }
                    else if(pMap[i][j]==7) //上
                    {
                        getimage(imgMap,"img\\renU.bmp",0,0);
                        putimage(x,y,imgMap);
                    }
                    else if(pMap[i][j]==8) //下
                    {
                        getimage(imgMap,"img\\renD.bmp",0,0);
                        putimage(x,y,imgMap);
                    }
                    else if(pMap[i][j]==9)  //空
                    {
    
                    }
                    //血量
                    else if(pMap[i][j]==10)
                    {
                        getimage(imgMap,"img\\blood.bmp",0,0);
                        putimage(x,y,imgMap);
                        //遍历后剩余血量
                        cntBlood++;
                    }
    
                    //人物
                    else if(pMap[i][j]==4)
                    {
                        getimage(imgMap,"img\\ren.bmp",0,0);
                        putimage(x,y,imgMap);
                        row=i;
                        col=j;
    
                        /*pMap[i][j]==6;------->置空,不贴图,实现更新后原位置的图片消失
                        重新生成地图
                            row=i;
                            col=j;
                            左 pMap[row][col-1] 将上一个位置置为 pMap[row][col]==9 ,调用重新生成地图的函数updMap
                                                将此位置置为 pMap[row][col-1]==5
                            右 pMap[row][col+1]  置为6
                            上 pMap[row-11][col]     7
                            下 pMap[row+1][col]      8
                        */
                    }
                    delimage(imgMap);
    
                }
    
                //遍历数组之后的剩余豆子数目
                cntJudge=cntFood;
                //传出数据
                roleBlood=cntBlood;
                //在这里计算分数
                score=(TOTAL-cntJudge)*50;
            }
            //判断是否吃完所有豆子,吃完进入下一关卡
            if(cntJudge==0)
            {
                showScore();
                //进入下一关卡
                delay_ms(600);
                enterNext();
            }
            if(roleBlood==0)
            {
                //cleardevice();
                dieOver();
            }
            for ( ; is_run(); delay_fps(60))
            {
                showScore();
                //人物移动
                roleMove();
                //判断是否相撞
                crashJudge();
                //怪物随机移动
                mstMove();
            }
        //}
    
    }
    
    //人物移动
    void roleMove()
    {
        PIMAGE pUpd = newimage();
        key_msg kMsg ={0};
    
        //for ( ; is_run(); delay_fps(60))
        //{
            while(kbmsg())
            {
                kMsg = getkey();
            }
                //左
               if(kMsg.key==65&&kMsg.msg==key_msg_up&&(pMap[row][col-1]==0||pMap[row][col-1]==9||pMap[row][col-1]==3))
                {
                //outtextxy(50, 0, "A左");
                //将上一个位置的图片处理了
                //人物移动
                pMap[row][col-1]=5;
                pMap[row][col]=9;
                col=col-1;
                createMap();
                }
                //右
                else if(kMsg.key==68&&kMsg.msg==key_msg_up&&(pMap[row][col+1]==0||pMap[row][col+1]==9||pMap[row][col+1]==3))
                {
                    //outtextxy(150, 0, "D右");
                    pMap[row][col+1]=6;
                    pMap[row][col]=9;
                    col=col+1;
                    createMap();
                }
                //上
                else if(kMsg.key==87&&kMsg.msg==key_msg_up&&(pMap[row-1][col]==0||pMap[row-1][col]==9||pMap[row-1][col]==3))
                {
                    //outtextxy(0, 0, "W上");
                    pMap[row-1][col]=7;
                    pMap[row][col]=9;
                    row=row-1;
                    createMap();
                }
                //下
                else if(kMsg.key==83&&kMsg.msg==key_msg_up&&(pMap[row+1][col]==0||pMap[row+1][col]==9||pMap[row+1][col]==3))
                {
                    //outtextxy(100, 0, "S下");
                    pMap[row+1][col]=8;
                    pMap[row][col]=9;
                    row=row+1;
                    createMap();
                }
        //}
        delimage(pUpd);
    }
    
    //怪物移动
    //怪物坐标pMap[mstrow][mstcol]
    void mstMove()
    {
        //showScore();
        delay_ms(600);
        srand((unsigned) time(NULL));
        int inum=(rand()%4)+1;
        //左
        if(inum==1&&(pMap[mstrow][mstcol-1]==9
                     ||pMap[mstrow][mstcol-1]==5||pMap[mstrow][mstcol-1]==6||pMap[mstrow][mstcol-1]==7||pMap[mstrow][mstcol-1]==8))
        {
            pMap[mstrow][mstcol-1]=3;
            pMap[mstrow][mstcol]=9;
            createMap();
    
        }
        //右
        else if(inum==2&&(pMap[mstrow][mstcol+1]==9
                          ||pMap[mstrow][mstcol+1]==5 ||pMap[mstrow][mstcol+1]==6||pMap[mstrow][mstcol+1]==7||pMap[mstrow][mstcol+1]==8))
        {
            pMap[mstrow][mstcol+1]=3;
            pMap[mstrow][mstcol]=9;
            createMap();
    
        }
        //上
        else if(inum==3&&(pMap[mstrow-1][mstcol]==9
                          ||pMap[mstrow-1][mstcol]==5||pMap[mstrow-1][mstcol]==6||pMap[mstrow-1][mstcol]==7||pMap[mstrow-1][mstcol]==8))
        {
            pMap[mstrow-1][mstcol]=3;
            pMap[mstrow][mstcol]=9;
            createMap();
    
        }
        //下
        else if(inum==4&&(pMap[mstrow+1][mstcol]==9
                          ||pMap[mstrow+1][mstcol]==5 ||pMap[mstrow+1][mstcol]==6||pMap[mstrow+1][mstcol]==7||pMap[mstrow+1][mstcol]==8))
        {
            pMap[mstrow+1][mstcol]=3;
            pMap[mstrow][mstcol]=9;
            createMap();
    
        }
    }
    
    //碰撞判断
    void crashJudge()
    {
            if(pMap[row][col]==3&&roleBlood==3)
            {
                pMap[BLR][BLC3]=9;
            }
            else if (pMap[row][col]==3&&roleBlood==2)
            {
                pMap[BLR][BLC2]=9;
            }
            else if (pMap[row][col]==3&&roleBlood==1)
            {
                pMap[BLR][BLC1]=9;
            }
    }
    //输出分数
    void showScore()
    {
        char s[5];
        sprintf(s, "%d", score);
        setfont(-30, 0, "宋体");
        outtextxy(430, 510, s);
    
    }
    
    
    展开全文
  • codeblock安装ege图形库,让C语言做出美丽图形 分步阅读 学习C语言的人都知道C语言没有自带图形库,所以想要用C语言做成带图形的程序就要给编译器安装图形库,本次就教大家用codeblock安装ege图形库! 工具/原料 ...

    codeblock安装ege图形库,让C语言做出美丽图形

    分步阅读

    学习C语言的人都知道C语言没有自带图形库,所以想要用C语言做成带图形的程序就要给编译器安装图形库,本次就教大家用codeblock安装ege图形库!

    工具/原料

    • 计算机一台

    • 安装有codeblock

    • 还要准备ege文件,可以到我网盘下载,也可以百度搜索!

    方法/步骤

    1. 1

      首先找到电脑安装codeblock,然后要找到codeblock的安装目录,如图。

      codeblock安装ege图形库,让C语言做出美丽图形

    2. 2

      在codeblock的安装目录中,你可以看到MinGW和share两个文件夹,如图。

      codeblock安装ege图形库,让C语言做出美丽图形

    3. 3

      然后再打开MinGW这个文件夹在里面就会看到有include和lib两个文件夹,如图。

      codeblock安装ege图形库,让C语言做出美丽图形

    4. 4

      include和lib两个文件夹中有很多*.h和*.a文件,这是把我们下载的ege图形的压缩包解压,把里面的ege文件夹下的include里面的6个***.h文件(button.h,ege.h,fps.h,graphic.h,label.h,sys_edit.h六个文件)复制到codeblock安装目录下的MinGW下的include文件夹中,同理将lib文件夹中的*.a文件复制到对应文件夹,如图。

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

    5. 5

      复制完成后,接下来打开codeblock程序,进入如图界面。

      codeblock安装ege图形库,让C语言做出美丽图形

    6. 6

      然后打开如图标示位置(project)的选项,在此菜单下选择build options(图中有标示),如图。(想要打开build options,必须是在新建有工作空间的情况下)

      codeblock安装ege图形库,让C语言做出美丽图形

    7. 7

      打开build options后,弹出如图所示的窗口,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

    8. 8

      在此窗口中选择linker setting(图中标示),如图!

      codeblock安装ege图形库,让C语言做出美丽图形

    9. 9

      在选择后出现如图对话框,你会在底部看到add按钮,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

    10. 10

      单击add,然后将

      libgraphics.a

      libgdi32.a

      libimm32.a

      libmsimg32.a

      libole32.a

      liboleaut32.a

      libwinmm.a

      libuuid.a

      添加进去,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

    11. 11

      然后将“-mwindows”添加到右边的Other linker options框框里,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

    12. 12

      以上都做好了就可以点击ok了

      codeblock安装ege图形库,让C语言做出美丽图形

    13. 13

      来让我们做一个测试,新建一个c++的cpp文件,然后将如下代码复制进去,编译运行一下!看效果如下!

      #include <graphics.h>

      int main()

      {

          initgraph(640, 480);//打开一个长640像素,宽480像素的窗口

          

      setcolor(GREEN);//设置绘图颜色为绿色

          line(100, 100, 500, 200);//以(100,100)为起点,(500,200)为终点划一条直线

          

      getch();//让屏幕暂停一下

          closegraph();//关闭绘图窗口

          

      return 0;

      }

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      END

    新建一个cpp文件

    1. 新建c++的cpp文件步骤如下,打开如图位置(file),然后选择new,再选择file,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

    2. 选择后就选择如图的C/C++ source,然后单击go,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

    3. 然后选择c++,如图单击go,然后进入下一页面,此时单击"..."(图中标示位置)输入文件名,单击finish,如图!

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

      codeblock安装ege图形库,让C语言做出美丽图形

    4. 此时就新建了一个c++的cpp文件就可以进行上述测试了

      codeblock安装ege图形库,让C语言做出美丽图形

      END

    注意事项

    • ege文件的下载可以到我的百度网盘下载,或者搜索!

    • 这个图形库只是在我们没学Java、C# 等支持图形的语言时玩一玩而已,最好还是学一门支持图形编程的语言才好!

    • 本经验所有步骤均为本人实际操作,如有错误敬请指出!

    • 转载出处:https://jingyan.baidu.com/article/4b07be3c40d35f48b380f3c7.html

    展开全文
  • 主要为大家详细介绍了C语言实现2048游戏,ege图形库版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • C语言贪吃蛇(利用EGE图形库

    千次阅读 2020-03-18 21:10:11
    贪吃蛇是我19年暑假实训做的项目,利用了EGE图形库做的。色彩丰富,画风可爱,可以积分,存档,查看历史最高分,选择不同的模式来调整速度。话不多说,直接上图。 资源链接:...

    贪吃蛇是我19年暑假实训做的项目,利用了EGE图形库做的。色彩丰富,画风可爱,可以积分,存档,查看历史最高分,选择不同的模式来调整速度。话不多说,直接上图。

    链接:https://pan.baidu.com/s/1WncjN-sV_GhCNU-dmQ0nDA
    提取码:j79r

    源码和加载素材放在一起,并附有课设报告。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 源代码以及exe文件。 c语言 雷霆战机 vc成功运行,有不添加ege图形库实现的版本,请去我的其他资源寻找。(vc++6.0欲调试需安装ege图形库
  • #include int main(){initgraph(640, 480);setfont(18, 0, "宋体");mouse_msg msg = {0};/*mouse_msg是一个结构体typedef struct mouse_msg{UINT msg;INT x;INT y;UINT flags;INT wheel;}mouse_msg;...
  • 计算机图形学实验 C语言 EGE实现, 包括bezier曲线,边标志填充,裁剪,基本图形变换,直线生成,种子填充算法
  • 近期在琢磨C语言图形库,发现主要有如下几种选择:Turbo C 的graphics库SDLEasyXEGE1. 普遍认为Graphics库太老了,而且TurboC本身使用比较麻烦,网上一边倒地不推荐。不过其实Turbo C也出了for Win 7/8/10的版本了...
  • 这几天看到我们班上一个大神写了一个2048出来,我自己也想尝试一下,...游戏开始与过程中需要随机出现2或者4,所以需要调用time.h这个3.游戏开始时,假如当获取字符为‘w'则先用循环判定这个数字的下方有无和它相...
  • 本人写的, word文档,非常牛逼详细的教程。 百度云...本教程GitHub-Pages链接 https://dawsonlee1790.github.io/C语言推箱子小游戏教程 本教程简书链接 https://www.jianshu.com/p/def151dbbdf2
  • EGE图形库最新版

    2016-04-15 09:35:30
    ege图形库
  • c语言+ege图形库
  • 学校小学期要用EGE写小游戏,但是很多同学都卡在了第一步emmm所以决定写一个傻瓜化的安装方式。1. 卸载你老旧的codeblocks首先卸载你从来源不明的网站或者学校FTP里面下载的上古版本的codeblocks点击windows键在...
  • C语言实现2048(ege图形库版)

    万次阅读 热门讨论 2017-04-01 13:39:57
    这几天看到我们班上一个大神写了一个2048出来,我自己也想尝试一下,...游戏开始与过程中需要随机出现2或者4,所以需要调用time.h这个 游戏开始时,假如当获取字符为‘w’则先用循环判定这个数字的下方有无和它相等的
  • 精简版,适合初学者。 EGE安装可直接百度。
  • Dev-C++中使用EGE图形库

    万次阅读 多人点赞 2016-10-24 10:57:55
    以前一直使用VC++6.0进行编写,最近因为需要做一些简单的C语言教学,原来想使用Win-Tc来进行练习的,结果自己...在使用Dev-C++后,在网上找到了一个EGE图形库,感觉不错,就尝试着加入到Dev-C++的环境中。总体上比较
  • 使用EGE图形库(Easy Graphics Engine)编写的贪吃蛇代码。(无工程,只有源文件)
  • 主要为大家详细介绍了基于c++ ege图形库实现五子棋游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • EGE图形库 EGE(Easy Graphics Engine),是windows下的简易绘图库,是一个类似BGI(graphics.h)的面向C/C++语言新手的图形库,本文档是网友制作的说明文档
  • C语言——EGE入门图形库实现经典魔塔游戏

    千次阅读 多人点赞 2018-12-09 15:44:41
    该游戏的制作有一些疏漏的地方,目前发现以下几处: 在某些情况下,怪物可能会出现打不死但能够进入决斗界面的问题。 上下楼梯口楼层转换时又回到该楼层或两楼层互相转换的问题。(实际是缓冲区问题) ...
  • EGE图形库13.01

    2013-02-10 17:21:44
    C语言吧吧主炮姐的东西,在此分享一下。VC下的graphics,适合新手入门学习。
  • 扫雷游戏源代码: //头文件 #include <bits/stdc++.h>... //图形库 //#pragma comment(lib,"winmm.lib") using namespace std; #define ROW 15 //行 #define COL 15 //列 #define NUM 15...
  • 目前,EGE图形库已经完美支持VC6, VC2008, VC2010, C-Free, DevCpp, Code::Blocks, wxDev, Eclipse for C/C++等IDE,即支持使用MinGW为编译环境的IDE。如果你需要在VC下使用graphics.h,那么ege将会是很好的替代品...
  • 基于ege图形库,用vs2019写的一个飞机大战,键盘操作,可以开火和变身强化,有大招技能,打不过还有充值系统,不充钱还有惩罚(╹ڡ╹ ),运行需要vc运行库需要vc运行库!!!使用代码记得去ege官网下载合适的ege。
  • #include &lt;graphics.h&gt; #include&lt;bits/stdc++.h&gt; using namespace std; #define MAXN 1000 int visb[MAXN][MAXN];//记录黑棋 int visw[MAXN][MAXN];//记录白棋 ......
  • 初学EGE图形库(一)---获取鼠标位置

    千次阅读 2018-05-27 16:48:19
    介于一般使用EGE图形库的同学都是初学者所以稍微完善了一下注解方便大家理解.#include &lt;graphics.h&gt; #include &lt;stdio.h&gt; int main() { initgraph(640, 480);//初始化窗体大小 ...
  • ================================废话区=============...但是前段时间,导师要求我们应用c语言在codeblocks下利用ege图形库制作一款小游戏,而导师提供的全部资料只有一个安装教程。 于是我开始了全网的指南搜索之...
  • 近期在琢磨C语言图形库,发现主要有如下几种选择: Turbo C 的graphics库 SDL EasyX EGE 1. 普遍认为Graphics库太老了,而且TurboC本身使用比较麻烦,网上一边倒地不推荐。不过其实Turbo C也出了for Win...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

c语言ege图形库

c语言 订阅