Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 3
Регистрация: 04.11.2016
Сообщений: 107

Анимация без мерцания

10.10.2017, 10:44. Показов 2437. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
код
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
100
101
102
103
uses GraphABC, ABCObjects;
var
  //ob:ObjectABC;
  intro := new PictureABC(-560,-60,'ava.png');
  mode:boolean;
  inkey:array[VK_Left..VK_Down] of real;
  angle:=0;
  treesx:array[0..256] of integer;
  treesy:array[0..256] of integer;
  trees:array[0..256] of ObjectABC;
  x,y:real;
  redr, inf:boolean;
  
label a;
 
procedure cash;
begin
  x := sin(angle / 180 * 3.14);
  y := 0-cos(angle / 180 * 3.14);
  x := round(x) * 0.01;
  y := round(y) * 0.01;
end;
 
procedure keydwn(key:integer);
begin
case key of
  VK_Down: inkey[key]:=1;
  VK_Left: inkey[key]:=1;
  VK_Up: inkey[key]:=1;
  VK_Right: inkey[key]:=1;
  VK_Tab: inf:=true;
end;
case key of
  VK_Space: if mode then mode := false else mode := true;
end
end;
 
procedure keyup(key:integer);
begin
case key of
  VK_Down: inkey[key] := 0;
  VK_Left: inkey[key] := 0;
  VK_Up: inkey[key] := 0;
  VK_Right: inkey[key] := 0;
  VK_Tab: inf:=false;
end;
end;
 
begin
onkeydown:=keydwn;
onkeyup:=keyup;
mode:=true;
intro.ScaleX := 2.5;
intro.Scaley := 2.5;
window.IsFixedSize := true;
sleep(100);
a:
clearWindow();
 
for var i:=0 to 256 do
begin
  treesx[i]:=random(window.Width);
  treesy[i]:=random(window.Height);
end;
lockdrawing;
coordinate.Origin:=window.Center;
redraw;
 
while mode do
begin
  for var i:= 0 to 256 do
  begin
  if redr then trees[i]:= new CircleABC(treesx[i],treesy[i], 10, color.Green);
  end;
  if inf then new TextABC(0,0,10,treesx[1]+', '+treesy[1]+', '+angle,Color.Black);
  if inkey[VK_Left]=1 then
  begin
  angle-=5;
  redraw;
  redr:=true;
  end;
  if inkey[VK_Right]=1 then
  begin
  angle+=5;
  redraw;
  redr:=true;
  end;
  if inkey[VK_Up]=1 then
  begin
  cash;
  for var i:= 0 to 256 do
  begin
  treesx[i]-=round(x*360);
  treesy[i]-=round(y*360);
  end;
  redraw;
  end;
  if min(angle, 360) = 360 then angle-=360;
  if max(angle, 0) = 0 then angle+=360;
  coordinate.Angle:=360-angle;
  sleep(2);
end;
end.
работает во!!!
только мерцание проблема
помогите сам мучился с синусами, оцените
кто может без мерцания дописать
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2017, 10:44
Ответы с готовыми решениями:

Стандартные библиотечные модули. Установить эффекты мерцания и изменения
Задание. Циклически заполняя строки выводить на экран свои данные: фамилию и имя. Вывод осуществляется дальше, если на запрос...

Анимация без мерцания
Привет, как реализовать перерисовку без мерцания(арканоид)? Двойная буферизация не помогает.

Рисовать без мерцания
Добрый день, посоветуйте что почитать плиииз. Пробовал рисовать - получаю мерцание. Не частое, но достаточно заметное. Пробовал...

7
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
10.10.2017, 12:52
'ava.png' - убедительная просьба выложить и сами картинки.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
11.10.2017, 07:52
Volobuev Ilya, картинка здесь не нужна… Её можно со спокойной совестью удалить!
0
0 / 0 / 3
Регистрация: 04.11.2016
Сообщений: 107
12.10.2017, 09:50  [ТС]
типа интро

Добавлено через 3 минуты
Цитата Сообщение от JuriiMW Посмотреть сообщение
Volobuev Ilya, картинка здесь не нужна… Её можно со спокойной совестью удалить!
честно говоря не вам судить картинки,
лучше бы помогли снизить нагрузку и убрать мерцание
заранее спасибо
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,059
12.10.2017, 10:01
Цитата Сообщение от blogerjackpraid Посмотреть сообщение
честно говоря не вам судить картинки,
Честно говоря, сначала подучите русский язык, а затем расскажите, что должна делать ваша программа?
Т.к. не понятен её алгоритм: Куча кода. Но не видно системы…

P.S. Да и картинки я не сужу… Ибо вашей картинки не видел… Да и не хочу видеть ;–)
0
11 / 11 / 11
Регистрация: 28.12.2015
Сообщений: 161
12.10.2017, 15:14
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses GraphABC, System.Drawing;
 
begin
// Колдуем изображение;
var bm:Bitmap:= new Bitmap(80, 60);
var gr:Graphics:= Graphics.FromImage(bm);
gr.CopyFromScreen(0, 0, 0, 0, bm.Size);
 
LockDrawing; // это чтобы было без мерцания.
for var y:= 0 to window.Height-60 do begin 
    ClearWindow();
    GraphBufferGraphics.DrawImage(bm,100,y);
    redraw;sleep(1) end;
end.
1
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
12.10.2017, 15:41
Alkkcan, учитесь форматировать код. Моя цель не придираться, а сделать так, чтобы код был красивый.

Добавлено через 24 секунды
blogerjackpraid, к вам это тоже относится. В большей степени.

