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

нужно переделать программу под другую фигуру

27.08.2020, 09:32. Показов 1143. Ответов 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
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;
    begin
      Window.Clear(rgb(0,0,0));
      Pen.Color := rgb(255,255,255);
      Pen.Width := 2;
      Line(x,y,x+L*cos(angle),y-L*sin(angle));
      Line(x,y,x+L*cos(angle+pi/3*2),y-L*sin(angle+pi/3*2));
      Line(x,y,x+L*cos(angle-pi/3*2),y-L*sin(angle-pi/3*2));
    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
27.08.2020, 09:32
Ответы с готовыми решениями:

Нужно переделать программу под неполный условный оператор
program z3; var x,y,w,t:real; begin Writeln('Введите значение w,t'); readln(w,t); if...

Нужно переделать программу с С++ под С
Доброе утро форумчани! Есть программа написанная на С++ #include &lt;iostream&gt; #include &lt;string&gt;...

нужно переделать консольную программу под Windows forms. на С++
Программа работает с файлом ТХТ, в файл вводится массив, при этом размер массива определяется...

Нужно переделать, под программу с использованием механизма подпрограмм.
Даны натуральные числа A1,…An. Найти максимальный элемент массива. Нужно переделать, под...

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

Решение

В процедуре Draw вместо написанной фигуры напишите эту
Нарисовать фигуру
Если мой код то так.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure Draw;
var p:array of point;
      u:real;
begin
Window.Clear(rgb(0,0,0));
Pen.Color := rgb(255,255,255);
 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;
0
5077 / 2649 / 2349
Регистрация: 10.12.2014
Сообщений: 10,024
01.09.2020, 16:00 3
Puporev, там координаты можно оставлять действительные…
… ну и у вас появится мерцание ;–(

А вот мой код в моём коде требует следующих изменений:

Pascal
9
const r = 100;
Pascal
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    function х(n : Integer) := x + r*sin(angle+pi*n*0.4);
    function у(n : Integer) := y - r*cos(angle+pi*n*0.4);
 
    procedure Draw;
    begin
      Window.Clear(rgb(0,0,0));
      Pen.Color := rgb(255,255,255);
      Pen.Width := 2;
      
      line(х(0),у(0),х(1),у(1));
      line(х(0),у(0),х(2),у(2));
      line(х(0),у(0),х(3),у(3));
      line(х(0),у(0),х(4),у(4));
      line(х(1),у(1),х(2),у(2));
      line(х(1),у(1),х(4),у(4));
      line(х(2),у(2),х(3),у(3));
      line(х(3),у(3),х(4),у(4));
    end;
 
    procedure Step;
И поменять:
Pascal
60
      Draw;
На
Pascal
60
      Redraw(Draw)
Ибо старая программа не была рассчитана на продолжительные расчёты и большую фигуру…
0
01.09.2020, 16:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2020, 16:00
Помогаю со студенческими работами здесь

нужно переделать код в другую среду
переделайте под code blocks, пожалуйста буду признателен #include &quot;stdio.h&quot; #include...

Нужно переделать под С
Нужно код с++ переделать на с #include &lt;stdio.h&gt; #include &lt;locale.h&gt;//для языка #include...

Под С++ нужно переделать
while pos(' ',s)&gt;0 do{пока есть пробелы} begin s1:=copy(s,1,pos(' ',s)-1);{копируем первое...

Нужно переделать под БИХ фильтр
Привет, задача такая: нужно переделать цикл в этом коде под БИХ фильтр, сейчас он сделан под КИХ, и...

Нужно переделать массив под строки
У меня вводится по одному символу, а надо, чтобы вводилось строкой для работы фильтра: class...

Нужно переделать под 2х мерный массив
задача следующая, используя функции сортировки масcива, отсортировать строки матрицы есть вот...


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

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

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