c语言eaxyx屏保程序,【Easyx】模拟简易屏保程序(半径变化的圆)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

#include

#include

#include //EasyX已包含,不包含也行

using namespace std; int j(int r); //绝对值函数 int main(void)

{

int x,y,r,xm,ym,rm,rmin,xc,yc,rc,count,ms;

//以下想x至ms为赋值区域,所有与长度有关的常量单位都是取决于分辨率

//rmin,xc,yc,rc等常量可取负值外,其余量取非负整数,否则或多或少会影响程序运行

count=3; //0<=count<=3,设定初始方向(与xc、yc正负相关)与判定撞击边缘位置以及弹回方向的常量

x=500; //初始横坐标 rm<=x<=xm-r

y=300; //初始纵坐标 rm<=y<=ym-r

rm=100; //最大半径

rmin=60; //最小半径

xm=1366; //x最大值

ym=768; //y最大值

xc=8; //x变化率,为零时纵向

yc=2; //y变化率,为零时横向

rc=1; //半径r变化率

r=rm; //初始半径为最大半径

ms=30; //单位(毫秒),用来控制变化快慢

initgraph(xm,ym);

setcolor(GREEN);

for(int i=0;;i++)

{

if(count==0)

{

for(;y+j(r)<=ym&&x+j(r)<=xm&&x>=r&&y>=r;x+=xc,y+=yc,r-=rc) //向右下

{

cleardevice();

circle(x,y,r);

Sleep(ms);

if(r

r+=rc;

rc=-rc;

}

if(r>rm){

r+=rc;

rc=-rc;

}

}

if(ym-y>xm-x){count=3;x=xm-r;} //撞右壁,向左下

if(ym-y

if(ym-y==xm-x){count=2;x=xm-r;y=ym-r;} //撞右下角,向左上

} if(count==1)

{

for(;y+j(r)<=ym&&x+j(r)<=xm&&x>=r&&y>=r;x+=xc,y-=yc,r-=rc) //向右上

{

cleardevice();

circle(x,y,r);

Sleep(ms);

if(r

r+=rc;

rc=-rc;

}

if(r>rm){

r+=rc;

rc=-rc;

}

}

if(y>xm-x){count=2;x=xm-r;} //撞右壁,向左上

if(y

if(y==xm-x){count=3;y=r;x=xm-r;} //撞右上角,向左下

} if(count==2)

{

for(;y+j(r)<=ym&&x+j(r)<=xm&&x>=r&&y>=r;x-=xc,y-=yc,r-=rc) //向左上

{

cleardevice();

circle(x,y,r);

Sleep(ms);

if(r

r+=rc;

rc=-rc;

}

if(r>rm){

r+=rc;

rc=-rc;

}

}

if(y>x){count=1;x=r;} //撞左壁,向右上

if(y

if(y==x){count=0;x=r;y=r;} //撞左上角,向右下

} if(count==3)

{

for(;y+j(r)<=ym&&x+j(r)<=xm&&x>=r&&y>=r;x-=xc,y+=yc,r-=rc) //向左下

{

cleardevice();

circle(x,y,r);

Sleep(ms);

if(r

r+=rc;

rc=-rc;

}

if(r>rm){

r+=rc;

rc=-rc;

}

}

if(x>ym-y){count=2;y=ym-r;} //撞下壁,向左上

if(x

if(x==ym-y){count=1;x=r;y=ym-r;} //撞左下角,向右上

}

}

// getch(); //防止程序运行后因编程工具立即终止习惯加的语句

return 0;

} int j(int r) //绝对值函数,保证r>0

{

if(r>0)return r;

else return -r;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,无法回答关于C语言EasyX插入图片的问题。EasyX是一个基于C语言的图形库,主要用于Windows平台的图形绘制和游戏开发。它提供了一系列的绘图函数,可以用来绘制各种几何图形、文本、图片等。但是,EasyX并不支持直接插入图片,需要通过其他方式实现。如果您需要在EasyX中显示图片,可以使用以下两种方法之一: 1.使用EasyX提供的loadimage函数加载图片,并使用putimage函数将图片绘制到屏幕上。具体步骤如下: ```c #include <graphics.h> // 引入EasyX头文件 int main() { initgraph(640, 480); // 初始化图形窗口 IMAGE img; // 定义IMAGE对象 loadimage(&img, _T("test.jpg")); // 加载图片 putimage(0, 0, &img); // 绘制图片 getch(); // 等待用户按键 closegraph(); // 关闭图形窗口 return 0; } ``` 2.使用第三方库stb_image加载图片,并使用EasyX提供的putpixel函数将图片绘制到屏幕上。具体步骤如下: ```c #define STB_IMAGE_IMPLEMENTATION // 定义STB_IMAGE_IMPLEMENTATION宏 #include <graphics.h> // 引入EasyX头文件 #include "stb_image.h" // 引入stb_image头文件 int main() { initgraph(640, 480); // 初始化图形窗口 int width, height, channels; // 定义图片宽度、高度、通道数 unsigned char *data = stbi_load("test.jpg", &width, &height, &channels, 0); // 加载图片 for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { int r = data[(y * width + x) * channels]; // 获取像素点的红色通道值 int g = data[(y * width + x) * channels + 1]; // 获取像素点的绿色通道值 int b = data[(y * width + x) * channels + 2]; // 获取像素点的蓝色通道值 putpixel(x, y, RGB(r, g, b)); // 绘制像素点 } } stbi_image_free(data); // 释放图片内存 getch(); // 等待用户按键 closegraph(); // 关闭图形窗口 return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值