game项目(梦开始的地方)

news2024/10/5 15:32:19

梦开始的地方

由于easyx只支持vis,所以这个项目的书写以后都是在vis上进行,希望自己能够把这个项目好好完成,相信自己,加油!

我们需要一个头文件来包括作图工具
(这个头文件在easyx上面下载)

#include<graphics.h>

想一想我们平时玩游戏的时候都是需要一个窗口来作为显示游戏的主体,所以最开始我们需要一个建立窗口函数initgraph();既然已经打开了窗口那么就需要关闭窗口,所以我们选哟用到关闭窗口函数closegraph();
所有我们最开始的窗口就建立好了
 

//1.包含一个图形库的头文件
#include<graphics.h>
#include<iostream>
using namespace std;
int main()
{
	//2.建立一个窗口,使用一个建立窗口函数,需要确定窗口大小
	initgraph(640, 480);//一般默认为640 480

	getchar();

	//既然打开我们就需要关闭窗口,需要用到关闭窗口函数
	closegraph();
	return 0;
}

圆的绘图

介绍几个绘图的函数

 注意这个坐标图的起点是在整个框框的最左上角为(0,0)

接下来我门来写我们的第一个程序 画圆

//1.包含一个图形库的头文件
#include<graphics.h>
#include<iostream>
using namespace std;
int main()
{
	//2.建立一个窗口,使用一个建立窗口函数,需要确定窗口大小
	initgraph(640, 480);//一般默认为640 480
	//画圆函数
	circle(100, 100, 100);
	getchar();
	//既然打开我们就需要关闭窗口,需要用到关闭窗口函数
	closegraph();
	return 0;
}

实际效果如下

设置背景

我们想要写游戏总需要一个游戏背景吧,我们一般都是在一块黑黑的屏幕下进行各种各样的操作,这样显得太枯燥无味了,所以就需要将这个改变一下。

//背景
setbkcolor(WHITE);//设置背景颜色,这两步一定不能少
cleardevice();//初始化,相当于清屏

值得注意的是,这个是线填充颜色,然后再清屏

设置颜色

我们可以给背景上颜色,同时也可以给线条上颜色,这里就有几个函数是专门干这个事的。

//填颜色
setfillcolor(BLUE);	//设置颜色,我喜欢蓝色
setlinecolor(RED);//设置线条颜色
setlinestyle(PS_SOLID, 5);//设置线条样式  setlinestyle(字体,长度)

文字

颜色 背景 图形我们都有了,接下来就是上文字了(其具体使用方法都再注释下面了)

//文字
settextcolor(BLACK);//设置字体颜色,字体最开始的颜色就是白色 
settextstyle(50, 0, "楷体");//设置字体样式,分别为高度,宽度,字体。
setbkmode(TRANSPARENT);//这个transparent的意思就是透明的意思,就可以将文字的边框给隐藏起来了,OPAQUE这个是不透明的意思
settextcolor(RGB(255, 102, 153));//这个是设置字体颜色,可以用qq截图加上c就可以截上我们喜欢的颜色了,也可以在画图中自定义
outtextxy(50, 50, "我是一个大帅哥");//输出字符串,#在这里一定要记得在前面要加上一个大写的L,这样就不会报错了
//还有第二种解决方案,就是使用TEXT()将字符串包起来
//还有第三种解决方案就是使用_T()
//还有第四种解决方案就是:项目->属性->配置属性->高级->字符集->改为多字符字符集,注意改完之后就不能使用以上的改变方式

我们平时玩游戏的时候都是需要按下按钮的,这个按钮就是一个矩形再加上一段文字,而这个文字一般都是在矩形中间

所以接下来就是对如何将文字放在矩形中间进行处理

//把文字居中
solidrectangle(100, 200, 500, 300);//居中的一些操作 宽度=500-100,高度=300-100
char arr[] = "居中输出";
int w = 400 / 2 - textwidth(arr) / 2;//这个400是怎么来的呢?就是前面计算500-100得来的,这个textwidth就是用于计算字符串宽度的
int h = 100 / 2 - textheight(arr) / 2;//这个100是怎么来的呢?就是前面计算高度300-100得来的,这个textheight就是用于计算高度的
outtextxy(w + 100, h + 200, arr);

图像处理函数

如何来处理图像呢?我们需要在网上下载图片,将图片放在我们编写代码的文件中,我们再使用相对路径或者绝对路径对图片进行提取,提取的方式就是将图片的名称写进相对应的函数中就可以了

//对图片进行操作
IMAGE img;//这个就是相当于定义了一个图形变量
loadimage(&img, "./鸡你太美.jpg", 250, 250);//相对路径:"./"表示当前文件夹下 "../"就是表示当前文件夹的上一节  绝对路径:就是直接使用这个文件的所在位置很麻烦 没有相对路径好用
//这个loadimage函数,第一个变量就是给img变量赋值,第二个就是其具体的值,第三第四就是这个图片的大小
putimage(0, 0, &img);

值得注意的是,对于图像我们使用一个变量来承载的,所以我们需要定义一个变量IMAGE就是定义图形变量的方式
还值得一提的是这个相对路径和绝对路径的区别,相对路径是在本文件夹和上一个文件夹中,而绝对路径就是i直接指名道姓的来(而且还不能有空格,所以我觉得相对路径要优于绝对路径)。

//对图片进行操作
IMAGE img;//这个就是相当于定义了一个图形变量 250 ,250
loadimage(&img, "./鸡你太美.jpg", 250, 250);//相对路径:"./"表示当前文件夹下 "../"就是表示当前文件夹的上一节  绝对路径:就是直接使用这个文件的所在位置很麻烦 没有相对路径好用
//这个loadimage函数,第一个变量就是给img变量赋值,第二个就是其具体的值,第三第四就是这个图片的大小
putimage(0, 0, &img);

鼠标操作

在fps游戏中某些2.5d,2d游戏中很多都是靠鼠标键去攻击的,所以我们就需要对鼠标进行对应的操作。

我们需要一个不断循环的while(1)来使得这个项目能够一直

//鼠标操作
while (1)
{

	if (MouseHit())
	{
		//cleardevice();//清屏
		MOUSEMSG msg = GetMouseMsg();
		switch (msg.uMsg)
		{
		case WM_LBUTTONDOWN://lbuttondown 按下鼠标左键
			outtextxy(msg.x - 120, msg.y - 30, "鸡你太美");
			break;
		case WM_RBUTTONDOWN://rbuttondown 按下鼠标右键
			outtextxy(msg.x - 50, msg.y - 30, "哎呀!");
			break;
		}
	}
}

outtextxy函数我想到如果将我们鼠标的位置输进去,再进行一些调整就能将字符按照中心进行输出了

最终代码和效果

//1.包含一个图形库的头文件
#include<graphics.h>
#include<iostream>
#include<cstdio>
#include<easyx.h>
#include<conio.h>//这个是有关键盘的头文件 _getch()
using namespace std;
int main()
{
	//2.建立一个窗口,使用一个建立窗口函数,需要确定窗口大小
	initgraph(1000, 640, SHOWCONSOLE);//一般默认为640 480
	//showconsole代表展示控制台,NOCLOSE关闭关闭键,NOMINIMIZE关闭最小化键
	//若想要及关闭关闭键又想要关闭最小化键,就需要将用‘|’这个就可以了 有点&&的意思

	//背景
	setbkcolor(WHITE);//设置背景颜色,这两步一定不能少
	cleardevice();//初始化,相当于清屏

	//填颜色
	setfillcolor(BLUE);	//设置颜色,我喜欢蓝色
	setlinecolor(RED);//设置线条颜色
	setlinestyle(PS_SOLID, 5);//设置线条样式  setlinestyle(字体,长度)

	//画圆
	circle(100, 100, 100);//画圆函数(只有边框的)
	fillcircle(200, 100, 100);//实心的圆(带有边框的圆)
	solidcircle(300, 100, 100);//正真意义上的实心圆

	//文字
	settextcolor(BLACK);//设置字体颜色,字体最开始的颜色就是白色 
	settextstyle(50, 0, "楷体");//设置字体样式,分别为高度,宽度,字体。
	setbkmode(TRANSPARENT);//这个transparent的意思就是透明的意思,就可以将文字的边框给隐藏起来了,OPAQUE这个是不透明的意思
	settextcolor(RGB(255, 102, 153));//这个是设置字体颜色,可以用qq截图加上c就可以截上我们喜欢的颜色了,也可以在画图中自定义
	outtextxy(50, 50, "我是一个大帅哥");//输出字符串,#在这里一定要记得在前面要加上一个大写的L,这样就不会报错了
	//还有第二种解决方案,就是使用TEXT()将字符串包起来
	//还有第三种解决方案就是使用_T()
	//还有第四种解决方案就是:项目->属性->配置属性->高级->字符集->改为多字符字符集,注意改完之后就不能使用以上的改变方式

	//把文字居中
	solidrectangle(100, 200, 500, 300);//居中的一些操作 宽度=500-100,高度=300-100
	char arr[] = "居中输出";
	int w = 400 / 2 - textwidth(arr) / 2;//这个400是怎么来的呢?就是前面计算500-100得来的,这个textwidth就是用于计算字符串宽度的
	int h = 100 / 2 - textheight(arr) / 2;//这个100是怎么来的呢?就是前面计算高度300-100得来的,这个textheight就是用于计算高度的
	outtextxy(w + 100, h + 200, arr);


	/
	//对图片进行操作
	IMAGE img;//这个就是相当于定义了一个图形变量 250 ,250
	loadimage(&img, "./鸡你太美.jpg", 1000, 640);//相对路径:"./"表示当前文件夹下 "../"就是表示当前文件夹的上一节  绝对路径:就是直接使用这个文件的所在位置很麻烦 没有相对路径好用
	//这个loadimage函数,第一个变量就是给img变量赋值,第二个就是其具体的值,第三第四就是这个图片的大小
	putimage(0, 0, &img);

	//鼠标操作
	while (1)
	{

		if (MouseHit())
		{
			//cleardevice();//清屏
			MOUSEMSG msg = GetMouseMsg();
			switch (msg.uMsg)
			{
			case WM_LBUTTONDOWN://lbuttondown 按下鼠标左键
				outtextxy(msg.x - 120, msg.y - 30, "鸡你太美");
				break;
			case WM_RBUTTONDOWN://rbuttondown 按下鼠标右键
				outtextxy(msg.x - 50, msg.y - 30, "哎呀!");
				break;
			}
		}
	}

	getchar();

	//既然打开我们就需要关闭窗口,需要用到关闭窗口函数
	closegraph();
	return 0;
}

效果是怎样的呢?

首先我们得背景会出来

我们这个鼠标在这个窗口内进行左右键操作会打出不同的文字

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PostgreSQL与MySQL,谁更胜一筹

前言 PostgreSQL与MySQL都是优秀的开源数据库。在日常学习中&#xff0c;新手可能接触最多的是MySql,但是实际工作中&#xff0c;两者的应用场景其实都很广。我之前的做过上网流量销售业务&#xff0c;用的是MySQL,现在接触广告业务&#xff0c;用的是pg数据库&#xff0c;每天…

汉诺塔问题—java详解(附源码)

来源及应用 相传在古印度圣庙中&#xff0c;有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上&#xff0c;有三根杆(编号A、B、C)&#xff0c;在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标&#xff1a;把A杆上的金盘全部移到C杆上&#xff0c;并仍…

Spring学习上下文【ConfigurableApplicationContext】

话不多说&#xff0c;先上图&#xff1a; ConfigurableApplicationContext是Spring框架中的一个接口&#xff0c;它继承了ApplicationContext接口&#xff0c;并扩展了一些额外的方法&#xff0c;用于允许应用程序在运行时动态地修改和管理应用上下文。ConfigurableApplicati…

matlab代码--基于matlabLDPC-和积译码系统

LDPC编码 一个码长为n、信息位个数为k的线性分组码&#xff08;n,k&#xff09;可以由一个生成矩阵 来定义&#xff0c;信息序列 通过G被映射到码字XS.G。线性分组码也可以由一个校验矩阵 来描述。所以码字均满足 。校验矩阵的每一行表示一个校验约束 &#xff0c;其中所有的非…

【大数据】Flink 之部署篇

Flink 之部署篇 1.概述和参考架构2.可重复的资源清理3.部署模式3.1 Application 模式3.2 Per-Job 模式&#xff08;已废弃&#xff09;3.3 Session 模式 Flink 是一个多用途框架&#xff0c;支持多种不同的混合部署方案。下面&#xff0c;我们将简要介绍 Flink 集群的构建模块、…

免费搭建个人网盘

免费搭建一个属于个人的网盘。 服务端 详情请参考原网站的服务端下载和安装虚拟磁盘Fuse4Ui可以支持把网盘内容挂载成系统的分区&#xff1b; 挂载工具效果图&#xff1a;应用端应用端的下载 效果图

教你零基础制作产品画册,打开线上市场

​ 随着市场竞争的日益激烈&#xff0c;越来越多的企业开始注重产品的宣传和推广。而产品画册作为产品宣传的重要手段之一&#xff0c;也越来越受到企业的关注。今天&#xff0c;分享一个零基础制作产品画册的方法&#xff0c;帮助你打开线上市场的大门 1.选择合适的企业宣传…

代码随想录算法训练营第58天 | 392.判断子序列 115.不同的子序列

判断子序列 这道题可以双指针方法解决。 class Solution { public:bool isSubsequence(string s, string t) {int s_index 0;for(int t_index 0; t_index < t.size(); t_index) {if(s[s_index] t[t_index]) {s_index;}}return s_index s.size();} };用动态规划也是可解…

cilium-agent远程debug

