资源简介
graphics.h的头文件,C++编写的模拟流体运动
代码片段和文件信息
///////////////////////////////////////////////////
// 程序名称:流体(Liquid)
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20120404(beta)
// 原 作 品:http://spielzeugz.de/html5/liquid-particles.html (HTML5)
// 移植作者:krissi
// 最后修改:2012-4-5
//
#include
#include
#include
#define WIDTH 1024 // 屏幕宽
#define HEIGHT 576 // 屏幕高
#define NUM_MOVERS 600 // 小球数量
#define FRICTION 0.96f // 摩擦力
// 定义小球结构
struct Mover
{
COLORREF color; // 颜色
float x y; // 坐标
float vX vY; // 速度
};
// 定义全局变量
Mover movers[NUM_MOVERS]; // 小球数组
int mouseX mouseY; // 当前鼠标坐标
int mouseVX mouseVY; // 鼠标速度
int prevMouseX prevMouseY; // 上次鼠标坐标
bool isMouseDown; // 鼠标左键是否按下
DWORD* pBuffer; // 显存指针
// 初始化
void init()
{
// 初始化小球数组
for (int i = 0; i < NUM_MOVERS; i++)
{
movers[i].color = RGB(rand() % 256 rand() % 256 rand() % 256);
//坐标
movers[i].x = WIDTH * 0.5;
movers[i].y = HEIGHT * 0.5;
//速度
movers[i].vX = float(cos(float(i))) * (rand() % 34);
movers[i].vY = float(sin(float(i))) * (rand() % 34);
}
// 初始化鼠标变量,位于屏幕中央
mouseX = prevMouseX = WIDTH / 2;
mouseY = prevMouseY = HEIGHT / 2;
// 设置随机种子
srand((unsigned int)time(NULL));
// 获取显存指针
pBuffer = GetImageBuffer(NULL);
}
// 全屏变暗 50%
void darken()
{
for(int i = WIDTH * HEIGHT - 1; i >= 0; i--)
if (pBuffer[i] != 0)
pBuffer[i] = RGB(GetRValue(pBuffer[i]) >> 1 GetGValue(pBuffer[i]) >> 1 GetBValue(pBuffer[i]) >> 1);
}
// 绝对延时
void delay(DWORD ms)
{
static DWORD oldtime = GetTickCount();
while(GetTickCount() - oldtime < ms)
Sleep(1);
oldtime = GetTickCount();
}
// 绘制动画(一帧)
void run()
{
darken(); // 全屏变暗
mouseVX = mouseX - prevMouseX;
mouseVY = mouseY - prevMouseY;
prevMouseX = mouseX;
prevMouseY = mouseY;
float toDist = WIDTH * 0.86f;
float stirDist = WIDTH * 0.125f;
float blowDist = WIDTH * 0.5f;
for(int i = 0; i < NUM_MOVERS; i++)
{
float x = movers[i].x;
float y = movers[i].y;
float vX = movers[
- 上一篇:禁忌搜索算法30城市TSP问题C++源代码
- 下一篇:c++编写的十字路口交通灯程序
相关资源
- c++编写的十字路口交通灯程序
- 禁忌搜索算法30城市TSP问题C++源代码
- 火烧连营C++版本
- C语言c++游戏源代码大全
- 数据结构与程序设计C++语言描述(中
- C++版计算器带括号dos版本
- C++ Primer 第五版 中文版+英文版+习题集
- MFC多人聊天室
- 编译原理 LR分析器 c++代码
- C++ primer 第三版习题答案
- C++实现AES、DES加密算法含MFC界面
- C++课程设计 扑克牌游戏内含2程序
- VC图像处理-用Canny算子提取边缘
- 3DES加密算法C++实现
- vim配置文件及其插件大全配置好的I
- C++绘制漂亮仪表盘
- c++ test9.5破解工具
- C/C++视频教程
- 图书管理系统.cpp
- c++P2P视频技术源码(VC++)
- VC++开发IE ActiveX控件
- 汉字转拼音 自适应多音字处理 姓名自
- c++_关于公路收费的问题
- c++ 源码通过dll启动应用程序exe
- Dev-C++ V5.7.1中文版(32位64;位)_C++ 开
- C++ log4cplus Demo
- VC++6.0 简体中文版 msdn
- Microsoft Visual C++ 14.0.zip
- VC++2010(VC++最新版!)
- 使用socket套接字发送udp数据包
评论
共有 条评论