鱼C论坛

 找回密码
 立即注册
查看: 1749|回复: 3

[已解决]求助关于easyx库使用中遇到的问题

[复制链接]
发表于 2023-3-21 18:43:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <graphics.h>
#include <conio.h>
void paintCircle(int x, int y);
const int R = 0; //圆的半径
int main(){
        initgraph(640, 480); //初始化图形环境
        int x = 320, y = 240;  //圆心的初始坐标
        int xSize = 1, ySize = 1;  //圆每次移动的方向和距离
        while (1)
        {
                BeginBatchDraw();
                cleardevice();
        
                if ( y+100>=450) ySize =-ySize; 
          
                y += ySize;  
                if(y<=240)ySize=0;

                y += ySize;

                paintCircle(x, y);  //绘制
                FlushBatchDraw();
        }
        _getch();
        closegraph();  //关闭图形环境
        return 0;
}

void paintCircle(int x,int y){
        cleardevice();  //清屏
          
        rectangle(x,y,x+100,y+100);  //绘制
        Sleep(10);
}


我想让这个图形到最下面的时候停一段时间(y+100=450时图形停止一段时间),然后再往上运动,应该怎么加延时函数
最佳答案
2023-3-21 18:49:58
你可以在y+100>=450时为ySize赋值为0,并添加一个延时函数(例如Sleep)来达到停止一段时间的目的。然后,在延时结束后,再将ySize设置为负值,使图形向上运动。这里是修改后的代码:
#include <graphics.h>
#include <conio.h>
void paintCircle(int x, int y);
const int R = 0; //圆的半径
int main(){
    initgraph(640, 480); //初始化图形环境
    int x = 320, y = 240;  //圆心的初始坐标
    int xSize = 1, ySize = 1;  //圆每次移动的方向和距离
    bool pause = false;

    while (1)
    {
        BeginBatchDraw();
        cleardevice();

        if ( y+100>=450 && !pause) {
            ySize = 0;
            pause = true;
            Sleep(1000); // 停止1000毫秒(1秒)
            ySize = -1;
        }

        if (y <= 240) {
            pause = false;
            ySize = 1;
        }

        y += ySize;
        paintCircle(x, y);  //绘制
        FlushBatchDraw();
    }
    _getch();
    closegraph();  //关闭图形环境
    return 0;
}

void paintCircle(int x,int y){
    cleardevice();  //清屏

    rectangle(x,y,x+100,y+100);  //绘制
    Sleep(10);
}

这个修改后的代码将使图形在y+100=450时停止1秒,然后再往上运动。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-21 18:49:58 | 显示全部楼层    本楼为最佳答案   
你可以在y+100>=450时为ySize赋值为0,并添加一个延时函数(例如Sleep)来达到停止一段时间的目的。然后,在延时结束后,再将ySize设置为负值,使图形向上运动。这里是修改后的代码:
#include <graphics.h>
#include <conio.h>
void paintCircle(int x, int y);
const int R = 0; //圆的半径
int main(){
    initgraph(640, 480); //初始化图形环境
    int x = 320, y = 240;  //圆心的初始坐标
    int xSize = 1, ySize = 1;  //圆每次移动的方向和距离
    bool pause = false;

    while (1)
    {
        BeginBatchDraw();
        cleardevice();

        if ( y+100>=450 && !pause) {
            ySize = 0;
            pause = true;
            Sleep(1000); // 停止1000毫秒(1秒)
            ySize = -1;
        }

        if (y <= 240) {
            pause = false;
            ySize = 1;
        }

        y += ySize;
        paintCircle(x, y);  //绘制
        FlushBatchDraw();
    }
    _getch();
    closegraph();  //关闭图形环境
    return 0;
}

void paintCircle(int x,int y){
    cleardevice();  //清屏

    rectangle(x,y,x+100,y+100);  //绘制
    Sleep(10);
}

这个修改后的代码将使图形在y+100=450时停止1秒,然后再往上运动。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-21 18:56:42 | 显示全部楼层
isdkz 发表于 2023-3-21 18:49
你可以在y+100>=450时为ySize赋值为0,并添加一个延时函数(例如Sleep)来达到停止一段时间的目的。然后, ...

哇,谢谢,这个思路确实好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-3-2 18:20:45 | 显示全部楼层
一般是加sleep吧,当然也可能有更好的方法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-22 12:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表