c语言编写控制台聊天程序,如何让你的C语言编写的程序在控制台上产生动画效果...

可能大家也发现了,在我们使用C语言编写程序的时候,一般我们只能打印一个画面,那么,如何在不涉及ui的基础上,只用C语言在控制台上让你的代码动起来的,下面我将给大家介绍一个方法:

首先,在我讲代码实现之前, 我想先介绍一下原理,大家都知道动画片的原理,为什么能出现连续的动画呢?因为它在连续不断的播放画面,好了,那么基于这个,我们可以得出只要我们能够连续的让我们的打印函数不断的执行,那么我们就可以得到我们想要的效果.

明白了这些,肯定有好多人已经迫不及待的去尝试了,使用一个for循环或者while的一个循环开始不停的让打印函数调用,如果我没猜错的话,你肯定没有达到理想的效果,这是为什么呢?下面我们来分析一下.

对于现在的计算机来说,运行速度是非常快的,如果我们直接使用一个简单的循环,然后在循环里不停的执行打印函数,那么,计算机会飞速的进行运算执行,这个时间是非常短的,所以我们在控制台上得到的效果就会有一种卡顿的现象,也就是画面不流畅,那么如何解决这个问题呢?我们可以使用一个延时函数.

好了,延时函数,顾名思义,就是用来延长时间的,我们让电脑在执行这个函数的时候消耗一定的时间,这样我们就可以在两次打印之间进行延时,就可以很好的解决出现的卡顿现象.

函数如下:

void _delayTime(){

for(int i = 0;i < 300; i ++){

for(int j = 0;j < 1000;j++)

}

}

好了这个就是我们的延时函数了,很显然,我们套用了for循环,但是执行的是空语句,里面的参数我们可以根据我们需要的实际延时效果自行调整,很明显,这里,电脑执行了300*1000次的运算,这样会消耗一定的时间,大概有0.5s左右,这样的话我们把这个延时函数放在两次打印之间,那么我们就可以得到我们想要的效果

下面我给大家附上一个我自己写的小程序,实现的是让一个小球自己转动,大家可以把我的代码复制下来去运行一下,也可以自己敲一下,并且我希望大家能从这里延伸出一些其他好玩的程序出来,毕竟玩着学习更有乐趣.

#include

int x=1,y=1;

char tem=' ';

char road='*';

char snake='o';

int flag=1;

int o=1,k=1;

char map[6][10]={

{'*','*','*','*','*','*','*','*','*','*'},

{'*',' ',' ',' ',' ',' ',' ',' ',' ','*'},

{'*',' ',' ',' ',' ',' ',' ',' ',' ','*'},

{'*',' ',' ',' ',' ',' ',' ',' ',' ','*'},

{'*',' ',' ',' ',' ',' ',' ',' ',' ','*'},

{'*','*','*','*','*','*','*','*','*','*'}

};

void delay_Time(){

for(int i=0;i<200;i++){

for(int j=0;j<100000;j++);

}

}

void print_Map(char arr[6][10]){

for(int i=0;i<6;i++){

for(int j=0;j<10;j++){

printf("%c",arr[j]);

}

printf("\n");

}

}

void snake_Move(char arr[6][10],int x,int y){

while(flag){

void delay_Time();

x=o;

y=k;

if(x==1&&y+1!=9){

arr[o][k]=tem;

arr[o][++k]=snake;

delay_Time();

print_Map(map);}else if(x!=4&&y==8){

arr[o][k]=tem;

arr[++o][k]=snake;

delay_Time();

print_Map(map);

}else if (x==4&&y!=1){

arr[o][k]=tem;

arr[o][--k]=snake;

delay_Time();

print_Map(map);

}else if (y==1&&x!=1){

arr[o][k]=tem;

arr[--o][k]=snake;

delay_Time();

print_Map(map);

}

}

}

int main(int argc, const char * argv[]) {

snake_Move(map, x, y);

}

后面我还会给大家写一个使用这个来编写的一个小游戏,希望大家能继续支持!

made by Answer.Zhao

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值