当前位置:首页 » 编程语言 » c语言小动画

c语言小动画

发布时间: 2022-06-17 01:09:12

❶ 同学,怎么用c语言制作简单的动画啊

因为C的图形处理功能太一般,不便于创作大型动画。制作动画用flash。

flash制作动画:

  1. 打开Flash,点击【文件】→【新建】,在打开的“新建”窗口中选择“Flash文件(ActiveScript 3.0)“,然后点击”确定“创建空白文档。

  2. 在图层1 的第一帧,把库中的“Result0”拖动到场景中。

  3. 点击“时间轴”上的“新建图层”按钮,创建图层2,然后在图层2的第5帧处,点击【插入】→【关键帧】,把库中的“Result1”拖动到场景中。

  4. 利用同样的原理,将”Result2“、 ”Result3“和”Result4“分别到图层3、图层4和图层5中,对应的帧分别为10、15和20处。

  5. 最后调整各个图层图像的延续时间。至此,运动的小人影片剪辑制作完成。

  6. 切换至主场景中,使主场景处于活动状态,点击”属性“面板中的”大小“按钮,将场景的大小设置为”800*300“,同时将背景色设置为”黑色“点击”确定“按钮。

  7. 从库中将”运动的小人“影片剪辑拖动到场景左边外边。

  8. 然后在”时间轴“第30帧处,点击【插入】→【时间轴】→【关键帧】,在30帧处插入关键帧,然后将小人从场景的左侧外面拖动到场景右侧外面。至此,整个动画设置完成。

  9. 在1到30帧之间鼠标右击,选择”创建补间动画“。

  10. 最后按下键盘组合键”CTRL+Enter“进行测试。如果感觉小人运动不规律,可适当将1至30帧的距离调整的稍微大一些,直到满意为止。

❷ C语言课程设计…小车动画

学动画,选行业龙头培训——王氏教育。

王氏教育是一所有着20年历史的行业知名动画教育品牌,至今在全国13个一二线城市都拥有直营校区。想知道王氏教育实体培训有多强,去校区现场考察下就知道了,如果暂时抽不出时间,也可以先进官网跟在线老师详细了解:

点击:【王氏教育全国实体校区课程-在线试听】 http://www.huixueba.net/school/donghua/?zdhhr-2y1r-111836441

王氏教育较同类培训机构的优势:无论是创始人还是管理层都是动画专业的专家,了解整个产业,需求,就业,无缝深入到市场,做到投资型教育机构所不能企及的细致入微。王氏教育的课程研发也一直是行业争相模仿的对象,每个专业都由一线公司的项目总监参与研发和用人对接,学员无缝输送对应企业。学员遍布全国各大动画公司。

而在教学辅助研发上一直也是无出其右的存在,多年来拥有着巨大口碑的教学辅助产品包括:绘学霸APP:苹果商店应用市场均可搜索【绘学霸】下载,里面的动画视频教程多达8000多套,涵盖了所有的动画类型【点击进入】完整入门到精通视频教程列表: http://www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=310&zdhhr-2022n2y1r-111836441

❸ 求会c语言编程的大神们帮忙编写一个用c语言制作的小动画,用TC2.0就可以实现的。要求不要从网上抄

#include"user-def.H"//引入自定义头文件
voidmain()
{
inti;//用户循环
printf("简单动画演示程序 ");
for(i=0;i<5;i++)
display_picture();//打印动画效果
printf(" Test ");
system("pause");//暂停
</FONT>}以上就是主文件内容,是不是觉得很简单呢?下面是自定义头文件user_def.h/*user_def.h*/#ifndef_user_def_H//用户自定义头文件user-defined
#define_user_def_H#include<windows.h>//支持Sleep函数
#include<stdio.h>
#include<time.h>//用于随机函数初始化time()voidcolor_back()//设置文本字符的颜色
{
inti;
srand((unsigned)time(NULL));//初始化时钟
i=rand()%15;//随机一个0到14的整数
switch(i)
{
case0:system("color07");break;
case1:system("color08");break;
case2:system("color09");break;
case3:system("color0A");break;
case4:system("color0B");break;
case5:system("color0C");break;
case6:system("color0D");break;
case7:system("color0E");break;
case8:system("color0F");break;
case9:system("color01");break;
case10:system("color02");break;
case11:system("color03");break;
case12:system("color04");break;
case13:system("color05");break;
case14:system("color06");break;
}
}voiddisplay_picture()//显示动画程序
{
system("cls");
printf(" ");
color_back();//随机一个文本颜色
Sleep(300);//让系统暂停300毫秒,1秒=1000毫秒
printf(" JRRRRRRL ");
color_back();
Sleep(300);
printf(" JRRL ");
color_back();
Sleep(300);
printf(" JRRL ");
color_back();
Sleep(300);
printf(" JRRL ");
color_back();
Sleep(300);
printf(" JRRRRRRL ");
color_back();
Sleep(300);
printf(" JRRL ");
color_back();
Sleep(300);
printf(" JJRRL ");
color_back();
Sleep(300);
printf(" JJRRL ");
color_back();
Sleep(300);
printf(" JJJJRRLLLLLLLL ");
}

❹ 怎么用C语言编程实现一个简单的动画

1.可以考虑用Turbo C的绘图函数(附加graphic.h库)或者用opengl+glut等来实现。2.前者一般就是纯粹的画点画线。网上也能找到教程。3.主要说一下后者。可以导入图片,并且二维、三维动画都可以做,甚至是用来开发游戏。后者可以用vc6.0或者vs2005来开发。跨平台。参考教程: http://www.owlei.com/DancingWind/看你的描述要做比较偏数学的东西,那你自己得弄明白如何去实现绘制算法。要实现的动画本身而搭的基本框架不会很复杂的,可能100行代码都不用。4.另外还有opencv、GDI之类的可能更适合二维图像处理库,但我自己不是很了解了,你也可以查一查用哪种绘图库比较适合你。

❺ 如何利用C语言实现动画

可以用windows.h的头文件

然后里面system("cls");
清除屏幕重新从第一行开始画
还有tc环境画图下有graphics.h头文件有画图的函数,但是vc没有,如果想在控制台
下画图,给你一段代码,直接添加你用的api函数就行了

#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <tchar.h>
extern "C"

❻ 用C语言怎么做动画

可以用windows.h的头文件

然后里面system("cls");
清除屏幕重新从第一行开始画
还有tc环境画图下有graphics.h头文件有画图的函数,但是vc没有,如果想在控制台
下画图,给你一段代码,直接添加你用的api函数就行了

#include <windows.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <tchar.h>
extern "C"
{
WINBASEAPI HWND WINAPI GetConsoleWindow();
}
int main(int argc, char *argv[]) //主线程运行结束,辅助线程也结束。
{
HWND hwnd;
HDC hdc;
printf("There are some words in console window!\n在控制台窗口中绘图!\n");
system("Color 3D");
hwnd = GetConsoleWindow();
hdc = GetDC(hwnd);
MoveToEx(hdc,100,100,NULL);

LineTo(hdc, 200, 300);
Rectangle(hdc, 10, 30, 300, 50);
TextOut(hdc, 10, 10, _TEXT("Hello World\nYesNoConcel!"), 20);
ReleaseDC(hwnd, hdc);
getch();
printf("After drawing!\n");
return 0;
}
这个好像是只有用c++编译器,具体我也忘了,如果.c后缀不行就用cpp后缀,基本语法c和c+差不多

❼ c语言动画100分

1.运动的小车动画程序:(tc2.0下运行良好)
#define PI 3.1415926
#define step 10
#define R 10
#include<time.h>
#include<stdlib.h>
#include<graphics.h>
#include<conio.h>
#include<dos.h>
main()
{
int gdriver=DETECT,gmode;
static int startx=5;
static int starty=100;
int maxx,l=1,n=1;
double dalta=20,angle;
int size;
void *image;
initgraph(&gdriver,&gmode,"");
cleardevice();
setbkcolor(BLUE);
size=imagesize(startx,starty,startx+60,starty+60);
image=(unsigned char *)malloc(size);
maxx=getmaxx();
while(!kbhit())
{
if(l==1)
{
n++;
angle=-1*(n*step)/PI*180/R;
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n>(maxx-70)/step)
l=0;
}
if(l==0)
{
--n;
angle=-1*(n*step)/R/PI*180;
if((int)(-1*angle)%360<dalta)
angle-=dalta;
if(n==1)l=1;
}
rectangle(startx+n*step,starty,startx+n*step+60,starty+40);
pieslice(startx+n*step+15,starty+50,angle,angle-dalta,10);
pieslice(startx+n*step+45,starty+50,angle,angle-dalta,10);
setcolor(GREEN);
setfillstyle(SOLID_FILL,GREEN);
circle(startx+n*step+15,starty+50,10);
circle(startx+n*step+45,starty+50,10);
circle(startx+n*step+15,starty+50,3);
circle(startx+n*step+45,starty+50,3);
getimage(startx+n*step,starty,startx+n*step+60,starty+60,image);
delay(10000);
putimage(startx+n*step,starty,image,XOR_PUT);
}
free(image);
closegraph();
}

2.彩色轨道小车动画程序:(tc2.0下运行良好)
# include "graphics.h"
# include "conio.h"
# include "stdlib.h"
# define PATH "d:\\tc"
main()
{ int i,j,imsize;
int x=60,y=68,k=2;
char *buffer1,*buffer2;
int gdriver=VGA,gmode=VGAHI ;
initgraph(&gdriver,&gmode,PATH);
setfillstyle(1,GREEN);
bar(70,70,120,100);
bar(120,84,150,100);
setcolor(EGA_BROWN);
setfillstyle(1,EGA_BROWN);
circle(84,103,8);
floodfill(84,103,EGA_BROWN);
circle(134,103,8);
floodfill(134,103,EGA_BROWN);
bar(20,122,556,142);
bar(556,60,600,142);
imsize=imagesize(x,y,152,112);
buffer1=(char*)malloc(imsize);
buffer2=(char*)malloc(imsize);
getimage(x,y,152,112,buffer1);
while(!kbhit())
{
for(i=0;i<=400;i+=k)
{
putimage(x+i,y,buffer1,COPY_PUT);
delay(10000);
}
j=i-k+x;
for(i=0;i<152-x;i+=k)
{ imsize=imagesize(j+i,y,152-x+j,112);
buffer2=(char*)realloc(buffer2,imsize);
getimage(j+i,y,152-x+j-k,112,buffer2);
putimage(j+i+k,y,buffer2,COPY_PUT);
delay(10000);
}
}
getch();
free(buffer1);
free(buffer2);
closegraph();
}

3.艺术钟动画程序:(tc2.0下运行良好)
#include<math.h>
#include<dos.h>
#include<graphics.h>
#define CENTERX 320 /*表盘中心位置*/
#define CENTERY 175
#define CLICK 100 /*喀嗒声频率*/
#define CLICKDELAY 30 /*喀嗒声延时*/
#define HEBEEP 10000 /*高声频率*/
#define LOWBEEP 500 /*低声频率*/
#define BEEPDELAY 200 /*报时声延时*/

/*表盘刻度形状*/
int Mrk_1[8]={-5,-160,5,-160,5,-130,-5,-130, };
int Mrk_2[8]={-5,-160,5,-160,2,-130,-2-130, };

/*时针形状*/
int HourHand[8]={-3,-100,3,-120,4, 10,-4,10};

/*分针形状*/
int MiHand[8]={-3,-120,3,-120,4, 10,-4,10};

/*秒针形状*/
int SecHand[8]={-2,-150,2,-150,3, 10,-3,10};

/*发出喀嗒声*/
void Click()
{
sound(CLICK);
delay(CLICKDELAY);
nosound();
}

/*高声报时*/
void HighBeep()
{
sound(HEBEEP);
delay(BEEPDELAY);
nosound;
}

/*低声报时*/
void LowBeep()
{
sound(LOWBEEP);
}

/*按任意角度画多边形*/
void DrawPoly(int *data,int angle,int color)
{
int usedata[8];
float sinang,cosang;
int i;
sinang=sin((float)angle/180*3.14);
cosang=cos((float)angle/180*3.14);
for(i=0;i<8;i+=2)
{
usedata[i] =CENTERX+ cosang*data[i]-sinang*data[i+1]+.5;
usedata[i+1]=CENTERY+sinang*data[i]+cosang*data[i+1]+.5;
}
setfillstyle(SOLID_FILL,color);
fillpoly(4,usedata);
}

