| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2912 人关注过本帖
标题:万花筒程序
只看楼主 加入收藏
嘲风
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2016-12-22
结帖率:75%
收藏
 问题点数:0 回复次数:3 
万花筒程序
修改万花筒模拟程序,增加在窗口的中线上对称绘制四个小矩形的功能。同时让程序每次随机选择将四个小矩形画在窗口的对角线上还是画在中线上
#include<iostream>
#include "rect.h"     //ezWinLibrary的头文件
#include "uniform.h"  //ezWinLibrary的头文件
using namespace std;

const float WIN_SIZE = 12.0;
const int   MAX_SIZE = 3;

SimpleWindow W("KaleidoWindow", WIN_SIZE, WIN_SIZE);  //创建一个窗口

//产生随机的颜色。color是ezWin图形库中定义的表示颜色的枚举类型
color RandomColor()
{
    return (color) Uniform(0, MaxColors - 1);
}

//随机产生正方形与中心的距离
float RandomOffSet(int Range, float TrinketSize)  
{
    float OffSet = Uniform(0,Range * 10) / 10.0f;

    //正方形与中心的距离必须大于其边长的一半
    if (OffSet < TrinketSize / 2.0f)              
    {
       OffSet = TrinketSize / 2.0f;
    }
    return OffSet;
}

//随机设置正方形的边长
float RandomTrinketetSize( int MaxSize )           
{
    return Uniform(10, MaxSize * 10)/10.0f;
}
int Kaleidoscope()
{
    const float Center = WIN_SIZE / 2;                   //窗口中心
    const float Size   = RandomTrinketetSize(MAX_SIZE);  //设置正方形边长
    const color Color1 = RandomColor();                     //产生随机颜色
    const color Color2 = RandomColor();                     
    float OffSet = RandomOffSet(MAX_SIZE, Size);         //设置正方形与中心的距离

    //创建四个矩形
    RectangleShape Trinket1(W, Center + OffSet, Center + OffSet, Color1, Size, Size);
    RectangleShape Trinket2(W, Center - OffSet, Center + OffSet, Color2, Size, Size);
    RectangleShape Trinket3(W, Center - OffSet, Center - OffSet, Color1, Size, Size);
    RectangleShape Trinket4(W, Center + OffSet, Center - OffSet, Color2, Size, Size);
    //绘制四个矩形
    Trinket1.Draw();
    Trinket2.Draw();
    Trinket3.Draw();
    Trinket4.Draw();

    return 0;
}

int ApiMain()
{   
    W.Open();
    W.SetTimerCallback(Kaleidoscope);
    W.StartTimer(500);
    return 0;
}
搜索更多相关主题的帖子: include 万花筒 return 对角线 color 
2017-03-21 21:08
q540121170
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-2-4
收藏
得分:0 
楼主应该带上运行后的图片.
2017-03-22 09:17
jlsong
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-3-20
收藏
得分:0 
回复 楼主 嘲风
查看一下结果
2017-03-24 08:57
addtlm
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-10-17
收藏
得分:0 
回复 楼主 嘲风
#include"rect.h"
#include"uniform.h"
using namespace std;

const float WIN_SIZE = 12.0;
const int   MAX_SIZE = 3;

SimpleWindow W("KaleidoWindow", WIN_SIZE, WIN_SIZE);  //创建一个窗口

//产生随机的颜色
//color是ezWin图形库中定义的表示颜色的枚举类型
color RandomColor()
{
    return (color) Uniform(0, MaxColors - 1);
}

//随机产生正方形与中心的距离
float RandomOffSet(int Range, float TrinketSize)  
{
    float OffSet = Uniform(0,Range * 10) / 10.0f;

    //正方形与中心的距离必须大于其边长的一半
    if (OffSet < TrinketSize / 2.0f)              
    {
        OffSet = TrinketSize / 2.0f;
    }
    return OffSet;
}

//随机设置正方形的边长
float RandomTrinketetSize(int MaxSize)           
{
    return Uniform(10, MaxSize * 10)/10.0f;
}

int Kaleidoscope()
{
    const float Center = WIN_SIZE / 2;                   //窗口中心
    const float Size   = RandomTrinketetSize(MAX_SIZE);  //设置正方形边长
    const color Color1 = RandomColor();                     //产生一个随机颜色
    const color Color2 = RandomColor();                  //产生另一个随机颜色
    float OffSet = RandomOffSet(MAX_SIZE, Size);         //设置正方形与中心的距离

    //创建四个矩形
    RectangleShape Trinket1(W, Center , Center + OffSet, Color1, Size, Size);
    RectangleShape Trinket2(W, Center , Center - OffSet, Color1, Size, Size);
    RectangleShape Trinket3(W, Center - OffSet, Center, Color1, Size, Size);
    RectangleShape Trinket4(W, Center + OffSet, Center, Color1, Size, Size);

    //绘制四个矩形
    Trinket1.Draw();
    Trinket2.Draw();
    Trinket3.Draw();
    Trinket4.Draw();

    //改变小矩形的颜色和位置,再画一次
    Trinket1.SetColor(Color2);      
    Trinket2.SetColor(Color1);
    Trinket3.SetColor(Color2);
    Trinket4.SetColor(Color1);

    OffSet = RandomOffSet(MAX_SIZE, Size);

    Trinket1.SetPosition(Center , Center + OffSet);
    Trinket2.SetPosition(Center , Center - OffSet);
    Trinket3.SetPosition(Center - OffSet, Center );
    Trinket4.SetPosition(Center + OffSet, Center );

    Trinket1.Draw();
    Trinket2.Draw();
    Trinket3.Draw();
    Trinket4.Draw();

    return 0;
}

int ApiMain()
{   
    W.Open();
    W.SetTimerCallback(Kaleidoscope);
    W.StartTimer(500);
    return 0;
}
2018-04-08 16:55
快速回复:万花筒程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023446 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved