![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 26.12.2011
Сообщений: 3
|
![]()
Задача такова: разработать класс или объект, который является прямой прикрепленной к центру окружности. клавишами можно вращать прямую вокруг центра. при нажатии мышью в области окружности она меняет цвет, при нажатии вне, ничего не меняется.
Вообщем программа написана, но не работает, вернее я сначала написал ее просто используя операторы, она работала, а потом переделал в нормальный вид и она почему то не работает помогите пожалуйста!!! листинг не работающей программы Код HTML:
Uses GRAPHabc,CRT,Events; const esc=27; left=77; right=75; c=300; d=200; function RdKey:integer; var key:INTEGER; begin key:=Ord(ReadKey); if key=0 then key:=256+Ord(ReadKey); RdKey:=Key; end; type Tline=class x,y:integer; constructor Create(c0,d0,x0,y0:integer); procedure show; procedure hide; procedure move(newx,newy:integer); procedure HandleEvent(newx,newy,key:integer; r:real); end; constructor Tline.create(c0,d0,x0,y0:integer); begin x:=x0; y:=y0; end; procedure Tline.show; begin SetPenColor(clBlack); SetBrushColor(clWhite); Line(c,d,x,y); end; procedure Tline.Hide; begin SetPencolor(clWhite); SetBrushColor(clwhite); Line(c,d,x,y); end; procedure Tline.move(newx,newy:integer); begin Hide; x:=newx; y:=newy; show; end; procedure Tline.HandleEvent(newx,newy,key:integer; r:real); begin case key of left:begin r:=r-0.2; newx:=round((200*cos(r))+300); newy:=round(((300*cos(90-r))/2)+200); move(x,y); end; right:begin r:=r+0.2; newx:=round((200*cos(r))+300); newy:=round(((300*cos(90-r))/2)+200); move(x,y); end; end; end; VAR x,y,newx,newy,key:integer; A:Tline; r:real; //событие нажатия левой кнопки мыши procedure MouseDown(mx,my,mb: integer); var mc:integer; begin if mb=1 then begin if (mx-300)*(mx-300)+(my-200)*(my-200)<10000 then begin mc:=RGB(random(255),random(255),random(255)); setbrushcolor(mc); floodfill(mx,my,mc); end; end; end; BeGIN setWindowCaption('Хабиров ЗПИ-104'); circle(300,200,100); OnMouseDown:=MouseDown; A:=Tline.create(c,d,x,y); A.show; repeat key:=rdKey; A.handleEvent(key,newx,newy,r); until key=esc; end. Код HTML:
Uses GRAPHabc,CRT,Events;
const esc=27;
VAR
N,X2,Y2,I:INTeGeR;
X1,Y1,R:real;
key:char;
//событие нажатия левой кнопки мыши
procedure MouseDown(x,y,mb: integer);
var c:integer;
begin
if mb=1 then
begin
if (x-300)*(x-300)+(y-200)*(y-200)<10000 then
begin
c:=RGB(random(255),random(255),random(255));
setbrushcolor(c);
floodfill(x,y,c);
end;
end;
end;
BeGIN
OnMouseDown:=MouseDown;
lockdrawing;
key:=#0;
x1:=500;
y1:=200;
N:=0;
I:=1;
r:=0;
x2:=500;
y2:=170;
WHILe key<>chr(esc) do
BeGIN
key:=readkey;
case key of
#77 : begin
clrscr;
r:=r-0.2;
x1:=200*cos(r);
y1:=300*cos(90-r);
y1:=y1/2;
x2:=round(x1)+300;
y2:=round(y1)+200;
circle(300,200,100);
line(300,200,x2,y2);
end;
#75 : begin
clrscr;
r:=r+0.2;
x1:=200*cos(r);
y1:=300*cos(90-r);
y1:=y1/2;
x2:=round(x1)+300;
y2:=round(y1)+200;
circle(300,200,100);
line(300,200,x2,y2);
end;
eND;
redraw;
eND;
end.
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа работает пошагово, но не работает при запуске | -Katerina- | Microsoft Office Excel | 3 | 12.07.2011 03:40 |
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? | >>STINGER<< | Помощь студентам | 4 | 08.03.2011 09:56 |
почему интеренет на Xp не работает, а на семерке работает | Lenura | Windows | 18 | 04.10.2010 12:04 |
TP7 чтение из файла, работает но не работает!? | Qousio | Помощь студентам | 7 | 02.06.2009 09:37 |
Библиотека НЕ работает с 2008, но работает с 2000 SQL | namenike | Общие вопросы C/C++ | 0 | 26.05.2009 11:04 |