/*画表盘*/
void DrawClock(struct time *cutime)
{
int ang;
float hourrate,minrate,secrate;

setbkcolor(BLUE);
cleardevice();
setcolor(WHITE);

/* 画刻度*/
for(ang=0;ang<360;ang+=90)
{
DrawPoly(Mrk_1,ang,WHITE);
DrawPoly(Mrk_2,ang+30,WHITE);
DrawPoly(Mrk_2,ang+60,WHITE);
}
secrate=(float)cutime->ti_sec/60;
minrate=((float)cutime->ti_min+secrate)/60;
hourrate=(((float)cutime->ti_hour/12)+minrate)/12;
ang=hourrate*360;
DrawPoly(HourHand,ang,YELLOW);/*画时针*/
ang=minrate*360;
DrawPoly(MiHand,ang, GREEN);/*画分针*/
ang=secrate*360;
DrawPoly(SecHand,ang, RED);/*画秒针*/
}
main()
{
int gdriver=EGA,
gmode=EGAHI;
int curpage;
struct time curtime ,newtime ;
initgraph(&gdriver,&gmode,"c:\\tc");
setbkcolor(BLUE);
cleardevice();
gettime(&curtime);
curpage=0;
DrawClock(&curtime);
while(1)
{
if(kbhit())
break; /*按任意键退出*/
gettime(&newtime); /*检测系统时间*/
if(newtime.ti_sec!=curtime.ti_sec)/*每1秒更新一次时间*/
{
if(curpage==0)
curpage=1;
else
curpage=0;
curtime=newtime;
/*设置绘图页*/
setactivepage(curpage);
/*在图页上画表盘*/
DrawClock(&curtime);
/*设置绘图页为当前可见页*/
setvisualpage(curpage);
/*0分0秒高声报时*/
if(newtime.ti_min==0&&newtime.ti_sec==0)
HighBeep();
/* 59分55至秒时低声报时*/
else if(newtime.ti_min==59&&
newtime.ti_sec<=59)
LowBeep();/*其他时间只发出喀嗒声*/
else
Click();
}
}
closegraph();
}

❽ 用C语言制作动画

flash制作动画:

打开Flash,点击【文件】→【新建】,在打开的“新建”窗口中选择“Flash文件(ActiveScript 3.0)“,然后点击”确定“创建空白文档。

点击【插入】→【新建元件】,在打开的”新建元件“窗口中,将名称设置为”运动的小人“,勾选”影片剪辑“,然后点击”确定“按钮。

点击【文件】→【导入】→【导入到库】,然后在打开的”导入到库“窗口中,选择事先准备好的小人走动姿势图片,全部选择并点击”打开“按钮,导入到库。

把库中的“Result0”拖动到场景中。

点击“时间轴”上的“新建图层”按钮,创建图层2,然后在图层2的第5帧处,点击【插入】→【关键帧】,把库中的“Result1”拖动到场景中。
利用同样的原理,将”Result2“、 ”Result3“和”Result4“分别到图层3、图层4和图层5中,对应的帧分别为10、15和20处。
最后调整各个图层图像的延续时间。至此,运动的小人影片剪辑制作完成。
切换至主场景中,使主场景处于活动状态,点击”属性“面板中的”大小“按钮,将场景的大小设置为”800*300“,同时将背景色设置为”黑色“点击”确定“按钮。
从库中将”运动的小人“影片剪辑拖动到场景左边外边。
然后在”时间轴“第30帧处,点击【插入】→【时间轴】→【关键帧】,在30帧处插入关键帧,然后将小人从场景的左侧外面拖动到场景右侧外面。至此,整个动画设置完成。
在1到30帧之间鼠标右击,选择”创建补间动画“。
最后按下键盘组合键”CTRL+Enter“进行测试。如果感觉小人运动不规律,可适当将1至30帧的距离调整的稍微大一些,直到满意为止。

❾ 如何利用C语言实现动画

基于擦除法的C语言动画设计与实现

Movie design implement in C language base on erasure way

