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

c语言动画

发布时间: 2022-01-25 22:30:52

‘壹’ c语言简单动画

自由落体运动:
#include <math.h>
#include <stdio.h>
#include <graphics.h>
#include <dos.h>

#define pi 3.1415926535

double ca3mm1(double m1,double m2);
double ca3fm1(double cosine,double sine);
double ca5fm2(double a6m,double a5m,double a4m,double a4f,int shang);
double ca6fm2(double a4m ,double a4f,double a5m , double a5f);
char inbox(int x,int y,int x1,int y1);
char buf();

main()
{
double m=3.0;
double xo=100.0,yo=200.0,a1=30.0,t1=pi;
double xc=xo+m*a1,yc=yo;
double a2=8.0,a3,a4=25.0,a5=30.0,a6=20.0,a7=35.0;
double t2,t3,t4,t5,t6,t7;
double xo1=xo+m*150,yo1=yo;
double xc1=xo1-m*a1,yc1=yo1;
double i,j,k;
double l1;
double n=116.1,nt;
initscreen();

setfillstyle(SOLID_FILL,DARKGRAY);
bar(0,0,640,480);
mybutton(10,10,"BEGIN",1,0);
mybutton(500,10,"EXIT",1,0);
line(0,69,640,69);
mouseinit();
changemousecross();
setmousexy(320,20);
mouseshow();
setmousearea(0,0,640,60);
do{
if(inbox(10,10,70,26)&&button()==1)
{mousehide();
mybutton(10,10,"BEGIN",0,0);
mouseshow();
mousehold();
mousehide();
mybutton(10,10,"BEGIN",1,7);
mouseshow();
break;
}
if(inbox(500,10,555,26)&&button()==1)
{mousehide();
mybutton(500,10,"EXIT",0,0);
mouseshow();
mousehold();
mousehide();
mybutton(500,10,"EXIT",1,7);
mouseshow();
exit(0);
}
if(buf()==56)
for(i=0;i<10000;i++){
switch (buf()){
case 18:{
mousehide();
mybutton(500,10,"EXIT",0,0);
mouseshow();
delay(4000);
mousehide();
mybutton(500,10,"EXIT",1,7);
mouseshow();
exit(0);
}
case 48: {
mousehide();
mybutton(10,10,"BEGIN",0,0);
mouseshow();
delay(4000);
mousehide();
mybutton(10,10,"BEGIN",1,7);
mouseshow();
goto run;
}
default:break;
}
}
}while(1);
run:
drawjijia(xo,yo,1);
drawjijia(xc,yc,1);
drawjijia(xo1,yo1,1);
drawjijia(xc1,yc1,1);
setwritemode(1);
do{
for(i=0;i<360.0;i+=1.0)
{
t2=i;
a3=ca3mm1(a1*cos(t1)+a2*cos(t2*pi/180.0),a1*sin(t1)+a2*sin(t2*pi/180.0));
t3=ca3fm1(a1*cos(t1)+a2*cos(t2*pi/180.0),a1*sin(t1)+a2*sin(t2*pi/180.0));
a4=a3;
t4=t3;
t5=ca5fm2(a6,a5,a4,t4,0);
t6=ca6fm2(a4,t4,a5,t5);
t7=t6-90.0;
l1=xc1-xc-2*m*a7*cos(t7*pi/180);
nt=(asin(l1/2/(n/2))*180/pi)-90.0;
drawline(xo,yo,a2,t2,m,LIGHTGRAY);
drawline(xo+m*a2*cos(t2*pi/180),yo-m*a2*sin(t2*pi/180),a5,t5,m,LIGHTGRAY);
drawline(xc,yc,a6,t6,m,LIGHTGRAY);
drawline(xc,yc,a7,t7,m,LIGHTGRAY);
drawline1(xo1,yo1,a2,t2,m,LIGHTGRAY);
drawline1(xo1+m*a2*cos((180-t2)*pi/180),yo1-m*a2*sin((180-t2)*pi/180),a5,t5,m,LIGHTGRAY);
drawline1(xc1,yc1,a6,t6,m,LIGHTGRAY);
drawline1(xc1,yc1,a7,t7,m,LIGHTGRAY);
for(j=-1;j<20;j++)
{ drawline(xc+m*a7*cos(t7*pi/180),(yc-m*a7*sin(t7*pi/180)-j*n*sin(nt*pi/180)),n,nt,1.0,GREEN);
drawline1(xc1-m*a7*cos(t7*pi/180),(yc1-m*a7*sin(t7*pi/180)-j*n*sin(nt*pi/180)),n,nt,1.0,DARKGRAY);
}
delay(300);
drawline(xo,yo,a2,t2,m,LIGHTGRAY);
drawline(xo+m*a2*cos(t2*pi/180.0),yo-m*a2*sin(t2*pi/180.0),a5,t5,m,LIGHTGRAY);
drawline(xc,yc,a6,t6,m,LIGHTGRAY);
drawline(xc,yc,a7,t7,m,LIGHTGRAY);
drawline1(xo1,yo1,a2,t2,m,LIGHTGRAY);
drawline1(xo1+m*a2*cos((180-t2)*pi/180),yo1-m*a2*sin((180-t2)*pi/180),a5,t5,m,LIGHTGRAY);
drawline1(xc1,yc1,a6,t6,m,LIGHTGRAY);
drawline1(xc1,yc1,a7,t7,m,LIGHTGRAY);
for(j=-1;j<20;j++)
{ drawline(xc+m*a7*cos(t7*pi/180),(yc-m*a7*sin(t7*pi/180)-j*n*sin(nt*pi/180)),n,nt,1.0,GREEN);
drawline1(xc1-m*a7*cos(t7*pi/180),(yc1-m*a7*sin(t7*pi/180)-j*n*sin(nt*pi/180)),n,nt,1.0,DARKGRAY);
}
setwritemode(0);
if(inbox(500,10,555,26)&&button()==1)
{mousehide();
mybutton(500,10,"EXIT",0,0);
mouseshow();
mousehold();
mousehide();
mybutton(500,10,"EXIT",1,7);
mouseshow();
exit(0);
}
if(buf()==56)
for(k=0;k<10000;k++){
switch (buf()){
case 18:{
mousehide();
mybutton(500,10,"EXIT",0,0);
mouseshow();
delay(4000);
mousehide();
mybutton(500,10,"EXIT",1,7);
mouseshow();
exit(0); }
default:break;
}
}
setwritemode(1);
}
}while(1);
}

drawline(double xo,double yo,double mo,double fujiao,double m,int color)
{
double x,y;
x=(xo+m*mo*cos(fujiao*pi/180));
y=(yo-m*mo*sin(fujiao*pi/180));
setcolor(color);
line (xo,yo,x,y);
}
drawline1(double xo,double yo,double mo,double fujiao,double m,int color)
{
double x,y;
x=(xo-m*mo*cos(fujiao*pi/180));
y=(yo-m*mo*sin(fujiao*pi/180));
setcolor(color);
line (xo,yo,x,y);
}
drawjijia(double x,double y,int shang)
{
setcolor(RED);
if (shang==1){
circle(x,y,3);
line(x-3.0,y+3.0,x-15.0,y+20.0);
moveto(x-15,(int)(y+20));
lineto((int)(x+15),(int)(y+20));
moveto((int)(x+15),(int)(y+20));
lineto(x+3,y+3);}
setcolor(RED);
if (shang==0){
circle((int)x,(int)y,3);
line (x-3,y-3,x-15,y-20);
moveto(x-15,y-20);
lineto(x+15,y-20);
moveto(x+15,y-20);
lineto(x+3,y-3);
}
}
double ca3mm1(double m1,double m2)
{
double temp;
temp = sqrt(m1*m1 + m2*m2);
return(temp);
}
double ca3fm1(double cosine,double sine)
{
float temp;
if (sine > 0 && cosine > 0)
temp = atan(sine / cosine) * 180 / pi;
if (sine > 0 && cosine < 0)
temp = (atan(sine / cosine) + pi) * 180 / pi;
if (sine < 0 && cosine < 0)
temp = (atan(sine / cosine) + pi) * 180 / pi;
if (sine < 0 && cosine > 0)
temp = (atan(sine / cosine) + 2 * pi) * 180 / pi;
return(temp);
}
double ca5fm2(double a6m,double a5m,double a4m,double a4f,int shang)
{
double temp,sine1,cosine1;
cosine1 = (a6m *a6m - a4m *a4m - a5m*a5m) / (2 * a4m * a5m);
sine1 = sqrt(1 - cosine1 *cosine1);
if (shang==0)
sine1 = sine1*(-1);
if (sine1 > 0 && cosine1 > 0)
temp = a4f + (atan(sine1 / cosine1) * 180 / pi);
if (sine1 > 0 && cosine1 < 0)
temp = a4f + ((atan(sine1 / cosine1) + pi) * 180 / pi);
if (sine1 < 0 && cosine1 < 0)
temp = a4f + ((atan(sine1 / cosine1) + pi) * 180 / pi);
if (sine1 < 0 && cosine1 > 0)
temp = a4f + ((atan(sine1 / cosine1) + 2 * pi) * 180 / pi);
return(temp);
}
double ca6fm2(double a4m ,double a4f,double a5m , double a5f)
{
double temp,sine1,cosine1;
sine1 = a4m * sin(a4f * pi / 180) + a5m * sin(a5f * pi / 180);
cosine1 = a4m * cos(a4f * pi / 180) + a5m * cos(a5f * pi / 180);

if (sine1 > 0 && cosine1 > 0)
temp = (atan(sine1 / cosine1) * 180 / pi);
if (sine1 > 0 && cosine1 < 0)
temp = ((atan(sine1 / cosine1) + pi) * 180 / pi);
if (sine1 < 0 && cosine1 < 0)
temp = ((atan(sine1 / cosine1) + pi) * 180 / pi);
if (sine1 < 0 && cosine1 > 0)
temp = ((atan(sine1 / cosine1) + 2 * pi) * 180 / pi);
return(temp);
}
initscreen()
{
int gd=DETECT,gm;
registerbgidriver(EGAVGA_driver);
initgraph(&gd,&gm,"");
}

