Форум программистов, компьютерный форум, киберфорум
Наши страницы
PascalABC.NET
Войти
Регистрация
Восстановить пароль
 
 
Amirsultan
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 27
#1

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

09.04.2016, 14:34. Просмотров 637. Ответов 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.
Добрый день. Напишите пожалуйста программу, которая будет рисовать футбольный...

Дан двумерный массив, который содержит не более 20 строк и не более 5 столбцов
Дан двумерный массив, который содержит не более 20 строк и не более 5 столбцов....

можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и дополнительно мяч
можно ли подобрать игрушку, любую, кроме мяча, подходящую ребенку 3 лет, и...

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

31
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
16.04.2016, 19:09 #21
Цитата Сообщение от Amirsultan Посмотреть сообщение
Как я понял, в вашем коде
Да ни хрена ты не понял, нужно не понимать, а запустить и проверить.
0
Radmir2015
6 / 6 / 9
Регистрация: 16.04.2015
Сообщений: 121
17.04.2016, 00:12 #22
Amirsultan, проверил его код, все нормально работает, нажимаешь - круг делает один шаг, отжимаешь - второй в ту же сторону. Если не нужно, убери KeyUp.
0
Amirsultan
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 08:33  [ТС] #23
Выдает ошибку неизвестное имя vk_up
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
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 / 1
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 11:25  [ТС] #25
ааа емае я забыл что все с большей буквы
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
17.04.2016, 11:26 #26
Цитата Сообщение от Amirsultan Посмотреть сообщение
все с большей буквы
Да какая разница с какой буквы?
У меня в последнем коде с какой?
0
Amirsultan
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 11:34  [ТС] #27
Pascal не распознает(выдает ошибку"неизвестное имя vk") vk поэтому Vk_Up а не vk_up
0
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
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 / 1
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 11:45  [ТС] #29
Скрин ошибки
0
Миниатюры
Реализовать движение мяча более плавным  
Puporev
Модератор
54148 / 41781 / 28887
Регистрация: 18.05.2008
Сообщений: 98,330
17.04.2016, 11:53 #30
Это потому что у тебя не подключен модуль GraphABC;
0
Amirsultan
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 27
17.04.2016, 12:11  [ТС] #31
Подключил, все работает но никаких изменений нету. Что бы он нормально двигался по диагонали нужно быстро нажимать на обе клавиши, а мне надо что бы при зажимании обоих клавиш он двигался по диагонали.
Кстате, как сделать аналог земной гравитации?

Добавлено через 3 минуты
Пойдет?
Pascal
1
2
3
4
5
Line(1,425,900,425);
while Player.Position.Y<425 do
begin
Player.MoveTo(Player.Position.X,Player.Position.Y+10);
end;
0
Amirsultan
0 / 0 / 1
Регистрация: 09.04.2016
Сообщений: 27
24.04.2016, 16:18  [ТС] #32
Ребята, кто знает как сделать обьекты, "твердыми" для мяча?
Кстате, вот сырая версия:
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
Program game;
uses
  graphabc;
 
var
  x, y: integer; //Координаты моего мяча - переменные
  f: boolean; //Логическая переменная
  
  Up:= false; // Логические переменные определяющие нажатие кнопки
  Right:= false;
  Left:= false;
procedure KeyDown(key: integer); //процедура KeyDown производит какое либо действие во время нажатия кнопки
begin
  case key of
    VK_Up: Up := true;
    VK_Right: Right := true; // Присваивает ИСТИНУ переменным во время нажатия стрелок
    VK_Left: Left :=true;
  end;
end;
 
procedure KeyUp(key: integer);//процедура KeyUp производит какое либо действие во время отжатия кнопки
begin
  case key of
    VK_Up: Up := false;
    VK_Right: Right := false;//Присвоение ЛЖИ переменым во время отжатия стрелок
    VK_Left: Left :=false;
  end;
end;
 
begin //Начало тела программы
  x := 50;//Начальные координаты мяча
  y := 400;
  f := true; //Присваивание истины для выполнения цикла
  onkeydown := KeyDown; //Присвоение оригин/ой процедуре более простое название
  OnKeyUp := KeyUp;
  lockdrawing; //Оператор анимации
  repeat  //Цикличная анимация
    Window.Clear;
    SetBrushColor(clyellow); //Цвет мяча
    circle(x,y,25); //Сам мяч
    Rectangle(400,325,500,350);
    Line(1,425,900,425); //Линия "земли"
    if y<=396 then    //Аналог гравитации
    y:=y+4; 
    sleep(40);
    if Up then y := y-8; //Если UP/Right/Left - ИСТИНА то изменяет координаты мячика
    if Right then x := x+4;
    if Left then x:=x-4;
    redraw; // Оператор анимации
  until not f; //Окончание цикла
end.//конец
0
24.04.2016, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2016, 16:18
Привет! Вот еще темы с решениями:

Как сделать движение объекта плавным?
Как сделать движение объекта плавным. При передвижении объекта изображение...

Как зубчатый график сделать более плавным
Здравствуйте подскажите пожалуйста можно ли зубчатый график сделать более...

Движение мяча
Привет, знатоки windows forms!:) Мне нужно написать простую программу, в...

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


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

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

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