Форум программистов, компьютерный форум, киберфорум
Наши страницы

PascalABC.NET

Войти
Регистрация
Восстановить пароль
 
 
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
#1

Реализовать движение мяча более плавным - PascalABC.NET

09.04.2016, 14:34. Просмотров 607. Ответов 31
Метки нет (Все метки)

Вот код:
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
Program game;
uses crt,GraphABC;
const
speed=1;
var x,d,c,y: integer;  a:char;
begin
     LockDrawing;
     x:=51; d:=1; y:=576; c:=2;
     while((x>50) and (x<800)) do
          begin
          x:=x+d;
          y:=y-c;
          setwindowsize(900,500);
          ClearWindow;
          line(0,318,1600,318);
          FloodFill(0,400,clred);
          circle(x+10,y-288,30);
       while y<490 do
            begin
            x:=x+d;
            x:=x+10;
            y:=y+100;
            Sleep(100) ;
            end;
            if keypressed then
            begin a:=readkey;
            if a=chr(72) then x:=x*2;
            end;
            Redraw;
    end;
    end.
P.S Я тот еще чайник в программирововании

Добавлено через 1 минуту
а и еще на if keypressed не обращайте внимания это место не доделано
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2016, 14:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Реализовать движение мяча более плавным (PascalABC.NET):

Изобразить движение мяча и отскакивание от стенок - Pascal
Проверьте программу, выводящую мяч (окружность красного цвета), катящийся по горизонтальной линии и отражающийся от вертикальных стенок...

Как реализовать одновременное движение многих объектов, один из которых управляется клавиатурой - Pascal
Скорость объектов разная (за один проход делают разное количество движений). Движения наложены на матрицу, так что движение тела должно...

Рисунок мяча в Pascal. - Pascal
Добрый день. Напишите пожалуйста программу, которая будет рисовать футбольный мяч летающий по футбольному полю(разметка футбольного...

Дан двумерный массив, который содержит не более 20 строк и не более 5 столбцов - PascalABC.NET
Дан двумерный массив, который содержит не более 20 строк и не более 5 столбцов. Найти минимальный элемент и поменять его местами со вторым...

Реализовать движение футбольного мяча после удара - Pascal ABC
Написать программу, реализующую движение футбольного мяча после удара(задается начальное положение мяча и вектор скорости) в процессе...

Как сделать движение объекта плавным? - C#
Как сделать движение объекта плавным. При передвижении объекта изображение немного дергается(двойная буферизация включена).

31
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,956
09.04.2016, 17:42 #2
А что Вы вообще творите? Какая-то дребедень написана типа
Pascal
1
2
setwindowsize(900,500);
line(0,318,1600,318);//а что не 3600?
0
ChiliPalmer
20 / 20 / 5
Регистрация: 09.04.2016
Сообщений: 145
09.04.2016, 18:29 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Чтобы мячик был "плавнее" - меняй его координаты на меньшую константу.
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
11.04.2016, 12:06  [ТС] #4
Пытаюсь поменять значение на меньшее типа 0,1 а оно выдает ошибку "надо реал" хотя все переменные риал
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,956
11.04.2016, 12:13 #5
Цитата Сообщение от Amirsultan Посмотреть сообщение
типа 0,1
Меньше чем 1 нельзя, не бывает 0.1 пикселя.

Добавлено через 4 минуты
А что Вам нужно нарисовать? Если движение мяча вперед и вверх-вниз, то рисуйте его движение по синусоиде.
0
ChiliPalmer
20 / 20 / 5
Регистрация: 09.04.2016
Сообщений: 145
11.04.2016, 14:56 #6
Вы в строках кода # 20 - 22 меняете координаты Х и Y. Причем координату Х вы меняете не только на D, но и потом еще на 10, а координату Y вы меняете на 100. Вам не кажется, что сильный дисбаланс(в 10 раз) соотношении размеров смещения координат?
И еще можно слип уменьшить(например в 2 раза), тогда временная задержка будет гораздо меньше и перемещение объекта на экране не будет выглядеть как резкое "дерганое".
0
Reckit
22 / 22 / 11
Регистрация: 05.09.2015
Сообщений: 142
11.04.2016, 15:58 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
uses
  GraphABC,
  ABCObjects,
  Timers;
 
var Haha:CircleABC;
var Vahah:Timer;
 
procedure Vuhah;
begin
  Haha.MoveTo(Haha.Position.X+1,Haha.Position.Y);
end;
 
begin
  Haha:=CircleABC.Create(0,Round(Window.Height/2),8,clWhite);
  Haha.BorderColor:=clBlack;
 
  Vahah:=new Timer(1,Vuhah);
  Vahah.Start;
end.
Добавлено через 1 минуту
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses
  GraphABC,
  ABCObjects;
 
var Haha:CircleABC;
 
procedure Vuhah;
begin
  for var t:=0 to Window.Width-1 do
  begin
    Sleep(1);
    Haha.MoveTo(Haha.Position.X+1,Haha.Position.Y);
  end;
end;
 
begin
  Haha:=CircleABC.Create(0,Round(Window.Height/2),8,clWhite);
  Haha.BorderColor:=clBlack;
 
  Vuhah;
end.
1
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 13:50  [ТС] #8
Тот код совсем плох, мне же игра нужна, а не анимация с кнопками. Пошел переделывать, спасибо за советы.
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,956
16.04.2016, 13:53 #9
Ты нас спросил (дословно).
Цитата Сообщение от Amirsultan Посмотреть сообщение
Вот код:
.....................................................
P.S Я тот еще чайник в программирововании
а и еще на if keypressed не обращайте внимания это место не доделано
И что ты хотел получить? Так-то вытри сопли и иди лесом.
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 14:26  [ТС] #10
Я просто информировал вас об этом.

Добавлено через 1 минуту
Кстате, как сделать так что бы при нажатии той или иной кнопки он двигался (менял координату)?
If keypressed пойдет?

Добавлено через 2 минуты
Pascal
1
2
3
4
5
6
7
procedure Move UP;
    begin 
      if keypressed then
      begin a:=readkey;
      if a=chr(72) then Player.MoveTo(Player.Position.X+0,Player.Position.Y-10)
      end;
    end;
Правильно?

Добавлено через 4 минуты
Правильно?
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,956
16.04.2016, 14:27 #11
Зачем в АВС.net использовать CRT?
Есть события onkeyprees, onkeydown. Смотрите Справку.
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 14:40  [ТС] #12
Спасибо

Добавлено через 10 минут
Получается
if procedure OnKeyPress(72:char) then Player.MoveTo(Player.Position.X+0,Player.Position.Y-10)
?
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,956
16.04.2016, 14:51 #13
Pascal
1
2
3
4
5
6
7
8
9
Procedure KeyPress(key:char);
begin
if key=#72 then Player.MoveTo(Player.Position.X+0,Player.Position.Y-10);
end;
//основная программа
begin
onkeypres:=KeyPress;
..............
end.
Я же писал, посмотри Справку.
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 14:56  [ТС] #14
Прочитал пример и справку, все равно выдает "ожидался оператор"
Вот код:
Pascal
1
2
3
4
5
6
7
8
9
10
11
uses ABCObjects,GraphABC;
var Player:CircleABC;
procedure KeyPress(Key:integer);
begin
case Key of
VK_Up:Player.MoveTo(Player.Position.X+0,Player.Position.Y-10);
OnKeyDown:=KeyPress;
end;
begin
Player:=CircleABC.Create(40,50,25);
end.
0
Puporev
Модератор
53013 / 40824 / 14068
Регистрация: 18.05.2008
Сообщений: 94,956
16.04.2016, 14:59 #15
Цитата Сообщение от Amirsultan Посмотреть сообщение
Прочитал пример и справку,
Да ни хрена ты не прочитал.

Добавлено через 1 минуту
Pascal
1
2
3
4
5
6
7
8
9
procedure KeyDown(Key:integer);
begin
case Key of
VK_Up:Player.MoveTo(Player.Position.X+0,Player.Position.Y-10);
end;
begin
OnKeyDown:=KeyDown;
Player:=CircleABC.Create(40,50,25);
end;
1
16.04.2016, 14:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2016, 14:59
Привет! Вот еще темы с ответами:

Движение мяча - Delphi
Здравствуйте, помогите создать приложение, в окне которого отображается анимация — движение мяча, брошенного под острым углом к горизонту.

.NET 4.x Движение мяча - C#
Привет, знатоки windows forms!:) Мне нужно написать простую программу, в которой в форме существует один об'ект (picturebox либо...

Как сгладить пики на графике чтобы он выглядел более плавным? - MathCAD
Здраствуйте! Подскажите пожалуйста, как сгладить пики на графике чтобы он выглядел более плавным? Но чтобы при этом не изменялся...

Построить движение баскетбольного мяча - Turbo Pascal
Привет,может у кого осталось программа ,про данной модели. Что нить подобное,буду благодарен ,Вот данные Икс 0 = 0 Игрек = 2,5 ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru