game项目(梦开始的地方)

本文介绍了使用EasyX库在Vis环境中创建图形窗口,包括窗口初始化、关闭、绘制圆形、设置背景颜色和线条颜色、文字渲染、图片加载以及鼠标事件处理的基本步骤。
摘要由CSDN通过智能技术生成

梦开始的地方

由于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;
}

效果是怎样的呢?

首先我们得背景会出来

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白色的风扇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值