提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
C++
被广泛用于开发各种类型的软件,包括系统软件、应用程序、游戏开发、嵌入式系统等领域。由于其高性能和灵活性,它是许多大型软件项目的首选语言之一。
#include<easyx.h>
用于 C/C++ 图形和 GUI 编程的头文件。 它是与 EasyX 图形用户界面库一起使用的 C++
库。该库提供了绘制基本形状、创建动画、处理键盘和鼠标输入以及构建简单图形应用程序的功能。<easyx.h> 头文件是 EasyX 库的一部分,通常用于在 Windows 平台上进行 C++ 图形编程。要使用 easyx.h,您需要在开发环境中安装 EasyX 库。然后,您可以编写 C++ 代码,使用 EasyX 函数来创建图形应用程序。
#include<conio.h>
用于控制台输入输出。在早期的MS-DOS和Windows编程环境中,<conio.h> 提供了一些函数和宏来实现控制台程序的输入和输出操作。
其中一些常见的函数和宏包括:
getch():从控制台获取一个字符,不回显到屏幕上。 getche():从控制台获取一个字符,并在屏幕上显示。 clrscr():清除控制台屏幕上的内容。 cprintf():按指定格式向控制台打印输出。 然而,<conio.h>不是标准C或C++的一部分,而是特定于某些编译器(如Microsoft VisualC++)和特定环境(如DOS或Windows)的。在许多现代的编译器和操作系统中,可能不再支持 <conio.h>中定义的这些特定函数和宏,因为这些函数和宏在非标准和特定的环境下使用。在现代的C++中,通常推荐使用标准库中的功能来代替 <conio.h> 中的函数。比如,使用 头文件可以进行控制台的输入和输出操作,使用 std::cin 和 std::cout 来替代 getch() 和 cprintf() 等函数。
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_ESC 27
---
这段代码是使用C/C++中的预处理器指令 #define
定义了一些常量。这些常量为特定的键盘按键码(键码值)定义了符号名称。这样做是为了提高代码的可读性和可维护性,以便在代码中使用这些符号名称来表示对应的键盘按键。这些值看起来与ASCII码中的一些特定值相对应,通常用于代表方向键(上、下、左、右)和一些特殊键(如ESC键)。在编写程序时,可以使用这些符号名称来检测键盘输入的相应按键,以便更容易地理解和管理代码。例如,在键盘事件处理中,可以使用这些定义的符号名称来检查用户是否按下了特定的键。
class Cperson
{
public://修饰符 表示公有的
//坐标
int m_x;
int m_y;
//用于和图片绑定的变量
IMAGE m_imgUp;
IMAGE m_imgDown;
IMAGE m_imgLeft;
IMAGE m_imgRight;
//在easyx图形库中,IMAGE是一个结构体,通常用于表示图像。它定义了一个用于存储图像信息的数据结构,可以用于加载、显示、处理和操作图像。该结构体包含了图像的宽度、高度、颜色深度以及图像数据等相关信息。 这个结构体通常用于easyx库中,用来创建、加载和操作图像,使得用户能够在窗口中绘制图像,实现简单的图形操作功能。
//方向
int m_direct;
public:
Cperson()//构造函数 进行初始化
{
::initgraph(600,600);//初始化窗口
::setbkcolor(RGB(255,255,255));//设置背景颜色为
::cleardevice();//清除上一帧的内容
//约定 窗口大小600*600
m_x=300;
m_y=300;
//图片和变量做绑定关联
::loadimage(&m_imgUp,L"./res/up.bmp");
::loadimage(&m_imgDown,L"./res/down.bmp");
::loadimage(&m_imgLeft,L"./res/left.bmp");
::loadimage(&m_imgRight,L"./res/right.bmp");
//从指定路径加载一张位图图片(通常是 BMP 格式的图片)到名为 m_imgUp 的 IMAGE 结构体中。L 前缀表示这是一个宽字符字符串(Unicode 字符串),"./res/up.bmp" 是图片的相对路径
m_direct=KEY_RIGHT;//初始化方向
}
~Cperson()//析构函数
{
::closegraph();//关闭窗口
}
void showPeople()
{
//根据方向键显示不同图片
::BeginBatchDraw();//批量绘图
::cleardevice();
if(m_direct==KEY_UP) ::putimage(m_x,m_y,&m_imgUp);
if(m_direct==KEY_DOWN) ::putimage(m_x,m_y,&m_imgDown);
if(m_direct==KEY_LEFT) ::putimage(m_x,m_y,&m_imgLeft);
if(m_direct==KEY_RIGHT) ::putimage(m_x,m_y,&m_imgRight);
::EndBatchDraw();//结束批量绘图
}
void movepeople(int direct,int step)
{
if(direct==KEY_UP) m_y-step>=0? m_y-=step:m_y=0; //三目运算符
if(direct==KEY_DOWN) m_y+step<=540? m_y+=step:m_y=540;//图片人物大小60
if(direct==KEY_LEFT) m_x-step>=0? m_x-=step:m_x=0;
if(direct==KEY_RIGHT) m_x+step<=540? m_x+=step:m_x=540;
m_direct=direct;
}
void runpeople()
{
showPeople();
while(1)
{
int key=_getch();//等待用户在控制台按下一个键,然后将按键对应的 ASCII 码或扩展键值存储在 key 变量中
movepeople(key,4);
showPeople();
}
}
};
```cpp
int main()
{
Cperson peo;
peo.runpeople();
return 0;
}
后续会继续更新,直到完成完整版超级玛丽项目