【精选】对随机粒子玩法的简单探索(C语言简单版本)

简介: 【精选】对随机粒子玩法的简单探索(C语言简单版本)

【精选】对随机粒子玩法的简单探索(C语言简单版本)


@TOC


程序展示

(1)
随机粒子

(2)

随机粒子改

注:手机用户视频打不开可以在主页中查看视频

一、项目环境

1.Visual Studio 2022
2.安装easyx图形库,可以调用头文件

include<easyx.h>


简单介绍一下easyx图形库

EasyX库是一个基于C语言的图形界面库,可以用于Windows操作系统下的图形界面应用程序开发。该库提供了一些易于使用的图形绘制函数和简单的事件处理功能,可以帮助开发者快速地创建各种图形应用程序,如游戏、图形编辑器等。
EasyX库提供了丰富的绘图功能,如直线、矩形、圆形、椭圆、多边形等基本形状的绘制,同时还支持图片、文字、音频等多种媒体资源的加载和处理。此外,EasyX库还支持鼠标、键盘等多种事件的处理,可以让用户与应用程序进行交互。
EasyX库的另一个特点是易于学习和使用。它提供了简单的API,使得初学者也可以轻松地入门,并且具有丰富的在线文档和示例程序,帮助开发者快速地学习和理解如何使用这个库。除此之外,EasyX库还可以和Visual Studio等常见的集成开发环境进行配合使用,使得开发工作更加高效。
总之,EasyX库是一款简单易用、功能强大的图形界面库,适用于初学者和有一定编程基础的开发者,可以用于快速开发各种图形应用程序。


Easyx图形库

点击此处跳转到Easyx官方下载


二、运行效果展示

运行展示
请添加图片描述
功能:随着鼠标移动粒子会跟随鼠标一起移动
请添加图片描述


三、项目介绍

一种对随机粒子玩法的探索,随着鼠标的移动粒子会跟随鼠标一起移动,采用七彩颜色的粒子画面十分的治愈,当然也可以改成点击鼠标左键粒子随之靠拢,更多玩法猿子们可以自行探索修改。


四、项目源代码分享

对随机粒子玩法的简单探索

#include<stdio.h>
#include<easyx.h>
#include<graphics.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include<iostream>
#include<math.h>
#include<time.h>
#define NUM_OF_BALLS 300
#define PI 3.14
typedef struct {
    int x;
    int y;
    int vx;
    int vy;
    COLORREF color;
}ball;
int main()
{
    srand(time(0));
    initgraph(1400, 800, EW_SHOWCONSOLE);

    int r = 10;
    ball* balls = (ball*)malloc(sizeof(ball) * NUM_OF_BALLS);
    if (balls == NULL)
    {
        return -1;
    }

    for (int i = 0; i < NUM_OF_BALLS; i++)
    {
        int m, n;
        m = 0 + r;
        n = 1400 - r;
        balls[i].x = rand() % (n - m + 1) + m;
        m = 0 + r;
        n = 800 - r;
        balls[i].y = rand() % (n - m + 1) + m;
        balls[i].color = HSVtoRGB((float)(rand() % 360), 0.8f, 0.9f);

        m = 3;
        n = 8;
        int v = rand() % (n - m + 1) + m;
        double theta;
        theta = rand() % 360;
        balls[i].vx = v * cos(theta * PI / 180);
        balls[i].vy = v * sin(theta * PI / 180);
    }

    BeginBatchDraw();
    while (1)
    {
        cleardevice();
        for (int i = 0; i < NUM_OF_BALLS; i++)
        {
            setfillcolor(balls[i].color);
            fillcircle(balls[i].x, balls[i].y, r);
        }

        FlushBatchDraw();

        Sleep(40);


        for (int i = 0; i < NUM_OF_BALLS; i++)
        {
            if (balls[i].y <= 0 - r || balls[i].y >= 800 + r)
            {
                balls[i].vy = -balls[i].vy;
            }
            if (balls[i].x >= 1400 - r || balls[i].x <= 0 + r)
            {
                balls[i].vx = -balls[i].vx;
            }
            balls[i].x += balls[i].vx;
            balls[i].y += balls[i].vy;
        }
        
        if (MouseHit())//判断是否有鼠标信息
        {
            MOUSEMSG msg = GetMouseMsg();//接收鼠标信息 
            for (int i = 0; i < NUM_OF_BALLS; i++)
            {
                if (msg.x < balls[i].x)
                {
                    balls[i].x = balls[i].x - 30;
                }
                if (msg.x > balls[i].x)
                {
                    balls[i].x += 30;
                }
                if (msg.y < balls[i].y)
                {
                    balls[i].y -= 30;
                }
                if (msg.y > balls[i].y)
                {
                    balls[i].y += 30;
                }
                if (msg.x == balls[i].x && msg.y == balls[i].y)
                {
                    break;
                }
            }
    
            printf("坐标为(%d,%d)\n", msg.x, msg.y);
            switch (msg.uMsg)
            {
                case WM_LBUTTONDOWN:
                    //NO的区域
                    if (msg.x > 0 && msg.x < 1400 && msg.y>0 && msg.y < 800)
                    {
                        printf("坐标为(%d,%d)无所谓,我会出手!\n", msg.x, msg.y);
                        
                    }
                break;
            }
        }
    }
    EndBatchDraw();
    closegraph();
    return 0;
}


总结与思考

对于随机粒子的探索还有很多更好的作品,本章并未写的更深,适合初学者研究修改🤭
相关文章
|
1月前
|
编译器 C语言
C语言习题----不同版本的差别
C语言习题----不同版本的差别
12 0
|
6月前
|
C语言 数据安全/隐私保护
c语言:通讯录管理系统(文件版本)
c语言:通讯录管理系统(文件版本)
49 0
|
7月前
|
Linux C语言
C语言实现简易Linux终端版本聊天室
C语言实现简易Linux终端版本聊天室
101 0
|
4月前
|
存储 定位技术 API
贪吃蛇-c语言版本
贪吃蛇-c语言版本
|
4月前
|
存储 文件存储 C语言
文件操作函数---C语言版本
数据存放在内存中:程序退出、掉电 =》数据丢失 数据存放在硬盘中:即存储在文件中,即使程序退出、掉电 =》数据不会丢失
|
4月前
|
C语言
C语言 14 模拟计算器 版本更迭
C语言 14 模拟计算器 版本更迭
27 0
|
4月前
|
C语言
C语言实现三子棋,可拓展为n子棋的版本
C语言实现三子棋,可拓展为n子棋的版本
|
4月前
|
存储 算法 C语言
【数据结构】深入浅出理解快速排序背后的原理 以及 版本优化【万字详解】(C语言实现)
【数据结构】深入浅出理解快速排序背后的原理 以及 版本优化【万字详解】(C语言实现)
60 0
|
5月前
|
C语言
【C语言课程设计】通讯录(3.0版本)
【C语言课程设计】通讯录(3.0版本)
57 0
|
5月前
|
C语言
【C语言课程设计】通讯录(2.0版本)
【C语言课程设计】通讯录(2.0版本)
30 0