分类分类
关注+2009-11-06作者:
昨天yangxi推荐unbunt下的一个ascii动画, 有兴趣的可以apt-get install sl看下效果。
今天中午利用休息的时间写了类似的程序, 绝对比那个震撼, 有兴趣的朋友可以拿gcc编译下看看效果。
BTW: 程序员们赶快行动起来吧, Program Just For Fun!
/*
* Program Just For Fun
*
* by wzt http://hi.baidu.com/wzt85
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LENTH 7
#define WIDTH 155
#define SLEEP_TIME 30000
#define ENTER_NUM 20
char fun_ascii[LENTH][WIDTH] = {
" | ",
" _\\--__|_ ",
" II=======OOOOO[/ *02 ___| ",
" ____\\______|/-----.",
" /____________________|",
" \\@@@@@@@@@@@@@@@@@@@/ ",
" ~~~~~~~~~~~~~~~~~~~ "
};
int g_shoot_pos;
int g_shoot_pos_static;
void display_ascii(void);
void print_enter(void);
void move_ascii(void)
{
int i, j;
for (i = 0; i < LENTH; i++) {
for (j = 0; j < WIDTH; j++) {
if (fun_ascii[i][j] != ' ') {
fun_ascii[i][j - 1] = fun_ascii[i][j];
fun_ascii[i][j] = ' ';
}
}
}
}
void shoot_init(void)
{
int i, j;
for (j = 0; j < WIDTH; j++) {
if (fun_ascii[2][j] != ' ')
break;
}
--j;
g_shoot_pos_static = g_shoot_pos = j;
}
void shoot_begin(void)
{
fun_ascii[2][g_shoot_pos] = 'O';
system("clear");
print_enter();
display_ascii();
fun_ascii[2][g_shoot_pos] = ' ';
}
void shoot_ascii(void)
{
int i;
i = WIDTH / 2 - 1;
while (i > 0 && g_shoot_pos > 0) {
shoot_begin();
g_shoot_pos--;
usleep(SLEEP_TIME);
i--;
}
}
void do_shoot_ascii(void)
{
int i = 3;
shoot_init();
while (i > 0) {
shoot_ascii();
g_shoot_pos = g_shoot_pos_static;
i--;
}
}
void display_ascii(void)
{
int i, j;
for (i = 0; i < LENTH; i++) {
for (j = 0; j < WIDTH; j++)
printf("%c", fun_ascii[i][j]);
printf("\n");
}
}
void print_enter(void)
{
int i;
for (i = 0; i < ENTER_NUM; i++)
printf("\n");
}
int main(void)
{
int i = WIDTH;
while (i > 0) {
if (i == (WIDTH / 2)) {
do_shoot_ascii();
i--;
continue;
}
system("clear");
print_enter();
move_ascii();
display_ascii();
i--;
usleep(SLEEP_TIME);
}
return 0;
}
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论