// 程序名称:变幻线
// 编译环境:VC6 + EasyX v20100825
// 编 写 者:zh@easyx.cn
// 编写日期:2010-11-25
//
#include <graphics.h>
#include <conio.h>
#include <time.h>
#define WIDTH 640
#define HEIGHT 480
#define MAXSTEP 9
// 节点(多个连续的节点环,组成一个顶点)
struct POINTNODE
{
POINT pos; // 位置
POINTNODE* next; // 指向下一个节点的指针
};
// 顶点(四个顶点,组成一个多边形)
class VERTEX
{
public:
POINTNODE* m_head; // 头结点的指针
POINT m_step; // 移动步长
// 构造函数
VERTEX()
{
m_head = NULL;
}
// 析构函数
~VERTEX()
{
if (m_head != NULL)
delete[] m_head;
}
// 初始化环链
void Init(int count)
{
// 初始化前进方向
m_step.x = ((rand() % 2) * 2 - 1) * (rand() % MAXSTEP + 1);
m_step.y = ((rand() % 2) * 2 - 1) * (rand() % MAXSTEP + 1);
// 初始化节点环
m_head = new POINTNODE[count];
m_head[0].pos.x = rand() % WIDTH;
m_head[0].pos.y = rand() % HEIGHT;
m_head[0].next = &m_head[count - 1];
for(int i=1; i<=count; i++)
{
m_head[i].pos.x = m_head[i-1].pos.x - m_step.x;
m_head[i].pos.y = m_head[i-1].pos.y - m_step.y;
m_head[i].next = &m_head[i-1];