前言
//制作属于自己的工作室!
注:运行效果以及下载见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);
}