Discuz! Board

 找回密码
 立即注册
查看: 663|回复: 0

2022/12/10

[复制链接]

15

主题

15

帖子

209

积分

中级会员

Rank: 3Rank: 3

积分
209
发表于 2022-12-10 11:42:33 | 显示全部楼层 |阅读模式
[C++] 纯文本查看 复制代码
# include<bits/stdc++.h>
#include <graphics.h> 
#include <math.h>
#include<time.h> //包含随机数,时间函数                 //包含EGE的头文件
using namespace std;

int pass=200;//通道宽度 
int wall_width=50; //宽度 
char ch;
int width =600;
int height =600;
int num;	
int count1,time_count=0;
struct ballon
{ 
    float x;//ball.x坐标
    float y;//ball.y坐标
    float vx;//ball.x向速度
    float g;
    float vy;//ball.y向速度
    int radius;//半径
}ball;
struct wallon
{
	float xl,yl;//左上角的坐标 
	float xr,yr;//右下角的坐标 
	float vx;//速度 	
}wall;

float ranx(int min,int max)//随机数产生min到max之间的随机数 
{
	return min+rand()%(max-min);
}

void start()//初始化 
{
    srand(time(0));//随机种子函数
    ball.x=400 ;//x坐标
    ball.y=300 ;//y坐标
	ball.vx=0;//x向速度
	ball.g=1;
	ball.vy=0;//y向速度
	ball.radius =5;//半径
	
	wall.xl=width-wall_width;
	wall.yl=0;
	wall.xr=width;
	wall.yr=ranx(100,300 );
	wall.vx=3;
	
    initgraph(width, height);        //初始化图形界面
    setcolor(RED);  //设置画图线为红色
    setbkcolor(WHITE);//设置背景颜色为白色
    setfillcolor(RED);//设置填充颜色为红色
    setfont(25,0,"幼圆");//(字体高度,字体宽度(为0即为自适应),字形)设置字体为25,幼圆字体
	setbkmode(TRANSPARENT); //设置文字背景色为透明(默认为有背景色)	
}

void update()//数据更新 
{
	//墙体更新 
	wall.xl-=wall.vx;
	wall.xr=wall.xl+wall_width;
	if(wall.xr<0)
	{
		wall.xl=width-wall_width;
		wall.yl=0;
		wall.xr=width;
		wall.yr=ranx(100,300 );
	}
	//球体更新  
	ball.vy+=ball.g;
 	ball.y+=ball.vy; 
	ball.x+=ball.vx;   
	if(ball.y>=height-ball.radius)
	{
		ball.y=height-ball.radius;
		ball.vy=-ball.vy;
	}
	if(ball.y<=ball.radius)
	{
		ball.vy=-ball.vy;
	}
	if(ball.x>=width-ball.radius)
	{	
		ball.x=width-ball.radius  ;
		
		ball.vx=-ball.vx;
	}
	if(ball.x<=ball.radius)
	{
		ball.vx=-ball.vx;
	}	   	

	if(kbhit())
    {
        ch = getch();
        if(ch==' ')
        {
            ball.vy = -10;
        } 
    }
    
	
}

void draw()
{
	
	fillellipse(ball.x, ball.y, ball.radius, ball.radius); //画一个实心圆	
    bar(wall.xl, wall.yl, wall.xr, wall.yr);
    bar(wall.xl, wall.yr+pass, wall.xr, height);
	//xyprintf(20,20,"病人数量:%d",count1);//格式化输出文字
	//xyprintf(20,60,"耗时:%d",time_count);//格式化输出文字
	Sleep(10);
	cleardevice();
}

int main()
{
	start();
    while(1)
    {
    	update();
		draw(); 
	
    }
     getch();
    return 0;
} 
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-30 12:24 , Processed in 0.059657 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.. 技术支持 by 巅峰设计

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