- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
引言
1.文档定义
这篇文档描述的是这样的一个程序:运用Easyx图形库,把输出的图形界面用矩形块填满,要求这些矩形块按照一定时间周期(时间间隔不做强制要求),随机(位置,颜色)填充,直到填满。
2.编写目的
将这个小程序做成一个具有一定规范的例子,让更多的同学熟悉Easyx的相关操作。
3.编写背景
IT培优项目C语言图像小组成员,从题目提出至今,通过深刻地讨论和交流,形成了以下文档。
可行性分析
1.时间可行性
有时候想为这样一个如此芊瘦的程序写一个说明书有点小题大做了。因为编写这样一个程序根本占用不了你多少时间,也就一个小时左右,包括前期的分析和写代码。所以看的时候直接把这些跳过吧,如果你只对代码感兴趣的话。
2.技术可行性
Easyx:
EasyX 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图形和游戏编程。
Visual C++6.0:
这个学习c语言的基本都会哈,说一句,win7可以用哈,就不废话了。
需求分析
1.实现目标
将135中颜色9*15排列(不应该这么快把结果拿出来,但是违例一次吧)
2.功能需求
颜色需求:
程序中的颜色来自一个名为rgb.txt的文档中,文档中的每一行都是记录了一个颜色的RGB值,每次都读取一行没有被读取的行,取出RGB值进行色块的填充。
算法需求:
这个程序主要编写两个算法,一个是产生不重复的随机数,另一个是根据产生的随机数在特定的位置绘制矩形。
总体设计
详细设计与实现
实现代码:
#include stdio.h
#include stdlib.h
#include string.h
#include graphics.h
#include windows.h
#include conio.h
#include time.h
int function(int arry[136], int n, int m);
int arryrgb[136] = {0};
int arry[136] = {0};
//将一个数字字符转换成对应数字
int CharToint(char a)
{
return a - 0;
}
//将arry数组的前i位转换成一个数值
int Char_To_int(int i, char arry[3])
{
int temp;
int result = 0;
int k=1;
for(int j = i; j 0; j-- )
{
temp = CharToint(arry[j-1]);
result += (temp*k);
k=k*10;
}
return result;
}
//将一串形如255,244,213的这样一串字符串,提取出三个整数
//作为RGB值
int ArryToRGB(char RGB[20], int values[3])
{
char store[3];
int i = 0;
for(int j = 0; j 3; j++)
{
int k = 0;
while(1)
{
if( RGB[i]0 || RGB[i]9)
{
values[ j] = Char_To_int(k,store);
i++;
break;
}
store[k] = RGB[i];
k++;
i++;
}
}
return 0;
}
//从文本中获取形如这样的(255,244,213)的一串字符串
int getVALUES(int values[3])
{
FILE *fp = fopen(RGB.txt,r);
char tBuf[20];
srand((unsigned) time(NULL));
int n = (1 + rand()%135);
n = function( arryrgb ,n, 135);
int k= 0;
while(fgets(tBuf,100,fp) != NULL)
{
k++;
if( k == n)
{
ArryToRGB(tBuf , values);
}
}
fclose(fp);
return 0;
}
//对由随机数发生器产生的数二次处理,确保输出没有重复的
int function(int arry[135],int n, int m)
{
if(arry[n] == 0)
{
arry[n] = n;
return n;
}
else
{
if(n == m)
{
n = 1;
function(arry, n, m);
}
else function(arry,
文档评论(0)