文章目录 概述编译cilium-agent运行cilium-agent开启远程debug参考资料 概述 通过远程 debug&#xff0c;来分析 cilium-agent 是如何在容器创建的时候定义容器网络接口。 编译cilium-agent 首先是在本地编译 cilium-agent&#xff0c;下面是以 v1.14.4 的代码作为例子来阐述…

AJAX.

概念:AJAX&#xff1a;异步的 JavaScript 和 XML AJAX作用: 1.与服务器进行数据交换: 通过AJAX可以给服务器发送请求&#xff0c;并获取服务器响应的是数据 使用了AJAX和服务器进行通讯&#xff0c;就可以使用HTML和AJAX来替换JSP页面了 2.异步交互:可以在不重新加载整个页面的…

VSCode The preLaunchTask ‘C/C++: clang++ 生成活动文件‘ terminated with exit code -1

更改tasks.json文件里面的type为shell 选择g 选择g&#xff0c;然后点回到text.c&#xff0c;按下F5. 得到结果。 文中内容参考: 从零开始手把手教你配置属于你的VS Code_哔哩哔哩_bilibili https://blog.csdn.net/qq_63872647/article/details/128006861

Windows7安装指南

概要&#xff1a; 本篇演示Windows7的安装过程 一、说明 1、电脑 笔者的电脑品牌是acer(宏碁/宏基) 电脑开机按F2可进入BIOS 2、Windows7启动U盘 Windows7启动U盘作为Windows7的安装来源 该U盘的制作可参考笔者的文章 Windows制作Windows的U盘启动盘 Windows7没有USB…

《图解HTTP》笔记1:http的诞生

1&#xff0c;http的诞生&#xff1a; 1.1 为共享知识而生 我们现在使用web&#xff08;World Wide Web的简称&#xff0c;即万维网&#xff09;浏览器&#xff0c;目前可以输入一个网址&#xff08;http://www.baidu.com)&#xff0c;就会有一个网页显示出来。 最开始设想出…

百面嵌入式专栏(经验篇)如何在面试中介绍自己的项目经验

文章目录 1. 在面试前准备项目描述,别害怕,因为面试官什么都不知道2. 准备项目的各种细节,一旦被问倒了,就说明你没做过3.不露痕迹地说出面试官爱听的话4.一定要主动,面试官没有义务挖掘你的亮点5.一旦有低级错误,可能会直接出局6.引导篇:准备些加分点,在介绍时有意提到…

36、IO进程线程/进程和线程之间的通信练习

一、使用有名管道完成两个进程的相互通信(提示&#xff1a;可以使用多进程或多线程完成)。 代码1&#xff1a;创建两个有名管道文件 #include<myhead.h>int main(int argc, const char *argv[]) {if(mkfifo("./mingtohua",0664)-1)//创建小明向小华发信息的管…

【CSS】设置文字(文本)的渐变色

# 渐变色 文字 第一步 设置渐变颜色 background: linear-gradient(278.83deg, #5022bd 31.42%, #8636d1 75.55%); // 先设置渐变色背景&#xff1b; 第二步 设置颜色的使用范围 background-clip: text; // 背景被裁剪成文字的前景色。 -webkit-background-clip: text; 第三步…

C#使用一个泛型方法操作不同数据类型的数组

目录 一、泛型方法及其存在的意义 二 、实例 1.源码 2.生成效果 再发一个泛型方法的示例。 一、泛型方法及其存在的意义 实际应用中&#xff0c;查找或遍历数组中的值时&#xff0c;有时因为数组类型的不同&#xff0c;需要对不同的数组进行操作&#xff0c;那么,可以使用…

大工程 从0到1 数据治理 数仓篇(sample database classicmodels _No.7)

大工程 从0到1 数据治理 之数仓篇 我这里还是sample database classicmodels为案列&#xff0c;可以下载&#xff0c;我看 网上还没有类似的 案列&#xff0c;那就 从 0-1开始吧&#xff01; 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参…

ChatGPT学习第二周

&#x1f4d6; 学习目标 自然语言处理&#xff08;NLP&#xff09;简介 探索自然语言处理的基本原理&#xff0c;理解其在ChatGPT中的应用。 GPT模型概述 了解生成式预训练变换器&#xff08;GPT&#xff09;的工作原理。 ✍️ 学习活动 学习资料 《走进AI(三) | 解构 NLP…

WEB APIs (4)

日期对象 实例化 代码中出现new关键字&#xff0c;创建时间对象 得到当前时间&#xff1a; const date new Date&#xff08;&#xff09; 获得指定时间&#xff1a; const date new Date&#xff08;‘2022-5-1’&#xff09; 方法作用说明getFullYear()获取年份获取…