Discuz! Board

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

2022.10.29

[复制链接]

15

主题

19

帖子

4118

积分

论坛元老

Rank: 8Rank: 8

积分
4118

墨海马 Lv:15
发表于 2022-10-29 16:27:24 | 显示全部楼层 |阅读模式
#include <graphics.h>  //包含EGE的头文件
#include<bits/stdc++.h>
using namespace std;
#include<time.h> //包含随机数,时间函数               
struct ballon
{
        float x;//ball[i].x坐标
    float y;//ball[i].y坐标
    float vx;//ball[i].x向速度
    float vy;//ball[i].y向速度
    int radius;//半径
    float g;
    int R_color;
    int G_color;
    int B_color;
}ball[10001];
float randx(int min,int max)
{
        float s=rand()%(max-min)+min;
        return s;
}
int main()
{
        int n;
        cout<<"输入球的个数1~10000:";
        cin>>n;
        srand(time(0));//随机种子函数  
    int width =800;
    int height =600;
    for(int i=0;i<n;i++)
    {
            ball[i].g=0;
                ball[i].x = 50+randx(ball[i].radius,width);
                ball[i].y = 30+randx(ball[i].radius,height);
                ball[i].vx = randx(-2,4);
                ball[i].vy = randx(-3,6);
                ball[i].radius = randx(12,20);
                ball[i].R_color = randx(10,255);
            ball[i].G_color = randx(10,255);
            ball[i].B_color = randx(10,255);
        }
    initgraph(width, height);               //初始化图形界面
    setcolor(RED);  //设置画图线为红色
    setbkcolor(WHITE);//设置背景颜色为白色
    setfillcolor(RED);//设置填充颜色为红色

    while(1)
    {   
                for(int i=0;i<n;i++)
                {
                       
                ball[i].vy+=ball[i].g;
                        ball[i].y=ball[i].y+ball[i].vy;
                        ball[i].vx+=ball[i].g;
                        ball[i].x+=ball[i].vx;
                if(ball[i].y>=height-ball[i].radius)
                {
                        ball[i].y=height-ball[i].radius;
                        ball[i].vy=-ball[i].vy;
                        }
                        if(ball[i].y<=ball[i].radius)
                {
                        ball[i].y=ball[i].radius;
                        ball[i].vy=-ball[i].vy;
                        }
                         if(ball[i].x>=width-ball[i].radius)
                {
                        ball[i].x=width-ball[i].radius;
                        ball[i].vx=-ball[i].vx;
                        }
                        if(ball[i].x<=ball[i].radius)
                {
                        ball[i].x=ball[i].radius;
                        ball[i].vx=-ball[i].vx;
                        }
                fillellipse(ball[i].x, ball[i].y, ball[i].radius, ball[i].radius); //画一个实心圆
                setfillcolor(EGERGB(ball[i].R_color, ball[i].G_color, ball[i].B_color));
                 }
                 Sleep(10);
        cleardevice();
    }

    return 0;
}

回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-5-31 12:32 , Processed in 0.053220 second(s), 26 queries .

Powered by Discuz! X3.4

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

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