求助关于easyx库使用中遇到的问题
#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时图形停止一段时间),然后再往上运动,应该怎么加延时函数 你可以在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秒,然后再往上运动。 isdkz 发表于 2023-3-21 18:49
你可以在y+100>=450时为ySize赋值为0,并添加一个延时函数(例如Sleep)来达到停止一段时间的目的。然后, ...
哇,谢谢,这个思路确实好 一般是加sleep吧,当然也可能有更好的方法。
页:
[1]