鱼C论坛

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

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

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

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

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

x
  1. #include <graphics.h>
  2. #include <conio.h>
  3. void paintCircle(int x, int y);
  4. const int R = 0; //圆的半径
  5. int main(){
  6.         initgraph(640, 480); //初始化图形环境
  7.         int x = 320, y = 240;  //圆心的初始坐标
  8.         int xSize = 1, ySize = 1;  //圆每次移动的方向和距离
  9.         while (1)
  10.         {
  11.                 BeginBatchDraw();
  12.                 cleardevice();
  13.        
  14.                 if ( y+100>=450) ySize =-ySize;
  15.           
  16.                 y += ySize;  
  17.                 if(y<=240)ySize=0;

  18.                 y += ySize;

  19.                 paintCircle(x, y);  //绘制
  20.                 FlushBatchDraw();
  21.         }
  22.         _getch();
  23.         closegraph();  //关闭图形环境
  24.         return 0;
  25. }

  26. void paintCircle(int x,int y){
  27.         cleardevice();  //清屏
  28.           
  29.         rectangle(x,y,x+100,y+100);  //绘制
  30.         Sleep(10);
  31. }
复制代码



我想让这个图形到最下面的时候停一段时间(y+100=450时图形停止一段时间),然后再往上运动,应该怎么加延时函数
最佳答案
2023-3-21 18:49:58
你可以在y+100>=450时为ySize赋值为0,并添加一个延时函数(例如Sleep)来达到停止一段时间的目的。然后,在延时结束后,再将ySize设置为负值,使图形向上运动。这里是修改后的代码:

  1. #include <graphics.h>
  2. #include <conio.h>
  3. void paintCircle(int x, int y);
  4. const int R = 0; //圆的半径
  5. int main(){
  6.     initgraph(640, 480); //初始化图形环境
  7.     int x = 320, y = 240;  //圆心的初始坐标
  8.     int xSize = 1, ySize = 1;  //圆每次移动的方向和距离
  9.     bool pause = false;

  10.     while (1)
  11.     {
  12.         BeginBatchDraw();
  13.         cleardevice();

  14.         if ( y+100>=450 && !pause) {
  15.             ySize = 0;
  16.             pause = true;
  17.             Sleep(1000); // 停止1000毫秒(1秒)
  18.             ySize = -1;
  19.         }

  20.         if (y <= 240) {
  21.             pause = false;
  22.             ySize = 1;
  23.         }

  24.         y += ySize;
  25.         paintCircle(x, y);  //绘制
  26.         FlushBatchDraw();
  27.     }
  28.     _getch();
  29.     closegraph();  //关闭图形环境
  30.     return 0;
  31. }

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

  34.     rectangle(x,y,x+100,y+100);  //绘制
  35.     Sleep(10);
  36. }
复制代码


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

使用道具 举报

发表于 2023-3-21 18:49:58 | 显示全部楼层    本楼为最佳答案   
你可以在y+100>=450时为ySize赋值为0,并添加一个延时函数(例如Sleep)来达到停止一段时间的目的。然后,在延时结束后,再将ySize设置为负值,使图形向上运动。这里是修改后的代码:

  1. #include <graphics.h>
  2. #include <conio.h>
  3. void paintCircle(int x, int y);
  4. const int R = 0; //圆的半径
  5. int main(){
  6.     initgraph(640, 480); //初始化图形环境
  7.     int x = 320, y = 240;  //圆心的初始坐标
  8.     int xSize = 1, ySize = 1;  //圆每次移动的方向和距离
  9.     bool pause = false;

  10.     while (1)
  11.     {
  12.         BeginBatchDraw();
  13.         cleardevice();

  14.         if ( y+100>=450 && !pause) {
  15.             ySize = 0;
  16.             pause = true;
  17.             Sleep(1000); // 停止1000毫秒(1秒)
  18.             ySize = -1;
  19.         }

  20.         if (y <= 240) {
  21.             pause = false;
  22.             ySize = 1;
  23.         }

  24.         y += ySize;
  25.         paintCircle(x, y);  //绘制
  26.         FlushBatchDraw();
  27.     }
  28.     _getch();
  29.     closegraph();  //关闭图形环境
  30.     return 0;
  31. }

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

  34.     rectangle(x,y,x+100,y+100);  //绘制
  35.     Sleep(10);
  36. }
复制代码


这个修改后的代码将使图形在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-4-28 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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