Добавлено через 3 минуты
Правая кнопка мыши -> Форматировать код.
0
0 / 0 / 3
Регистрация: 04.11.2016
Сообщений: 107
14.10.2017, 12:18  [ТС]
Цитата Сообщение от Volobuev Ilya Посмотреть сообщение
Alkkcan, учитесь форматировать код. Моя цель не придираться, а сделать так, чтобы код был красивый.
дело не в форматировании,
компилятор быстро превратит любой красивый правильный код в ассемблер и людям будет всё равно

Добавлено через 3 часа 29 минут
Цитата Сообщение от JuriiMW Посмотреть сообщение
Честно говоря, сначала подучите русский язык, а затем расскажите, что должна делать ваша программа?
Т.к. не понятен её алгоритм: Куча кода. Но не видно системы…
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
100
101
102
103
uses GraphABC, ABCObjects;
var
  //ob:ObjectABC; // Сейчас не использую
  intro := new PictureABC(-560,-60,'ava.png'); // Заставка в начале
  mode:boolean; // Режим (игра/останов)
  inkey:array[VK_Left..VK_Down] of real; // Массив нажатых (но не входящих как procedure keydown)
  angle:=0; // Угол камеры, точнее мира который вращается вокруг
  treesx:array[0..256] of integer; // Два массива поз. деревьев отдельно
  treesy:array[0..256] of integer;
  trees:array[0..256] of ObjectABC; // Сами деревья
  x,y:real; // Поз. камеры
  redr, inf:boolean; // Редрав и информация о углу и х/у не оптимизировано
  
label a; // Возвращение после паузы
 
procedure cash; // Перегруженная подпрограмма
begin
  x := sin(angle / 180 * 3.14); // На угол 180 икс идёт полностью
  y := 0-cos(angle / 180 * 3.14); // На угол 0 игрек идёт полностью и так осуществляется хождение по карте
  x := round(x) * 0.01; // Ограничение ходьбы
  y := round(y) * 0.01;
end;
 
procedure keydwn(key:integer);
begin
case key of
  VK_Down: inkey[key]:=1; // Нажатые клавиши дают о себе знать
  VK_Left: inkey[key]:=1;
  VK_Up: inkey[key]:=1;
  VK_Right: inkey[key]:=1;
  VK_Tab: inf:=true;
end;
case key of
  VK_Space: if mode then mode := false else mode := true; // Пауза от пробела (не проработано)
end
end;
 
procedure keyup(key:integer);
begin
case key of
  VK_Down: inkey[key] := 0; // Отмена клавиш которые отжаты
  VK_Left: inkey[key] := 0;
  VK_Up: inkey[key] := 0;
  VK_Right: inkey[key] := 0;
  VK_Tab: inf:=false;
end;
end;
 
begin
onkeydown:=keydwn; // сами понимаете
onkeyup:=keyup;
mode:=true;
intro.ScaleX := 2.5;
intro.Scaley := 2.5;
window.IsFixedSize := true;
sleep(100);
a: // Фишка А
clearWindow();
 
for var i:=0 to 256 do
begin
  treesx[i]:=random(window.Width); // Случайный генер ландшафта (как на альфа пробную версию)
  treesy[i]:=random(window.Height);
end;
lockdrawing;
coordinate.Origin:=window.Center; // Координатный центр = центр окна
redraw;
 
while mode do // Цикл идёт до тех пор пока режим включен
begin
  for var i:= 0 to 256 do // Перерисовка
  begin
  if redr then trees[i]:= new CircleABC(treesx[i],treesy[i], 10, color.Green);
  end;
  if inf then new TextABC(0,0,10,treesx[1]+', '+treesy[1]+', '+angle,Color.Black); // Тот же inf
  if inkey[VK_Left]=1 then // Если нужная клавиша нажата
  begin
  angle-=5; // поворот и редрав
  redraw;
  redr:=true;
  end;
  if inkey[VK_Right]=1 then
  begin
  angle+=5;
  redraw;
  redr:=true;
  end;
  if inkey[VK_Up]=1 then
  begin
  cash;
  for var i:= 0 to 256 do
  begin
  treesx[i]-=round(x*360); // Нужные действия при перемещении земли
  treesy[i]-=round(y*360);
  end;
  redraw;
  end;
  if min(angle, 360) = 360 then angle-=360; // При выходе за границы транспортира изменяет число если оно больше 360
  if max(angle, 0) = 0 then angle+=360;      // и меньше нуля. На ход игры не влияет, но может убрать неизвестные мне баги
  coordinate.Angle:=360-angle; // Это оживление переменной, а 360 не знаю, списал с free basic
  sleep(2); задержка
end;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2017, 12:18
Помогаю со студенческими работами здесь

Перерисовка изображения без мерцания
Приветствую вас, господа. Вопрос следующий: Как выполнить перерисовку на PictureBox без мерцания (размер изображения относительно...

Перерисовка формы без мерцания
Например, выполняется такой простой код перерисовки ширины формы: while (Width > 400) { Width--; ...

Рисование движущихся изображений без мерцания
Тема уже старая! С какими средствами работать с 2д графикой, а именно рисовать где то на форма постоянно движущиеся изображения(из файла...

Как сделать анимацию без мерцания?
Возьмем простой пример есть рисунок bmp с нарисованным обьектом. Я хочу чтобы он например перемещался по экрану . Для этого загружаю...

Graphics вывод текста на экран без наложений и мерцания
подскажите как вывести время на экран поверх остальных окон чтобы не мерцало и не было наложений, вот так я пытался вывести текст ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru