C++ Easyx案例实战:Cookie Maker工作室1.0V

前言

        //制作属于自己的工作室!

        :运行效果以及下载见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);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/694434.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一分钟有60秒,这个有趣的原因你知道吗?

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

【JavaEE】Spring IoCDI详解

一.基本概念 1.Ioc基本概念 Ioc: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器. 什么是控制反转呢? 也就是控制权反转. 什么的控制权发发了反转? 获得依赖对象的过程被反转了也就是说, 当需要某个对象时, 传统开发模式中需要自己通…

minio的一个基础使用案例:用户头像上传

文章目录 一、minio下载安装&#xff08;Windows&#xff09;二、案例需求分析三、后端接口开发 一、minio下载安装&#xff08;Windows&#xff09; 1. 下载minio服务端和客户端 minio下载地址 2. 手动搭建目录 /minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目…

66. UE5 RPG 实现远程攻击武器配合角色攻击动画

在制作游戏中&#xff0c;我们制作远程攻击角色&#xff0c;他们一般会使用弓箭&#xff0c;弩&#xff0c;弹弓等武器来进行攻击。比如你使用弓箭时&#xff0c;如果角色在播放拉弓弦的动画&#xff0c;但是弓箭武器没有对应的表现&#xff0c;会显得很突兀。所以&#xff0c;…

GDPU Java 天码行空15 数据库编程

一、实验目的 1、 了解数据库的基础知识。 2、 掌握MySQL的下载、安装与配置。 3、 掌握MySQL可视化工具的使用。 4、 了解SQL语言。 5、 掌握JDBC中的API&#xff0c;并能进行简单的数据库操作。 二、实验内容 1、 安装MySQL &#x1f468;‍&#x1f3eb; 视频教程 2、建…

私有云和多云管理平台 | Cloudpods v3.11.4 正式发布

本次 3.11.4 更新亮点为&#xff1a;系统镜像引入社区镜像&#xff0c;用户可以一键导入各主流开源操作系统镜像&#xff0c;方便用户上手使用。持续迭代共享 LVM&#xff0c;支持快照&#xff0c;主备机等特性&#xff0c;修复迁移删除镜像缓存等 BUG。 功能优化 【费用】费…

linux动态调试 dev_dbg

动态调试使用方法 打开内核动态调试开关&#xff0c;make menuconfig选中CONFIG_DYNAMIC_DEBUG以及CONFIG_DEBUG_FS Linux启动后&#xff0c;使用命令行挂载上dbgfs 1. mkdir /mnt/dbg 2. mount -t debugfs none /mnt/dbg 1.控制某个文件所有dev_dbg()&#xff0c; echo -n &q…

mongodb总概

一、mongodb概述 mongodb是最流行的nosql数据库&#xff0c;由C语言编写。其功能非常丰富&#xff0c;包括: 面向集合文档的存储:适合存储Bson(json的扩展)形式的数据;格式自由&#xff0c;数据格式不固定&#xff0c;生产环境下修改结构都可以不影响程序运行;强大的查询语句…

MSPM0l1306——配置滴答定时器

我们配置好了滴答定时器之后&#xff0c;还要手动编写滴答定时器的中断服务函数&#xff0c;因为我们开启的滴答定时器的中断&#xff0c;当滴答定时器的计数值从我们设置的值减到0时&#xff0c;就会触发一次中断&#xff0c;触发中断就会执行中断服务函数。各个中断的中断服务…

144、二叉树的前序递归遍历

题解&#xff1a; 递归书写三要素&#xff1a; 1&#xff09;确定递归函数的参数和返回值。要确定每次递归所要用到的参数以及需要返回的值 2&#xff09;确定终止条件。操作系统也是用栈的方式实现递归&#xff0c;那么如果不写终止条件或者终止条件写的不对&#xff0c;都…

Here Doucument

一、Here Document概述 1.概念 使用I/0重定向的方式将命令列表提供给交互式程序 标准输入的一种替代品 2.语法格式 命令 <<标记 标记 3.注意事项 标记可以使用任意合法字符&#xff08;通常为EOF&#xff09; 结尾的标记一定要顶格写&#xff0c;前面不能有任何字符…

【iOS】内存泄漏检查及原因分析

目录 为什么要检测内存泄漏&#xff1f;什么是内存泄漏&#xff1f;内存泄漏排查方法1. 使用Zombie Objects2. 静态分析3. 动态分析方法定位修改Leaks界面分析Call Tree的四个选项&#xff1a; 内存泄漏原因分析1. Leaked Memory&#xff1a;应用程序未引用的、不能再次使用或释…

Java数据结构准备工作---常用类

文章目录 前言1.包装类1.1.包装类基本知识1.2.包装类的用途1.3.装箱和拆箱1.3.1.装箱&#xff1a;1.3.2.拆箱 1.4 包装类的缓存问题 2.时间处理类2.1.Date 时间类(java.util.Date)2.2.DateFormat 类和 SimpleDateFormat 类2.3.Calendar 日历类 3.其他常用类3.1.Math类3.2.Rando…

嵌入式中C语言经典的面试题分享

#error的作用是什么? #error 指令让预处理器发出一条错误信息,并且会中断编译过程。下面我们从Linux代码中抽取出来一小段代码并做修改得到示例代码: 这段示例代码很简单,当RX_BUF_IDX宏的值不为0~3时,在预处理阶段就会通过 #error 指令输出一条错误提示信息: "…

Python 很好用的爬虫框架:Scrapy:

了解Scrapy 爬虫框架的工作流程&#xff1a; 在scrapy中&#xff0c; 具体工作流程是这样的&#xff1a; 首先第一步 当爬虫引擎<engine>启动后&#xff0c; 引擎会到 spider 中获取 start_url<起始url> 然后将其封装为一个request对象&#xff0c; 交给调度器<…

文心一言 VS 讯飞星火 VS chatgpt (277)-- 算法导论20.3 4题

四、如果调用 vEB-TREE-INSERT 来插入一个已包含在 vEB 树中的元素&#xff0c;会出现什么情况&#xff1f;如果调用 vEB-TREE-DELETE 来删除一个不包含在 vEB 树中的元素&#xff0c;会出现什么情况&#xff1f;解释这些函数为什么有相应的运行状况&#xff1f;怎样修改 vEB 树…

【手推公式】如何求SDE的解(附录B)

【手推公式】如何求SDE的解&#xff08;附录B&#xff09; 核心思路&#xff1a;不直接求VE和VP的SDE的解xt&#xff0c;而是求xt的期望和方差&#xff0c;从而写出x0到xt的条件分布形式&#xff08;附录B&#xff09; 论文&#xff1a;Score-Based Generative Modeling throug…

【SpringBoot + Vue 尚庭公寓实战】根据类型查询标签列表接口实现(五)

【SpringBoot Vue 尚庭公寓实战】根据类型查询标签列表接口实现&#xff08;五&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】根据类型查询标签列表接口实现&#xff08;五&#xff09;1、查看接口2、进行开发 1、查看接口 启动项目 访问&#xff1a;http://localho…

快排(快速排序)的递归与非递归实现(文末附完整代码)

快排有几种不同的写法&#xff0c;下面一一来介绍并实现。其中又分为递归和非递归的写法&#xff0c;但大体思路相同&#xff0c;只是代码实现略有不同。(注&#xff1a;文章中的完整代码中&#xff0c;Swap()函数均省略未写&#xff0c;记得自己补充) 递归写法 递归的写法类…

手写kNN算法的实现-用欧几里德空间来度量距离

kNN的算法思路&#xff1a;找K个离预测点最近的点&#xff0c;然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离&#xff0c;关于这个距离&#xff0c;我们用欧几里德距离来度量&#xff08;其实还有很多…