下面是运行效果图:
首先是安装Visual Studio 2022
Visual Studio 2022 IDE - 适用于软件开发人员的编程工具
打开上面的网址,选择下载社区版
下载好后运行,进来以后,如果是初次安装需要下载安装,我的是原来就有的所以会显示更新,如果原来就有的请点击修改按钮,选择配置下载并安装好
一般的c/c++就选下面这两个就行,其它的如果你需要自己选上就行
可以在安装位置选择缓存的的位置和安装的位置,建议修改上面两个即可,其他地方默认即可,选择好以后就可以下载安装了,可能需要的时间有点长(选的越多时间越长哦),耐心等待即可。
安装EasyX图形库
上面的网址是在线文档地址,不懂的函数可以自己去查
点击左上角跳转,直接下载即可
下载好了运行,点下一步,然后安装VC++2022版的就可以了,会检测你是否安装过,存在的就不用安装了,文档有需要的可以安装上,完成后直接关闭即可
进入Visual Studio 2022,然后创建新项目
创建空项目
改项目名和项目位置,点击创建
进来以后什么都没有,如下
点击源文件右键->添加->新建项
选择c++源文件(.cpp)创建
源文件夹下出现了c++源文件(这里使用的是c语言,所以为了兼容问题可以在最前面加上#define _CRT_SECURE_NO_WARNINGS 1,如果不加这一行当,例如C语言中的输入为scanf()函数,但在这里你要用scanf_s()才行,如果要永久解决这个问题,就是你每次创建源文件都自动给你添加这一行,不需要你手动添加,请看下面)
如果不需要请忽略此步骤
在桌面找到Visual Studio 2022右键,然后点击打开文件所在位置
也可手动找到你的安装目录根据下面的路径进去
再根据下面的路径点进去,我们需要的就是newc++file.cpp文件
如果没有newc++file.cpp文件就自己创建一个,注意是.cpp格式的,请开启显示文件后缀选项,Win11如下操作
右键此文件然后用记事本打开,将刚才的那条宏定义给复制进去保存即可,如果是无法保存或已经存在了无法修改,请在桌面或其他地方建同样的文件输入同样的内容,复制进去就行,原来存在的选择替换原文件
我们继续刚才的步骤
将代码复制进去,点击本地Windows调试器运行
效果如下,按空格键结束程序
源码如下:
标签:setfillcolor,eyes,ball,C语言,源文件,源码,2022,line,96 From: https://blog.csdn.net/weizhigongzi/article/details/144325635#define _CRT_SECURE_NO_WARNINGS 1
// 哆啦A梦
// 编译环境:Visual Studio 2022,EasyX 2022
#include <graphics.h>
#include <conio.h>
#include<math.h>
#include<time.h>
#define PI acos(-1.0)
double th = PI / 180;
// 心形气球
void heart(int x0, int y0, int size, int z, COLORREF C)
{
double m, n, x, y;
double i;
// 气球连接线
line(-140, 80, z, -140);
for (i = 0; i <= 2 * size; i = i + 0.01)
{
// 产生极坐标点
m = i;
n = -size * (((sin(i) * sqrt(fabs(cos(i)))) / (sin(i) + 1.4142)) - 2 * sin(i) + 2);
// 转换为笛卡尔坐标
x = n * cos(m) + x0;
y = n * sin(m) + y0;
setfillcolor(C);
solidcircle((int)x, (int)y, 2);
}
}//眼球
void eyeball(float x1, float x2)
{
setfillcolor(BLACK);
// 右眼球
solidcircle(x1, -116, 10);
// 左眼球
solidcircle(x2, -116, 10);}
//眼球动画
void eyeact(float* eyes)
{
if (*eyes <= 60)
{
eyeball(-16, 16);
*eyes += 0.5;
}
else if (*eyes > 60 && *eyes <= 90)
{
eyeball(-38, 16);
*eyes += 0.5;
}
else if (*eyes > 90 && *eyes <= 120)
{
eyeball(-16, 38);
*eyes += 0.5;
}
else if (*eyes > 120 && *eyes <= 150)
{
*eyes = 0;
}
}
//气球动画
void balls(float* ball)
{
if (*ball <= 60)
{
heart(-140, -250, 30, -140, LIGHTRED);
*ball += 2;
}
else if (*ball > 60 && *ball <= 90)
{
heart(-170, -250, 30, -172, LIGHTRED);
*ball += 2;
}
else if (*ball > 90 && *ball <= 120)
{
heart(-200, -250, 30, -202, LIGHTRED);
*ball += 2;
}
else if (*ball > 120 && *ball <= 150)
{
heart(-170, -250, 30, -172, LIGHTRED);
*ball += 2;
}
else if (*ball > 150 && *ball <= 180)
{
*ball = 0;
}
}// 主函数
int main()
{// 创建大小为 800 * 600 的绘图窗口
initgraph(800, 600);
//设置原点 (0, 0) 为屏幕中央(Y轴默认向下为正)
setorigin(400, 300);float eyes = 0;
float ball = 0;
BeginBatchDraw();
while (1)
{
// 使用白色填充背景
setbkcolor(WHITE);
cleardevice();// 画脸
// 头部
setfillcolor(LIGHTBLUE);
setlinecolor(BLACK);
fillroundrect(-135, -206, 135, 54, 248, 248);// 脸部
setfillcolor(WHITE);
fillellipse(-115, -144, 115, 46);// 右眼
fillroundrect(-63, -169, 0, -95, 56, 56);
// 左眼
fillroundrect(0, -169, 63, -95, 56, 56);//加载眼球动画
eyeact(&eyes);// 画鼻子
setfillcolor(RGB(201, 62, 0));
fillcircle(0, -92, 15);// 画人中
line(0, -77, 0, -4);
// 嘴部
arc(-108, -220, 108, -4, PI * 5 / 4, PI * 7 / 4);// 左右各三根胡子
//左
line(-42, -73, -90, -91);
line(-41, -65, -92, -65);
line(-42, -57, -90, -39);
//右
line(41, -65, 92, -65);
line(42, -73, 90, -91);
line(42, -57, 90, -39);// 身体部位
// 手臂上线条
line(-81, 32, -138, 72);
line(81, 32, 138, 72);
// 手臂下线条
line(-96, 96, -116, 110);
line(96, 96, 116, 110);// 腿外侧
line(-96, 85, -96, 178);
line(96, 85, 96, 178);
// 腿内侧
arc(-10, 168, 10, 188, 0, PI);// 手
setfillcolor(WHITE);
fillcircle(-140, 99, 27);
fillcircle(140, 99, 27);
// 脚
fillroundrect(-2, 178, -112, 205, 24, 24);
fillroundrect(2, 178, 112, 205, 24, 24);// 身体填充为蓝色
setfillcolor(LIGHTBLUE);
floodfill(0, 100, BLACK);// 肚子
setfillcolor(WHITE);
fillcircle(0, 81, 75);
// 用白色矩形擦掉多余的肚子
solidrectangle(-60, 4, 60, 24);
// 口袋
pie(-58, 23, 58, 139, PI, 0);// 画铃铛
// 绳子
setfillcolor(RGB(169, 38, 0));
fillroundrect(-100, 23, 100, 42, 12, 12);
// 铃铛外形
setfillcolor(RGB(245, 237, 38));
fillcircle(0, 49, 19);
// 铃铛上的洞
setfillcolor(BLACK);
solidellipse(-4, 50, 4, 57);
setlinestyle(PS_SOLID, 3);
line(0, 57, 0, 68);
// 铃铛上的纹路
setlinestyle(PS_SOLID, 1);
line(-16, 40, 16, 40);
line(-18, 44, 18, 44);// 气球
balls(&ball);
FlushBatchDraw();
cleardevice();
if (GetAsyncKeyState(VK_SPACE) & 0x8000) {
// 空格键被按下则退出
closegraph();
return 0;
}
}
EndBatchDraw();
closegraph();
return 0;}