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

PascalABC.NET

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

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

09.04.2016, 14:34. Просмотров 584. Ответов 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
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 16:14  [ТС] #16
О, все получилось

Добавлено через 1 минуту
Спасибо, вам

Добавлено через 1 час 6 минут
А можно ли сделать нажатие 2 ух кнопок на одно действие?
Pascal
1
2
3
4
5
6
procedure KeyPress(Key:integer);
  begin
  case Key of
VK_W,VK_D:Player.MoveTo(Player.Position.X+10,Player.Position.Y-10);
end;
end;
0
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
16.04.2016, 16:21 #17
Цитата Сообщение от Amirsultan Посмотреть сообщение
KeyPress(Key:integer);
Что в лоб, что по лбу...
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 16:31  [ТС] #18
как бы это чуть ниже стоит
Pascal
1
OnKeyDown:=KeyPress;
0
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
16.04.2016, 16:34 #19
Цитата Сообщение от Amirsultan Посмотреть сообщение
А можно ли сделать нажатие 2 ух кнопок на одно действие?
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
var x,y,r,x1,y1,x2,y2:integer;
    f:boolean;
procedure KeyDown(key:integer);
begin
case key of
vk_up:if y>r then y:=y-5;
vk_down:if y<windowheight-r then y:=y+5;
vk_left:if x>r then x:=x-5;
vk_right:if x<windowwidth-r then x:=x+5;
vk_space:f:=false
end;
end;
procedure KeyUp(key:integer);
begin
case key of
vk_up:if y>r then y:=y-5;
vk_down:if y<windowheight-r then y:=y+5;
vk_left:if x>r then x:=x-5;
vk_right:if x<windowwidth-r then x:=x+5;
end;  
end;
begin
f:=true;
OnKeyDown := KeyDown;
OnKeyUp := KeyUp;
x:=windowwidth div 2;
y:=windowheight div 2;
r:=15;
setpenwidth(3);
setpencolor(clRed);
circle(x,y,r);
lockdrawing;
repeat
clearwindow;
circle(x,y,r);
sleep(100);
redraw;
until f=false;
end.
Можно двигать по диагонали
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
16.04.2016, 18:30  [ТС] #20
Как я понял, в вашем коде что при нажатии, что при отжатии клавиш он просто летит по диагонали. А мне нужно что бы это дело работало только при нажатии, а если кнопка не нажата, он стоял на месте.
0
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
16.04.2016, 19:09 #21
Цитата Сообщение от Amirsultan Посмотреть сообщение
Как я понял, в вашем коде
Да ни хрена ты не понял, нужно не понимать, а запустить и проверить.
0
Radmir2015
5 / 5 / 7
Регистрация: 16.04.2015
Сообщений: 120
17.04.2016, 00:12 #22
Amirsultan, проверил его код, все нормально работает, нажимаешь - круг делает один шаг, отжимаешь - второй в ту же сторону. Если не нужно, убери KeyUp.
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 08:33  [ТС] #23
Выдает ошибку неизвестное имя vk_up
0
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
17.04.2016, 09:32 #24
Не сочиняйте. Вот кусок Вашего кода
uses ABCObjects,GraphABC;
var Player:CircleABC;
Pascal
1
2
3
4
5
6
7
8
9
10
procedure Up(Key:integer);
begin
case Key of
vk_up:Player.MoveTo(Player.Position.X+0,Player.Position.Y-10);
end;
end;
begin
OnKeyDown:=UP;
Player:=CircleABC.Create(40,150,25);
end.
Никаких ошибок.
Вот вырезка из справки
0
Миниатюры
Реализовать движение мяча более плавным  
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 11:25  [ТС] #25
ааа емае я забыл что все с большей буквы
0
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
17.04.2016, 11:26 #26
Цитата Сообщение от Amirsultan Посмотреть сообщение
все с большей буквы
Да какая разница с какой буквы?
У меня в последнем коде с какой?
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 11:34  [ТС] #27
Pascal не распознает(выдает ошибку"неизвестное имя vk") vk поэтому Vk_Up а не vk_up
0
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
17.04.2016, 11:38 #28
Не сочиняй, Паскалю вообще пофиг в каком регистре написано, вот запусти же мой код
Pascal
1
2
3
4
5
6
7
8
9
10
procedure Up(Key:integer);
begin
case Key of
vk_up:Player.MoveTo(Player.Position.X+0,Player.Position.Y-10);
end;
end;
begin
OnKeyDown:=UP;
Player:=CircleABC.Create(40,150,25);
end.
0
Amirsultan
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 11:45  [ТС] #29
Скрин ошибки
0
Миниатюры
Реализовать движение мяча более плавным  
Puporev
Модератор
52380 / 40227 / 13565
Регистрация: 18.05.2008
Сообщений: 92,964
17.04.2016, 11:53 #30
Это потому что у тебя не подключен модуль GraphABC;
0
17.04.2016, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.04.2016, 11:53
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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