『壹』 怎樣用c語言編寫動畫(物體自下而上運動)
可以利用不斷的刷屏實現,當然也可以採用圖形界面。
『貳』 求c語言笑臉可自由上下左右動的代碼
挺有意思的一道題目,看一下這樣符不符合要求,用wasd控制移動。在VC6運行過了。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
intmain()
{
//牆從第2行第2列到第15行第15列
intlines=2,rows=2,i;
charoperate;
do{
system("cls");//清屏函數
switch(operate)
{
case'w'://上移
if(lines==2)
printf("不能再往上走了");//到邊界後不能再往上
else
lines--;//行減
break;
case's'://下移
if(lines==15)
printf("不能再往下走了");//到邊界後不能再往下
else
lines++;//行增
break;
case'a'://左移
if(rows==2)
printf("不能再往左走了");//到邊界後不能再往左
else
rows--;//列減
break;
case'd'://右移
if(rows==15)
printf("不能再往右走了");//到邊界後不能再往右
else
rows++;//列增
break;
default:
break;
}
//根據行列值,輸出lines-1個換行,rows-1個空格
for(i=1;i<lines;i++)
printf(" ");
printf("%*c",rows,1);
}while(operate=getch());
return0;
}
『叄』 怎麼用C語言讓一個字元動起來,可以控制上下左右
//簡單編了一個小程序,是這樣不?
#include"stdio.h"
#include"conio.h"
#include"stdlib.h"
intmain()
{
charc;
intx,y,i,j;
x=0;
y=0;
printf("*");
while(1)
{
if((c=getch())<0)c=getch();
switch(c)
{
case72:
if(y>0)y=y-1;
break;
case75:
if(x>0)x=x-1;
break;
case77:
if(x<79)x=x+1;
break;
case80:
if(y<24)y=y+1;
break;
default:
break;
}
system("cls");
for(j=0;j<y;j++)
printf(" ");
for(i=0;i<x;i++)
printf("");
printf("*");
//printf("%d,%d",x,y);
}
}
『肆』 C語言運動的小人
多了一個最後的大括弧}。
編寫程序請養成縮格書寫的習慣!
『伍』 如何能用C語言畫出會動的圖形
沒有分恐怕沒人給你寫
我想寫可我不會
『陸』 怎樣讓c語言中的圖像動
動畫就是連續播放靜態畫面形成的動感效果,在C語言里移動的圓就是先畫個圓,記住它的位置和顏色(簡稱畫圓),然後用背景色在同樣的位置再畫個同樣的圓,這時屏幕上的圓就消失了(簡稱擦除),然後略微一動一點距離再畫圓,擦除,重復上面的動作,你的圓就動起來了。
『柒』 C語言設計一個簡單的圖形動畫,用turboc2運行,怎樣編寫使圖形動起來的代碼
1、首先,打開vc6.0,建立程序編寫頁面,建立C語言環境,聲明兩個整數型變數。
『捌』 C語言的代碼中,是如何體現出「動態」的
1:你說的動態是指動態分配內存吧。即是b = new int[j]; 這個吧,原理是先定義一個指針,因為事先不知道應該分配多少空間,所以到了後面知道了要分配多少才b = new int[j]; 不過new這種分配方式是C++的,C動態分配內存是用malloc的,b=(int*)malloc(sizeof(int)*j);不過說實話,這個程序很多詬病,因為在num函數內定了一個a[100],然後再動態分配b數組,再把a數組復制給b數組,這樣完全沒了動態分配的意義,還不如一開始就b[100]
2:作用:明顯是求可被n整除的數,至於現實中有什麼作用,因為是數學上的東西,估計能在游戲編程中用上,因為在一個游戲程序中有很多這些數學計算
『玖』 如何利用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語言怎麼顯示動態內容
最簡單的延時就是sleep了。 然後把當前顯示清空, 或者重定位輸出位置。
比如 只輸出文字, 不加換行, 通過flush刷新緩沖。
然後通過輸出\b 定位到行首, 輸出2 刷新緩沖。
再輸出\b定位到行首,輸出1...
中間的延時還是用sleep,其他的更不好用。