С Новым годом! Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 9
1

Поворот паруса корабля на 180 градусов при приходе за рамки экрана и изменении движения корабля

26.04.2016, 12:01. Показов 2014. Ответов 6
Метки нет (Все метки)

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
uses
  GraphABC;
 
var
  x, y, dx: integer;
 
begin
  x := 200; y := 200;
  dx := 1;
  SetPenWidth(2);
  LockDrawing;
  
  repeat
    ClearWindow;
    { Корпус: }
    SetPenColor(clGreen);
    MoveTo(x, y);
    LineTo(x + 80, y + 80);
    LineTo(x + 280, y + 80);
    LineTo(x + 350, y);
    LineTo(x, y);
    { Каюта: }
    MoveTo(x + 60, y);
    LineTo(x + 60, y - 50);
    LineTo(x + 280, y - 50);
    LineTo(x + 280, y);
    { Парус: }
    SetPenColor(clBrown);
    MoveTo(x + 160, y - 50);
    LineTo(x + 150, y - 110);
    LineTo(x + 160, y - 150);
    LineTo(x + 160, y - 50);
    { Окна: }
    SetPenColor(clBlue);
    Circle(x + 100, y - 25, 10);
    Circle(x + 150, y - 25, 10);
    Circle(x + 200, y - 25, 10);
    Circle(x + 250, y - 25, 10);
    reDraw;
    x := x + dx;
    { При выходе за рамки окна меняем направление: }
    if (x + 350 > WindowWidth) or (x < 0) then dx := -dx 
  until false;
end.
Тут всё работает, кроме паруса. Ах да, и еще, если не сложно будет, можно ли сделать так, чтобы корабль двигался по волне?
Огромное спасибо.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2016, 12:01
Ответы с готовыми решениями:

В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля; 4 корабля?
помогите решить пожалуйста В порт в среднем приходит 3 корабля в день. Какова вероятность...

Поворот экрана stm32f429i-disso 180 градусов
Привет. В общем вопрос как повернуть экран на 180 градусов ? Использую библиотеки hal bsp.

Настройка управления и движения корабля
Всем добрый день! Возникла не большая проблема с управлением кораблем и его наклонами. Делаю 3d...

Построить модель движения корабля
Построить модель движения корабля

6
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 9
28.04.2016, 19:11  [ТС] 2
Может все-таки есть тот человек, который сможет помочь с этим заданием?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2016, 19:54 3
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Поворот паруса
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
uses
  GraphABC;
 
var
  x, y, dx, k: integer;
 
begin
  x := 200; y := 200;
  dx := 1;
  k:=1;
  SetPenWidth(2);
  LockDrawing;
 
  repeat
    ClearWindow;
    { Корпус: }
    SetPenColor(clGreen);
    MoveTo(x, y);
    LineTo(x + 80, y + 80);
    LineTo(x + 280, y + 80);
    LineTo(x + 350, y);
    LineTo(x, y);
    { Каюта: }
    MoveTo(x + 60, y);
    LineTo(x + 60, y - 50);
    LineTo(x + 280, y - 50);
    LineTo(x + 280, y);
    { Парус: }
    SetPenColor(clBrown);
    MoveTo(x + 160, y - 50);
    LineTo(x + 160+k*10, y - 110);
    LineTo(x + 160, y - 150);
    LineTo(x + 160, y - 50);
    { Окна: }
    SetPenColor(clBlue);
    Circle(x + 100, y - 25, 10);
    Circle(x + 150, y - 25, 10);
    Circle(x + 200, y - 25, 10);
    Circle(x + 250, y - 25, 10);
    sleep(50);
    x := x + dx;
      { При выходе за рамки окна меняем направление: }
    if (x + 350 > WindowWidth) or (x < 0) then
     begin
      dx := -dx;
      k:=-k;
     end;
    reDraw;
 
 
  until false;
end.
1
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
28.04.2016, 20:16 4
Подобие волны
Pascal
13
14
15
16
17
....
repeat
  y:=round(y+sin(x*100));
    ClearWindow;
....
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 9
28.04.2016, 20:24  [ТС] 5
А, если текстом, то, как я понял, нужно саму ось x, по которой двигается кораблик представить как синусоиду? Или я что-то не до конца понял?
0
Почетный модератор
64303 / 47600 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
28.04.2016, 21:13 6
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

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
uses
  GraphABC;
procedure more;
var x,y:integer;
begin
setpencolor(clBlue);
x:=0;
while x<=windowwidth+1 do
 begin
  y:=270-round(sin(x/20)*10);
  if x=0 then moveto(x,y)
  else lineto(x,y);
  x:=x+1;
 end;
line(1,250,1,windowheight);
line(windowwidth,250,windowwidth,windowheight);
line(0,windowheight,windowwidth,windowheight);
floodfill(350,350,clBlue);
end;
procedure korabl(x,y,k:integer);
begin
SetPenWidth(2);
SetBrushStyle(bsClear);
// Корпус:
SetPenColor(clGreen);
MoveTo(x, y);
LineTo(x + 80, y + 80);
LineTo(x + 280, y + 80);
LineTo(x + 350, y);
LineTo(x, y);
floodfill(x+5,y+5,clGreen);
// Каюта:
MoveTo(x + 60, y);
LineTo(x + 60, y - 50);
LineTo(x + 280, y - 50);
LineTo(x + 280, y);
// Парус:
SetPenColor(clBrown);
MoveTo(x + 160, y - 50);
LineTo(x + 160+k*10, y - 110);
LineTo(x + 160, y - 150);
LineTo(x + 160, y - 50);
// Окна:
SetPenColor(clBlue);
Circle(x + 100, y - 25, 10);
Circle(x + 150, y - 25, 10);
Circle(x + 200, y - 25, 10);
Circle(x + 250, y - 25, 10);
end;
var
  x, y, dx, k: integer;
 
begin
  x := 200; y := 200;
  dx := 1;
  k:=1;
  LockDrawing;
  repeat
    ClearWindow;
    more;
    korabl(x,y,k);
    sleep(20);
    x := x + dx;
      { При выходе за рамки окна меняем направление: }
    if (x + 350 > WindowWidth) or (x < 0) then
     begin
      dx := -dx;
      k:=-k;
     end;
    reDraw;
  until false;
end.
0
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 9
29.04.2016, 18:17  [ТС] 7
Либо компилятор у меня до конца не работает с кодом, либо отрисовка замирает на начальном значении?
0
29.04.2016, 18:17
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2016, 18:17
Помогаю со студенческими работами здесь

Вывести на экран новое направление движения корабля
С клавиатуры вводится направление движения корабля: ...

Canvas вектор и скорость движения корабля. (игра)
Добрый день господа. Требуется ваша подсказка. Хочу понять как правильно рассчитывать вектор...

Поворот матрицы на 180 градусов.
Создайте квадратный массив из N строк и N столбцов,состоящую из натуральных чисел.Поверните его на...

Поворот картинки на форме на 90.180 градусов
Поворот картинки на форме! как эт сделать!


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Блоги программистов
Подброка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
Применение компонентов PrimeVue в Vue.js 3 на TypeScript
BasicMan 04.01.2025
Введение в PrimeVue и настройка окружения PrimeVue представляет собой мощную библиотеку компонентов пользовательского интерфейса для Vue. js 3, которая предоставляет разработчикам богатый набор. . .
Как стать Senior developer
cpp_developer 04.01.2025
В современной индустрии разработки программного обеспечения позиция Senior Developer представляет собой не просто следующую ступень карьерной лестницы, а качественно новый уровень профессионального. . .
Что известно о дате выхода Windows 12 и чего от нее ждать
IT_Exp 04.01.2025
В мире технологий постоянно происходят изменения, и операционные системы не являются исключением. Windows 11, выпущенная в октябре 2021 года, принесла множество инноваций и улучшений, но. . .
Что новенького в .NET Core 9
Programming 04.01.2025
Обзор ключевых изменений в . NET Core 9 Платформа . NET Core продолжает активно развиваться, и версия 9 представляет собой значительный шаг вперед в эволюции этой технологии. Новый релиз. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru