0 / 0 / 0
Регистрация: 29.08.2020
Сообщений: 2
1

Нужно поменять на другую фигуру(во вложениях)

08.09.2020, 12:45. Показов 1225. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
uses GraphWPF, Timers;
 
const
  L = 50;
  dMove = 10;
  dSpeed = 0.2;
  dAngle = pi/18;
  dRotation = 0.01;
 
type
  tFigure = class
    x, y, angle, dx, dy, rotation : Real;
    
    constructor;
    begin
      x := Window.Width/2;
      y := Window.Height/2;
      angle := 0;
      dx := 0;
      dy := 0;
      rotation := 0;
    end;
    
    procedure Draw;
    var p:array of point;
      u:real;
begin
Window.Clear(rgb(255,255,255));
Pen.Color := rgb(0,0,0);
 Pen.Width := 2;
 u:=pi/2;
 setlength(p,6);
 for var i:=0 to 5 do
   begin
     p[i].x:=x+round(L*cos(angle+u));
     p[i].y:=y-round(L*sin(angle+u));
     u:=u+2*pi/5;
      end;
      polyline(p);
      line(p[0].x,p[0].y,p[2].x,p[2].y);
      line(p[0].x,p[0].y,p[3].x,p[3].y);
      line(p[1].x,p[1].y,p[4].x,p[4].y);
      end;
    
    procedure Step;
    begin
    
      if dx <> 0 then
        if x + dx < 0 then (x,dx) := (1,0)
        else if x + dx > Window.Width then (x,dx) := (Window.Width - 1,0)
        else x += dx;
        
      if dy <> 0 then
        if y + dy < 0 then (y,dy) := (1,0)
        else if y + dy > Window.Height then (y,dy) := (Window.Height - 1,0)
        else y += dy;
        
      angle += rotation;
        
      Draw;
    end;
  end;
 
var f := New tFigure;
var t := New Timer(10, f.Step);
 
procedure KeyDown(k : Key);
begin
  case k of
    Key.Left  : if f.x - dMove > 0 then f.x -= dMove else f.x := 1;
    Key.Right : if f.x + dMove < Window.Width then f.x += dMove else f.x := Window.Width - 1;
    Key.Up    : if f.y - dMove > 0 then f.y -= dMove else f.y := 1;
    Key.Down  : if f.y + dMove < Window.Height then f.y += dMove else f.y := Window.Height - 1;
    Key.A     : f.dx -= dSpeed;
    Key.D     : f.dx += dSpeed;
    Key.W     : f.dy -= dSpeed;
    Key.S     : f.dy += dSpeed;
    Key.Q     : f.rotation += dRotation;
    Key.E     : f.rotation -= dRotation;
    Key.LeftCtrl : f.angle += dAngle;
    Key.RightCtrl : f.angle -= dAngle;
    Key.Escape : Halt;
    Key.Space : (f.dx,f.dy,f.rotation) := (0,0,0);
  end;
end;
 
begin
  Window.Caption := 'Движение стрелками / направление - W,A,S,D. Вращение - Ctrl / направление Q,E. Space - стоп. ESC - выход.';
  OnKeyDown := KeyDown;
  t.Enabled := True;
end.
Изображения
 
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2020, 12:45
Ответы с готовыми решениями:

нужно переделать программу под другую фигуру
фигура и программа в приложении uses GraphWPF, Timers; const L = 50; dMove = 10; ...

Проверить, бьет ли ферзь другую фигуру
Требуется определить, бьет ли ферзь, стоящий на клетке с указанными координатами (номер строки и...

Определить, бьет ли Конь другую фигуру
Вам дают четыре числа, координаты коня и другой фигуры. Вы должны определить, бьет ли конь вторую...

Определить бьет ли ладья с заданными координатами другую фигуру
Требуется определить,бьет ли ладья с заданными координатами x1 y1 другую фигуру стоящую на клетке...

2
Почетный модератор
64299 / 47594 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.09.2020, 13:22 2
Лучший ответ Сообщение было отмечено NastyaBad как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure Draw;
var p:array of point;
    u:real;
begin
Window.Clear(rgb(255,255,255));
Pen.Color := rgb(0,0,0);
Pen.Width := 2;
u:=pi/2;
setlength(p,6);
for var i:=0 to 5 do
 begin
  p[i].x:=x+round(L*cos(angle+u));
  p[i].y:=y-round(L*sin(angle+u));
  u:=u+2*pi/5;
 end;
line(p[0].x,p[0].y,p[2].x,p[2].y);
line(p[0].x,p[0].y,p[3].x,p[3].y);
line(p[1].x,p[1].y,p[4].x,p[4].y);
line(p[1].X,p[1].Y,p[2].X,p[2].y);
line(p[2].X,p[2].Y,p[3].X,p[3].y);
line(p[3].X,p[3].Y,p[4].X,p[4].y);
end;
1
0 / 0 / 0
Регистрация: 29.08.2020
Сообщений: 2
09.09.2020, 15:18  [ТС] 3
Puporev лучший человек на земле!
0
09.09.2020, 15:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2020, 15:18
Помогаю со студенческими работами здесь

Определить, бьет ли ладья другую фигуру (правильно ли написан код?)
Требуется определить, бьет ли ладья, стоящая на клетке с указанными координатами (номер строки и...

Нарисовать фигуру так, чтобы она закрывала другую, нарисованную ранее
Доброго времени суток! У меня вопрос, как нарисовать фигуру так, чтобы она закрывала собой фигуру...

Нужно нарисовать фигуру
Нужно нарисовать фигуру. Прикреплен файл с заданием

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

Нужно построить в полярных координатах фигуру!
ρ^2 = (2а)^2 cos2 φ это лемниската Бернулли. Объясните, как она вообще строится и как это...

Нужно накрыть объемную фигуру текстурами
помогите плз, нужно накрыть текстурами #pragma comment(lib, &quot;opengl32.lib&quot;) #pragma...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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