Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2009, 17:49   #1
Angelly
Новичок
Джуниор
 
Регистрация: 21.09.2009
Сообщений: 2
По умолчанию Задача в Delphi(движение за мышкой)

Подскажите как решить задачу,на вид, довольно простую: необходимо нарисовать смайлик,глаза которого будут следить за движением мышки.
Нужно просто рассчитать геометрич. фор-лу треугольника?И еще вопрос,как ограничить движение так называемого зрачка за пределы глаза(кружочка,в котором он(зрачок или точка нах-ся)?
P.S. неопытная студентка)
Angelly вне форума Ответить с цитированием
Старый 21.09.2009, 17:54   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Находим (из прямоугольного треугольника) угол образующийся между центром вокруг которого вращается зрачок и указателем мыши.
Далее так:
Код:
x:=centrX+Radius*Cos(angle*Pi/180);
y:=centrY+Radius*Sin(angle*Pi/180);
где Radius- это радиус вращения зрачка.
//Если что, то часиков через 3-4 я буду тут, обращайтесь.

Последний раз редактировалось Levsha100; 21.09.2009 в 18:02.
Levsha100 вне форума Ответить с цитированием
Старый 21.09.2009, 19:22   #3
Angelly
Новичок
Джуниор
 
Регистрация: 21.09.2009
Сообщений: 2
По умолчанию

А можно немного поподробнее..,пожалуйста)
Angelly вне форума Ответить с цитированием
Старый 22.09.2009, 08:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот тут для примерчика накропал движения одного глаза:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject);
var cx1,cx2,cy,x,y:integer;
begin
 x:=Width div 2;y:=Height div 2;
 with Canvas do
 begin
   Brush.Color:=clYellow;
   Ellipse(x-50,y-50,x+50,y+50);
   Brush.Color:=clWhite;
   y:=y-10; cy:=y;
   x:=x-20;   Ellipse(x-10,y-10,x+10,y+10);cx1:=x;
   x:=x+40;   Ellipse(x-10,y-10,x+10,y+10);cx2:=x;
    //******************************************
       Brush.Color:=clBlack;
       cx1:=cx1+Mouse.CursorPos.X div 100-5;
         Ellipse(cx1-5,cy-5,cx1+5,cy+5);
         Ellipse(cx1-5,cy-5,cx1+5,cy+5);
         Ellipse(cx2-5,cy-5,cx2+5,cy+5);
         Ellipse(cx2-5,cy-5,cx2+5,cy+5);
    //******************************************
 end;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 Repaint;
end;

end.
Остально по аналогии допиши )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.09.2009, 12:07   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Виталий, супер!!

только я бы рисование самой желтой рожицы вынес из repaint, иначе мерцает сильно.. ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.09.2009, 13:12   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
иначе мерцает сильно
Тогда его вынеси в WM_ERASEBACKGROUND.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движение 2-x объектов (Delphi) VadEr Помощь студентам 2 06.06.2009 17:19
Броуновское движение (Delphi) ExoByte Помощь студентам 9 01.06.2009 11:25
Движение юнита в модели океана Delphi Дамир Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 16.05.2009 12:45
Движение рисунка(Delphi) 2009 Помощь студентам 6 12.03.2009 22:17
Движение шарика по контуру delphi Map4eJIo Помощь студентам 2 03.03.2009 11:10