| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2455 人关注过本帖
标题:[转载]一个Turbo C图形程序,模拟电影Matrix片头的文字下落动画
只看楼主 加入收藏
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
结帖率:100%
收藏
 问题点数:0 回复次数:20 
[转载]一个Turbo C图形程序,模拟电影Matrix片头的文字下落动画

#include <stdio.h>
#include <graphics.h>
#include <stdlib.h>
#include <time.h>

#define FONT_HEIGHT 13
#define FONT_WIDTH 11
#define MAX_DELAY 10
#define MIN_DELAY 1
#define DELAY_TIME 5000

typedef struct StringObj_tag
{
int max_delay;
int cur_delay;
int head_x;
int head_y;
int length;
char head_char;
} StringObj;

int charsInX;
int charsInY;
StringObj* ptStrObj;

void InitMatrix(void);
void Matrix(void);
void EndMatrix(void);
void InitStringObj(StringObj* obj, int i);
void DrawStringObj(StringObj* obj);
void InitGraph(void);

int main()
{
InitMatrix();
Matrix();
EndMatrix();
return 0;
}

void InitMatrix(void)
{
int i;
InitGraph();

for (i = 0; i < charsInX; i++)
InitStringObj(&ptStrObj[i], i);
}

void Matrix(void)
{
int i;

while (!kbhit())
{
for (i = 0; i < charsInX; i++)
{
if ( ptStrObj[i].head_y > charsInY + ptStrObj[i].length)
InitStringObj(&ptStrObj[i], i);
else
DrawStringObj(&ptStrObj[i]);
}
delay(DELAY_TIME);
}
}

void EndMatrix(void)
{
closegraph();
free((void*)ptStrObj);
}

void InitGraph(void)
{
int graph_mode;
int graph_driver = DETECT;

registerbgidriver(EGAVGA_driver);
initgraph(&graph_driver, &graph_mode, "");

charsInX = getmaxx()/FONT_WIDTH;
charsInY = getmaxy()/FONT_HEIGHT;
ptStrObj = (StringObj*)malloc(sizeof(StringObj)*charsInX);
}

void DrawStringObj(StringObj* obj)
{
char chs[2] = {'\0', '\0'};
int rear_x = obj->head_x * FONT_WIDTH;
int rear_y = (obj->head_y - obj->length)*FONT_HEIGHT;
int color;

if (obj->cur_delay > 0)
{
obj->cur_delay--;
return ;
}

color = ( random(2) ? LIGHTGREEN : GREEN);
setcolor(color);
chs[0] = obj->head_char;
outtextxy(obj->head_x * FONT_WIDTH, obj->head_y * FONT_HEIGHT, chs);

obj->head_y += 1;
setcolor(WHITE);
obj->head_char = chs[0] = random(0x7e - 0x21) + 0x21;
outtextxy(obj->head_x * FONT_WIDTH, obj->head_y * FONT_HEIGHT, chs);

setfillstyle(EMPTY_FILL, BLACK);
bar(rear_x, rear_y, rear_x + FONT_WIDTH - 1, rear_y + FONT_HEIGHT - 1);

obj->cur_delay = obj->max_delay;
}

void InitStringObj(StringObj* obj, int i)
{
obj->max_delay = obj->cur_delay = random(MAX_DELAY-MIN_DELAY)+MIN_DELAY;
obj->head_x = i;
obj->head_y = 0;
obj->head_char = random(0x7e-0x21) + 0x21;
obj->length = random(charsInY-10)+3;
}

源码下载:

zxKMjnML.rar (17.02 KB) [转载]一个Turbo C图形程序,模拟电影Matrix片头的文字下落动画


搜索更多相关主题的帖子: Matrix Turbo 片头 图形 动画 
2007-10-13 18:51
奔跑的鸟
Rank: 1
等 级:新手上路
帖 子:391
专家分:0
注 册:2006-1-20
收藏
得分:0 
挺好玩的:)

简单的快乐着~
2007-10-13 19:12
维c
Rank: 1
等 级:新手上路
帖 子:202
专家分:0
注 册:2007-8-13
收藏
得分:0 
呵呵,不错。。

花开花落
不愁不惑
http://hi.baidu.com/vitaminic
2007-10-13 19:14
kingkong6358
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2007-10-11
收藏
得分:0 
自己好想是个黑客了

2007-10-15 00:29
鸿工作室
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-10-14
收藏
得分:0 
好像那些电影里黑客的场景...

2007-10-15 01:20
天人和一
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-10-11
收藏
得分:0 




用的什么环境啊??
在TurboC/c++
Error:Udefind symbol_EGAVGA_driver in module e:\tc.c
在VC++
fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory
Error executing cl.exe.

.exe文件也是黑屏.
为什么?难到我电脑不行吗???

2007-10-15 11:12
Estudy
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2007-8-31
收藏
得分:0 

可惜算法运用的是障眼法, 下落的文字是本来就预设好的背景, 运用的是颜色的遮罩效果来实现的矩阵下落
和电影里的随机的字符串的落下的效果还有一段差距啊


用程序说话
2007-10-15 13:50
kingkong6358
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2007-10-11
收藏
得分:0 
怎样把他弄成屏保啊?

2007-10-15 14:47
kingkong6358
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2007-10-11
收藏
得分:0 

我想把他设为屏保啊!!!有那个高手可以给个意见?


2007-10-15 17:39
青格儿
Rank: 4
等 级:贵宾
威 望:11
帖 子:698
专家分:20
注 册:2007-7-31
收藏
得分:0 
同问,我和6楼一样,用C-free测试也提示:'graphics.h': No such file or directory

是不是在VC和C-free里运行它,还要配置些什么?请楼主和各位高手指点下,谢谢!
2007-10-15 19:52
快速回复:[转载]一个Turbo C图形程序,模拟电影Matrix片头的文字下落动画
数据加载中...
 
   



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

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