东华理工学院计算机与通信系姜林何月顺江西南昌330013

摘要:

本文介绍了程序设计语言中动画设计的原理,在C语言中的动画设计常用方法,并提出了在C语言中新的动画设计方法――擦除法。阐述擦除法动画设计的原理,并通过一个具体的实例详细介绍了这种方法的设计实现,文中末尾总结了擦除法动画设计的优点及适用的范围。

关键字:擦除法;C语言;TurboC2.0;动画设计;原理;实现

中图分类号:TP312

Summary:

Through the principium of movie design in program design language, the thesis present movie design general way in C language, and bring forward new movie design way――erasure . The thesis also expatiate the principium of erasure way, particular describe the design implement of erasure by a instance. The end summarize the excellence and range of erasure way.

Key words: erasure way; C language ; TurboC 2.0; movie design; principium; implement

0. 引言

动画技术是计算机图形学中的重要内容,它广泛用于游戏娱乐,辅助教学,科学实验模拟等计算机辅助设计。用于动画设计的程序设计语言有多种,并且有多种方法。其中C语言程序设计又广泛用于各种软件开发项目中。因此,掌握C语言的动画设计方法对于软件开发很有必要。

1. 程序设计中动画原理

程序设计中动画设计的原理类似电影的方法,它利用人的视觉具有暂留的生理特点,即人眼对动态图像的变化仅能分辨出时间间隔为25毫秒左右的变化,如果图像变化太快,则人眼无法分辨。在程序设计中我们可以在屏幕上画出一张图像,而将这张图像在不同时间出现,然后一张张快速(时间间隔小于25毫秒)呈现在屏幕上,从视觉效果上看这些画面就如同电影在连续变化一样,给人以动的视觉感觉。

2. C语言动画设计常用方法C语言常用动画设计方法[1]:

2.1利用动态开辟图视口方法

在位置动态变化,但大小不变的图视口中(用setviewpot()函数[2]),设置固定图形,这样呈现在观察者面前的是当前图视口位置在动态变化,因而在屏上看到的图像就好像在动态变化一样。

2.2 利用显示页和编辑页交替变化

将当前显示页和编辑页分开(用setvisualpage()和setactivepage()函数),在编辑页上

画好图形后,立即令该页变为显示页,然后在上次显示页上进行画图,画好后,再交换,如此反复,在观察者的视觉上,就出现了动画的效果。

2.3 利用画面存储再重放的方法

如同制作幻灯片一样,将整个动画过程变成一个个片断,然后存储到显示缓冲区内,当把它们按顺序重放到屏幕上时,就出现了动画效果。

2.4 直接对图像动态存储器进行操作

利用显示适配器上控制图像显示的各种寄存器和图像存储器VRAM,对其进行直接操作和控制,从而可以高效快速的实现动画效果。

上述4种方法均可以实现动画效果,但其操作比较复杂,且在程序中要对图像不断进行存取操作,这需要耗费大量内存资源。下面的擦除法动画设计可以解决上述问题。

3. 擦除法动画设计原理

擦除法动画设计方法在很多的动画制作工具(如flash)中大量使用,但在程序设计中却鲜有人用。它的设计原理是:利用同色原理,当图形色与背景色相同时人眼不能感知。在动画设计中,当在一个位置画了一张图像时,使图像色与背景色相异,然后再到另一个位置画一张图像并使图像色与背景色也相异,此时将先前画的图像在原位置再画一张,并使图像色与背景色相同,这样人眼只能看到新画的一张图像而看不到先前画的图像,从而先前画的图像感觉被擦除了。这样连续画多张图像并在每画一张新的图像,将原来的图像擦除,从而在观察者来看就实现了动画的效果。

4. 擦除法的动画设计实现

下面以一个上下翻滚的圆作为一个例子来讲解在TurboC2.0开发环境下用C语言来实现动画的设计过程,其中动画设计的方法是擦除法。具体的实现步骤如下:

4.1 TC的图形系统的初始化

