Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/47: Рейтинг темы: голосов - 47, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 8
1

мышь в abc

15.12.2011, 16:04. Показов 9440. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогитепожалуйста! нужно написать программу в которой при нажатии кнопки мыши в области окружности ее цвет меняется рандомно, если не в ее области то ничего не меняется. мне хотя бы узнать как считать координаты точки куда кликнули мышью. СРОЧНО!!!

Добавлено через 2 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
Uses GRAPHabc,CRT,abcOBJECTS,vcl;
const esc=27;
 
 
VAR
    N,X2,Y2,I:INTeGeR;
    X1,Y1,R:real;
    key:char;
 
BeGIN
 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.
вот программа. и в нее как то надо запихнуть мышь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2011, 16:04
Ответы с готовыми решениями:

Мышь работает через раз, то есть запустил ОС - мышь не работает, перезагрузил - мышь работает
Установлена Windows 7 со всеми последними обновлениями. Все всегда замечательно работало. Но с...

Безпроводная мышь A4TECH G9-500F (как вскрыть мышь)
проблема в том, что сдвинулся лазер в мышке, как то с боку стоит, все работает,решил просто...

Исчезла мышь из диспетчера устроиств, не работает мышь!
Помогите, у меня не работает мышь. До этого исправно работала, потом начала откючаться. Я через...

Нужно перевести графический режим турбо паскаля в паскаль ABC. Сам не могу разобраться с операторами ABC
Uses crt, graph; Var a, b, { Границы отрезка } r, r2, {...

3
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.12.2011, 18:11 2
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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.
1
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 8
15.12.2011, 21:37  [ТС] 3
Спасибо!!! да пофиг что после нажатия кнопки, думаю так сойдет))
0
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 8
17.12.2011, 13:54  [ТС] 4
вообщем покапался я и оказалось все я не так делал, надо было делать через объект и конструктор. в итоге покапался и перелопатил свою программу, но..... что то она не работает, выдает ошибку: "для объекта еще не был вызван конструктор" и опять же нужно чтобы мышь работала..... спасибо за ранее

вот код

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Uses GRAPHabc,CRT,Events;
const esc=27;
      left=77;
      right=75;
      
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,color:integer;
 constructor Create(x0,y0,c0:integer);
 procedure show;
 procedure hide;
 procedure move(newx,newy:integer);
 procedure HandleEvent(key:integer; r:real);
end;
 
constructor Tline.create(x0,y0,c0:integer);
begin x:=x0; y:=y0; color:=c0; end;
 
procedure Tline.show;
  begin
   SetPenColor(color);
   SetBrushColor(clWhite);
   Line(300,200,x,y);
end;
 
procedure Tline.Hide;
 begin
  SetPencolor(clWhite);
  SetBrushColor(color);
  Line(300,200,x,y);
end;
 
procedure Tline.move(newx,newy:integer);
 begin
  Hide; x:=newx; y:=newy; show;
end;
 
//ñîáûòèå íàæàòèÿ ëåâîé êíîïêè ìûøè
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;
 
procedure Tline.HandleEvent(key:integer; r:real);
 begin
 case key of
    Left:begin
         r:=r-0.2;
         x:=round(200*cos(r))+300;
         y:=round((300*cos(90-r))/2)+200;
         move(x,y);
         end;
  Right:begin
         r:=r+0.2;
         x:=round(200*cos(r))+300;
         y:=round((300*cos(90-r))/2)+200;
         move(x,y);
         end;
  end;
end;
 
VAR
    key:integer;
    A:Tline;
    r:real;
 
 
 
BeGIN
setWindowCaption('Õàáèðîâ ÇÏÈ-104');
circle(300,200,100);
OnMouseDown:=MouseDown;
lockdrawing;
A:=Tline.create(500,170,clBlue);
a.show;
repeat
 
key:=rdKey;
A.handleEvent(key,r);
until key=esc;
redraw;
end.
0
17.12.2011, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2011, 13:54
Помогаю со студенческими работами здесь

Как подключить новую мышь, что бы комп распознавал её как мышь, а не как USB Device.?
Здравствуйте! Я уже не знаю куда мне обращаться.. не кто не знает как решить мою проблему. Купил я...

Перевести код Pascal ABC NET в Pascal ABC
Помогите, плиз Сделал на Pascal ABC NET, но нужно его открыть в обычном Pascal ABC. Не компилит...

Перевод из Pascal ABC.net в Pascal ABC
Помогите, пожалуйста, перевести программу в Pascal ABC с Pascal ABC.net; если не трудно, объясните,...

Мышь ps/2
Добрый день! Как на неё установить драйвера, она оптическая, внизу горит? Она не движется....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru