Показать сообщение отдельно
  (#1 (permalink)) Старый
Nasya Nasya вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 31.10.2011
Question Как дальше писать эту программу( не доходит... - 31.10.2011, 04:53

Нужно написать прогу чтобы шарик летел до середины увеличива после середины уменьшался. Начинал лететь красным на середине становился зеленым а заканчивал лететь синим..

Вот что я уже написала... как дальше не знаю( помогите умные люди


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OpenGl, Math;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Dc1:HDC;
Hrc1:HGLRC;
i:Integer;
BeginTime: Cardinal;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
Pfd1: TpixelFormatDescriptor;
nPixelFormat: Integer;
begin
Dc1 := GetDC(Form1.Handle);
FillChar(Pfd1,SizeOf(Pfd1),0);
Pfd1.dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
nPixelFormat := ChoosePixelFormat(Dc1,@Pfd1);
SetPixelFormat(Dc1,nPixelFormat,@Pfd1);
Hrc1 := wglCreateContext(Dc1);
wglMakeCurrent(Dc1,Hrc1);

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
wglMakeCurrent(0,0);
wglDeleteContext(Hrc1);
ReleaseDC(Form1.Handle,Dc1);
DeleteDC(Dc1);
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
glViewPort(0, 0, Form1.ClientWidth, Form1.ClientHeight);
glClearColor(0.0,0.0,0.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluOrtho2D(-Form1.ClientWidth/Form1.clientHeight, Form1.ClientWidth/Form1.clientHeight, -1.0,1.0);
glMatrixMode(GL_MODELVIEW);
glPushmatrix;

glTranslatef(-1.5,0,0);
glTranslateF(4*((GetTickCount-BeginTime)mod 2000)/2000,0,0);
glScalef(2*((GetTickCount-BeginTime)mod 2000)/2000,2*((GetTickCount-BeginTime)mod 2000)/2000,1);
glColor3f(1.0,1.0,1.0);
glBegin(Gl_TRIANGLE_FAN);

glVertex2f(-1.2,0.0);




for i :=0 to 1000 do
glVertex2f(-1.2 + 0.2*cos(DegToRad(I/1000*360)),0.0 +0.2*
sin(DegToRad(i/1000*360)));



glend;
glPopMatrix;
glFlush;
SwapBuffers(Dc1);
Application.ProcessMessages;
if not Application.Terminated then InvalidateRect(Form1.Handle,nil,false);



end;

end.
Ответить с цитированием
Ads