Codeblocks安装ege以及要编译pthread.h头文件问题

最近自己折腾了下Codeblocks编译C的问题,然后突然想搞可视化界面,于是又安装ege,网上各种搜索,走了很多弯路,所以贴出来免得别人再走弯路,首先要用到ege的话,一定要下载codeblocks-12.11mingw-setup.exe这个版本,其他版本以及最新版本可以在装完这个版本后在这个上边覆盖,Codeblocks安装我选择D盘的路径,剩下的都是默认就好了,很快安装完,然后下载了ege15.04.zip,解压缩后将ege15.04\include目录下ege里边的*.h和ege.h,graphics.h都放入D:\CodeBlocks\MinGW\include里, 将ege15.04\lib\mingw4.7\lib下的*.a文件都放入D:\CodeBlocks\MinGW\lib下边,然后打开Codeblocks,新建file——New——project

 

 一定要选C++项目,然后命名保存,打开project下边build options...

linker settings,左边add添加*.a文件,文件在 D:\CodeBlocks\MinGW\lib目录下

 

 

libgraphics.a

libgdi32.a

libimm32.a

libmsimg32.a

libole32.a

liboleaut32.a

libwinmm.a

libuuid.a

要按顺序添加进去,然后保存,运行你的程序

#include <bits/stdc++.h>
#include <graphics.h>  //图形库
//#pragma comment(lib,"winmm.lib")
using namespace std;

#define ROW 15      //行
#define COL 15      //列
#define NUM 15      //雷的个数
#define SIZE 50     //图片大小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<ROW+2;i++){         //初始化数组
        for(int j=0;j<COL+2;j++){
            mp[i][j]=0;
        }
    }

    for(int i=0;i<NUM;i++){     //布雷
        int r=rand()%ROW+1;   //可设雷的行范围为1~ROW
        int c=rand()%COL+1;   //列范围为1~COL   游戏区
        if(mp[r][c]==0) mp[r][c]=-1;
    }

    for(int i=1;i<ROW+1;i++){        //计算游戏区每个数所在的九宫格有几个雷
        for(int j=1;j<COL+1;j++){
            if(mp[i][j]==0){
                for(int m=i-1;m<=i+1;m++){
                    for(int n=j-1;n<=j+1;n++){
                        if(mp[m][n]==-1){
                            mp[i][j]++;
                        }
                    }
                }
            }
        }
    }
    //简单加密+20
        for(int i=1;i<=ROW;i++){
            for(int j=1;j<=COL;j++){
                mp[i][j]+=20;
            }
        }

}

//载入图片
void drawMap(){
    for(int i=0;i<ROW+1;i++){
        for(int j=0;j<COL+1;j++){
           // printf("%2d",mp[i][j]);
               /* ##################################################################
          元素                    图片
         -1(雷)                  img[9]
         0~8(数字)            img[0]~img[8]
         19~28(空白)             img[10]
         >30(标记)              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+50,0);    //界面
     //setrendermode(RENDER_MANUAL);

    setbkcolor(WHITE);
    setcolor(BLUE);
    setfont(20, 0, "楷体");
    setbkmode(TRANSPARENT);

    //设置开始时间
    double startTime = fclock();


    //for (; is_run(); delay_fps(60)) {

    //    cleardevice();


        //在帧循环中不断获取运行时间
        double runTime = fclock();

        //当前时间就等于两个时间差
        double curTime = runTime - startTime;
        xyprintf(300, 760, "运行总时间:%.3lf", runTime);
        xyprintf(300, 780, "计时:%.3lf", curTime);
     /*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,"D:/software/sourcecode/tx/pic/0.jpg");
    getimage(img1,"D:/software/sourcecode/tx/pic/1.jpg");
    getimage(img2,"D:/software/sourcecode/tx/pic/2.jpg");
    getimage(img3,"D:/software/sourcecode/tx/pic/3.jpg");
    getimage(img4,"D:/software/sourcecode/tx/pic/4.jpg");
    getimage(img5,"D:/software/sourcecode/tx/pic/5.jpg");
    getimage(img6,"D:/software/sourcecode/tx/pic/6.jpg");
    getimage(img7,"D:/software/sourcecode/tx/pic/7.jpg");
    getimage(img8,"D:/software/sourcecode/tx/pic/8.jpg");
    getimage(img9,"D:/software/sourcecode/tx/pic/thunder.png");
    getimage(img10,"D:/software/sourcecode/tx/pic/blue.png");
    getimage(img11,"D:/software/sourcecode/tx/pic/flag.png");

    gameInit();
    gameDraw();

    while(1){
        delay_fps(60);
       // for (; is_run(); delay_fps(60)) {

        cleardevice();


        //在帧循环中不断获取运行时间
        double runTime = fclock();

        //当前时间就等于两个时间差
        double curTime = runTime - startTime;
        xyprintf(300, 760, "运行总时间:%.3lf", runTime);
        xyprintf(300, 780, "计时:%.3lf", curTime);    //防止闪退
        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;
}

 运行后的界面,这个做完后我又想加一个计时的,所以又用到了线程pthread,发现又没有这个头文件,下载了这几个文件,*.h的文件放到include目录下,*.a的文件放到lib目录下,*.dll的文件放到C:\Windows\System32和C:\Windows\SysWOW64下边,程序既可以正常编译了。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值