Oleg170 | Дата: Четверг, 13.12.2007, 08:23 | Сообщение # 1 |
Новичок
Группа: Пользователи
Сообщений: 2
Статус: Offline
| нормальный звук(написаныый с помощью подуля CRT), и движущую картинку(написаную с помощью модуля ГРАФА).. надо срочно на зачет, помогите....
Мир - любой ценой....
|
|
| |
Seqular | Дата: Четверг, 13.12.2007, 20:17 | Сообщение # 2 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Oleg170, Нормальный звут, т.е. записаный Sound(x); NoSound;? =) Поэкспериментируй, наиграй какую-нибудь мелодию... А вот тебе кое-какая анимация. Code program Kub; uses Graph, Crt;
procedure Kubik; label next; type cube=array[1..8] of record x,y,z:integer end; const verts:cube=((x: 1; y: 1; z: 1),(x: 1; y: 1; z:-1), (x: 1; y:-1; z: 1),(x: 1; y:-1; z:-1), (x:-1; y: 1; z: 1),(x:-1; y: 1; z:-1), (x:-1; y:-1; z: 1),(x:-1; y:-1; z:-1)); g:array[1..6, 1..4] of shortint=((1,2,4,3),(1,2,6,5), (1,3,7,5),(3,4,8,7), (2,4,8,6),(5,6,8,7)); var Alfa,Beta,Gamma,Teta,DT:real; c:cube;
procedure Povorot(var x,y,z:integer); var cosT, sinT, One_cosT, AOne_cosT, BOne_cosT,GsinT:real; xn,yn,zn:integer; begin cosT:=cos(Teta); sinT:=sin(Teta); One_cosT :=1.0-cosT; AOne_cosT:=Alfa*One_cosT; BOne_cosT:=Beta*One_cosT; GsinT:=Gamma*sinT;
xn:=trunc(x*(cosT+Alfa*AOne_cosT)+y*(GsinT+Beta*AOne_cosT)+ z*(-Beta*sinT+Gamma*AOne_cosT));
yn:=trunc(x*(-GSinT+Beta*AOne_cosT)+y*(cosT+Beta*BOne_cosT)+ z*( Alfa*sinT + Gamma * BOne_cosT));
zn:=trunc(x*(Beta*sinT+Gamma*AOne_cosT)+y*(-alfa*sinT+Gamma*BOne_cosT)+ z*(cosT+Gamma*Gamma*One_cosT));
x:=xn; y:=yn; z:=zn; end;
function minz:integer; var j,m:integer; begin m:=1; for j:=2 to 8 do if c[j].z<c[m].z then m:=j; minz:=m; end;
var Pnts:array[1..5] of record x,y:integer end; min,x0,y0,a,i,j,k:integer; page:word; begin page:=0; x0:=320; y0:=150; a:=60; Alfa:=0.9; Beta:=0.1; Gamma:=sqrt(1.0-Alfa*Alfa-Beta*Beta); Teta:=0; DT:=2*Pi/100; for i:=1 to 8 do begin c[i].x:=verts[i].x*a; c[i].y:=verts[i].y*a; c[i].z:=verts[i].z*a; povorot(c[i].x,c[i].y,c[i].z) end; min:=MinZ; SetVisualPage((Page+1)mod 2); for k:=0 to 2500 do begin delay(3000); SetActivePage(page); for j:=1 to 6 do begin for i:=1 to 4 do if min=g[j,i] then goto next; for i:=1 to 4 do begin Pnts[i].x:=x0+c[g[j,i]].x; Pnts[i].y:=y0+trunc(0.775*c[g[j,i]].y) end; line(pnts[1].x,pnts[1].y,pnts[2].x,pnts[2].y); line(pnts[2].x,pnts[2].y,pnts[3].x,pnts[3].y); line(pnts[3].x,pnts[3].y,pnts[4].x,pnts[4].y); line(pnts[1].x,pnts[1].y,pnts[4].x,pnts[4].y); next: end; SetVisualPage(Page); SetActivePage((Page+1)mod 2); for i:=1 to 8 do begin c[i].x:=verts[i].x*a; c[i].y:=verts[i].y*a; c[i].z:=verts[i].z*a; povorot(c[i].x,c[i].y,c[i].z) end; min:=MinZ; SetFillStyle(SolidFill, Black); Bar(0,0,x0*2,y0*2); Teta:=Teta+DT; Page:=(Page+1)mod 2; if KeyPressed then exit; end; end; var drv,mode:integer; begin drv:=EGA; mode:=EGAHI; InitGraph(drv,mode,'C:\PASCAL\bgi'); Kubik; CloseGraph; end.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Pavel | Дата: Воскресенье, 16.12.2007, 01:29 | Сообщение # 3 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Знакомая анима! 3D cube. DXdiag отдыхает
|
|
| |