前言
//制作属于自己的工作室!
注:运行效果以及下载见Cookie Maker 工作室成立程序。
关于Cookie Maker工作室成立的信息,I am very happy(唔……改不过来了)。
OKOK,第一次用图形库写程序(图形库:你终于想起我了!),下面废话不多说,直接上教程!
开始(游戏)
此程序灵感来招人通告-鸡你太美--爱坤工作室-慧编程作品社区。
编译参数、链接参数
图形库的基本准备工作
依次在编译参数、链接参数写上:
...\Dev-Cpp\MinGW32\lib\libcomdlg32.a -mwindows
*-mwindows用来隐藏控制台。
-static -luuid -lmsimg32 -lgdi32 -limm32 -lole32 -loleaut32 -lwinmm -luuid
*这些用来提供头文件的需求。
1、定义函数
这个程序我们会有三个功能:招人要求、工作室简介、工作室近况,但还需要一个主界面。
void Start(); //主界面
void Ghange1(); //招人要求
void Ghange2(); //工作室近况
void Ghange3(); //工作室简介
//以后还会更新“开始工作”int main()
{//开始写程序
}
2、主界面函数
①打印背景
应该先跳出来主界面,这一段代码需要一张这样的图片(500 X 500),
名字叫做mk.png:
(直接复制就可以)
首先需要创建一个500 X 500的图形界面,再把标题改成 Cookie Maker工作室:
initgraph(500, 500);
setcaption("Cookie Maker工作室");
然后要把主界面的背景打印出来:
PIMAGE img1 = newimage();//定义一个图片变量if (getimage(img1, "mk.png") != grOk) {MessageBox(NULL, "Error!", "Error!", MB_ICONERROR|MB_OK);exit(-1);}//获取图片信息并且检测是否可以打开图片putimage(0, 0, img1);//打印图片delay_ms(0);//刷新
②打印按钮
紧接着,需要输出几个可以供我们点击的按钮, 招人要求、工作室简介、工作室近况。
setcolor(LIGHTRED);
//设置输出颜色
setbkcolor(LIGHTBLUE);
//设置输出背景颜色
setfont(55, 20, "微软雅黑");
//设置字体以及大小
outtextxy(160, 240, "招人要求");
//打印
setcolor(YELLOW);
outtextxy(140, 310, "工作室近况");
setcolor(GREEN);
outtextxy(140, 380, "工作室简介");
3、判断鼠标指针是否喷碰到按钮以及是否按下鼠标
图形库的获取鼠标指针数据变量叫做mouse_msg。
mouse_msg msg = {0};int x, y;while(1){while (mousemsg()){msg = getmouse();}//cleardevice();mousepos(&x, &y);if (x < 382 && x > 157 && y > 209 && y < 263 && msg.is_down() == 1){Ghange1();getch();Start();continue;}if (x < 394 && x > 138 && y < 334 && y > 279 && msg.is_down() == 1){Ghange2();getch();Start();continue; }if (x < 394 && x > 138 && y < 404 && y > 349 && msg.is_down() == 1){Ghange3();getch();Start();continue;}if (x < 382 && x > 157 && y < 474 && y > 420 && msg.is_down() == 1){Ghange4();getch();Start();continue;}//制作时的测试代码//SetPos(0, 0);//printf("x = %d y = %d", x, y);Sleep(1); }
4、打印页面
这一段代码需要几张这样的图片(434 X 434)。
(可以直接复制)
名字叫做Ch1.png:
Ch3.png:
Ch21.png:
Ch22.png:
void Ghange1()
{PIMAGE img = newimage();cleardevice();getimage(img, "Ch1.png");putimage(30, 30, img);delay_ms(0);
}void Ghange2()
{PIMAGE img = newimage();cleardevice();getimage(img, "Ch21.png");putimage(30, 30, img);delay_ms(0);getch();cleardevice();getimage(img, "Ch22.png");putimage(30, 30, img);delay_ms(0);
}void Ghange3()
{PIMAGE img = newimage();cleardevice();getimage(img, "Ch3.png");putimage(30, 30, img);delay_ms(0);
}
总代码
#include <graphics.h>
#include <bits/stdc++.h>
using namespace std;void Start();
void Ghange1();
void Ghange2();
void Ghange3();int main()
{Start();mouse_msg msg = {0};int x, y;while(1){while (mousemsg()){msg = getmouse();}//cleardevice();mousepos(&x, &y);if (x < 382 && x > 157 && y > 239 && y < 293 && msg.is_down() == 1){Ghange1();getch();Start();continue;}if (x < 394 && x > 138 && y < 364 && y > 309 && msg.is_down() == 1){Ghange2();getch();Start();continue; }if (x < 394 && x > 138 && y < 434 && y > 379 && msg.is_down() == 1){Ghange3();getch();Start();continue;}//SetPos(0, 0);//printf("x = %d y = %d", x, y);Sleep(1); }return 0;
}void Start()
{initgraph(500, 500);setcaption("Cookie Maker工作室");PIMAGE img1 = newimage();if (getimage(img1, "mk.png") != grOk) {MessageBox(NULL, "Error!", "Error!", MB_ICONERROR|MB_OK);exit(-1);}putimage(0, 0, img1);delay_ms(0);setcolor(LIGHTRED);setbkcolor(LIGHTBLUE);setfont(55, 20, "微软雅黑");outtextxy(160, 240, "招人要求");setcolor(YELLOW);outtextxy(140, 310, "工作室近况");setcolor(GREEN);outtextxy(140, 380, "工作室简介");//getch();
}void Ghange1()
{PIMAGE img = newimage();cleardevice();getimage(img, "Ch1.png");putimage(30, 30, img);delay_ms(0);
}void Ghange2()
{PIMAGE img = newimage();cleardevice();getimage(img, "Ch21.png");putimage(30, 30, img);delay_ms(0);getch();cleardevice();getimage(img, "Ch22.png");putimage(30, 30, img);delay_ms(0);
}void Ghange3()
{PIMAGE img = newimage();cleardevice();getimage(img, "Ch3.png");putimage(30, 30, img);delay_ms(0);
}