‘贰’ c语言字符动画源代码

#include<stdio.h>
#include<windows.h>
intmain()
{
for(;;)
{
printf("\");
Sleep(500);
printf("/");
Sleep(500);
printf("-");
Sleep(500);
}
return0;
}

莫非是类似这种?其实有了这个思路,自己利用循环可以做很多



‘叁’ 用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语言实现动画

可以用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语言动画编程

看啊
一群星星在追老鼠!!
#include <DOS.H>
#include<graphics.h>
#include<stdlib.h>
#include<math.h>
#define maxcircle 80
#define CR 1
main()
{union REGS r;
int dr=DETECT,mode=0;
int mx,my,mc;
int i, color[maxcircle];
double fx,fy,force=0;
double s,x[maxcircle],y[maxcircle];

initgraph(&dr,&mode,"");
r.x.ax=0;
int86(0X33,&r,&r);
r.x.ax=2;
int86(0x33,&r,&r);
for(i=0;i<maxcircle;i++)
{color[i]=random(16)+1;
x[i]=random(640);
y[i]=random(480);
}

while(!kbhit())
{
r.x.ax=3;
int86(0x33,&r,&r);
mx=r.x.cx;
my=r.x.dx;
mc=r.x.bx;
for(i=0;i<maxcircle;i++)
{
fx=mx-x[i];
fy=my-y[i];
s=sqrt(fx*fx+fy*fy+0.0012);
if(s!=0)
{
setcolor(0);
setfillstyle(1,0);

fillellipse(x[i],y[i],CR,CR);
setcolor(color[i]);
setfillstyle(1,color[i]);

force=random(30)/(double)10;

x[i]+=fx/s*force;
y[i]+=fy/s*force;

fillellipse(x[i],y[i],CR,CR);

}

}
if(mc==1)
{
cleardevice();
for(i=0;i<maxcircle;i++)
{x[i]=random(640);
y[i]=random(480);
color[i]=random(16)+1;
fillellipse(x[i],y[i],CR,CR);
}
}

}
}

‘柒’ 如何利用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语言怎么做动画

可以用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语言制作简单的动画啊

因为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帧的距离调整的稍微大一些,直到满意为止。

热点内容
手机如何设置锁屏密码个性 发布:2024-11-15 22:44:08 浏览:417
mysql导入存储过程 发布:2024-11-15 22:43:18 浏览:638
net连接数据库代码 发布:2024-11-15 22:40:16 浏览:61
编程计算nk 发布:2024-11-15 22:35:07 浏览:833
数据库第一章 发布:2024-11-15 22:27:07 浏览:593
测试php性能工具 发布:2024-11-15 22:19:37 浏览:580
安卓手机怎么给王者荣耀差评 发布:2024-11-15 22:16:47 浏览:270
c调用python返回 发布:2024-11-15 22:14:23 浏览:943
优酷无法上传高清视频 发布:2024-11-15 22:13:13 浏览:733
源码仓 发布:2024-11-15 22:07:29 浏览:722