TurboC2.0为用户提供了一个功能强大的画图软件库,它包括图形库文件(graphics.lib),图形头文件(graphics.h)和许多图形显示器的驱动程序。在TurboC2.0开始进行图形设计前必须对之进行初始化,使系统知道要用什么类型的图形显示器的驱动程序,采用什么模式的图形方式,以及该适配器驱动程序的寻找路径名。这个初始化的函数是initgraph()。在本程序中的初始化如下:
gdriver=DETECT;
initgraph(&gdriver, &gmode, "");//图形显示器、显示模式、路径自动检测

4.2 画图
setcolor(LIGHTRED);//设置圆的线条颜色为淡红色

setlinestyle(0,0,1);//设置线条为形状为实线,线宽为一点宽
setfillstyle(1, 10);//设置圆的填充式样为以实填充,填充色为淡绿色
circle(300, 10+10*y,15);//画一个圆心在坐标(300,10+10y),半径为15的圆
这个地方我们需要画一个圆(用draw()函数实现),并且设置圆的圆周线条的颜色(用setcolor()函数),设置线条类型(用setlinestyle()函数),设置圆的填充色和填充模式(用setfillstyle()函数),设置圆的填充色(用floodfill()),最后是画圆(用circle()函数)。在本程序(draw()函数)中的代码如下:
floodfill(300, 10+10*y, 12);//给圆填充如上stfillstyle中的淡绿色

为了实现擦除操作需在同一个位置再画一个圆(用clear()函数实现),该操作只需将上面的画圆函数(draw()函数)改动两个设置即可,如下示:

setcolor(BLUE);//设置圆的线条颜色为蓝色(与背景色相同)
setfillstyle(1, 10);//设置圆的填充式样为以实填充,填充色为淡绿色

4.3 动画实现

本部分是核心部分,先设置背景色为蓝色(用setbkcolor()函数),再在屏幕上画一个填充色为淡绿色的圆(draw()函数)。设置一个循环控制语句实现在屏幕上不同的位置画圆,同时在每画一个圆后作一个时间的延迟(用delay()函数),再在延迟后实现擦除操作,即调用clear()函数。其流程图及代码如下:
setbkcolor(BLUE);//设置背景色为蓝色

for(j=20;j>0;j=j-4)//控制动画实现的次数为20次

{ for(i=j;i<30;i++)//实现动画从上向下闪烁

{ draw(i);//画圆

delay(100000);//延迟0.1秒

clear(i);//擦除已画的圆

}

for(i=30;i>j;i--)//实现动画从下向上闪烁

{ draw(i);//画圆

delay(100000);//延迟0.1秒

clear(i);//擦除已画的圆

}

}

动画实现后的最后效果图如下示。

4.4 关闭图形系统

当图形实现结束后需要关闭图形系统,利用函数closegraph()即可实现。

5. 总结

擦除法动画设计原理易于理解,便于操作。并且它的程序运行所需内存空间也比上述四种常用方法要少得多,因为它在程序执行过程中不需将图形存入内存再从内存调出,这节省了大量的内存空间。如果程序运行在内存紧张的环境中,如嵌入式系统中,这种方法尤其适用

❿ 用C语言编写一个简单的动画

#include<iostream>
#include <stdio.h>

int main()
{
int countBlank = 40;//空格数
int timer = 0;
while(1)
{
++timer;
if(timer == 5)
{
timer = 0;
countBlank --;
if(countBlank == 0)
countBlank = 40;
}
for(int i = 0; i < countBlank; ++i)
{
printf(" ");
}
printf("欢迎光临\n");
system("cls");
}

return 0;
}

热点内容
好分数里如何修改密码 发布:2025-02-06 19:42:30 浏览:155
mysql存储过程判断 发布:2025-02-06 19:40:15 浏览:852
bat编译器的作用 发布:2025-02-06 19:26:54 浏览:343
phpajaxsession 发布:2025-02-06 19:20:56 浏览:623
西安java学习 发布:2025-02-06 19:15:44 浏览:622
微信电影源码网站 发布:2025-02-06 18:55:21 浏览:934
本地建mysql数据库 发布:2025-02-06 18:54:23 浏览:762
屏幕看不清了如何输密码 发布:2025-02-06 18:51:14 浏览:333
手机开脚本买个什么配置的 发布:2025-02-06 18:45:59 浏览:113
python代码输入 发布:2025-02-06 18:32:35 浏览:563