Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Бог C++ Builder
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 31
1

Нужно задать перемещение в игрушке

19.02.2011, 04:51. Просмотров 587. Ответов 5
Метки нет (Все метки)

Вообщем дело вот в чем.

Нужно задать перемещение в игрушке. Ниже небольшой пример, в качестве персонажа Button. Проблема в том, что если резко изменить направление возникает задержка. Подскажите, как от этого избавиться?
0
Вложения
Тип файла: rar KeyDown.rar (23.1 Кб, 31 просмотров)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2011, 04:51
Ответы с готовыми решениями:

Нужно поменять в готовой игрушке траекторию самолета
Люди, помогите пожалуйста. Нужно поменять в готовой игрушке траекторию самолета. Нужно сделать так,...

Как задать плавное перемещение картинки в PictureBox (или перемещение самого PictureBox) из точки А в точку Б по прямой?
Необходимо задать плавное перемещение по прямой линии из "А" в "Б" по нажатию "Button"

Как правильно задать http запрос, если нужно задать reqest header?
В программе нужно перезагрузить роутер, исспользуя httpanalazer получилось определить какой запрос...

Задать перемещение экрана в зависимости от движения персонажа
Доброго времени суток ! Решили тут с другом сделать флешку вместе:) Так как в програмировании в...

5
LK
Заблокирован
19.02.2011, 10:39 2
Попробовал , стрелки для быстроты давил двумя руками - так шустро бегает! - я не хохмлю - что аж глаза болят , так что причина в другом месте. Компилировал в RADXE, ошибок и замечаний во время компиляции не было, в коде ничего не менял, Виндовс 7, 2 проца, столько же памяти .
И хорошо бы для "тестирования" предоставлять ЕХЕ, скомпилированный в релиз, т.е., пригодный для запуска на компе, где не установлен Билдер.

Ну, а название темы - мерзкое , не удивился бы, если бы Вы остались без ответа, да и с ником Вы как-то не очень, но это, конечно, дело личное.
0
Бог C++ Builder
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 31
19.02.2011, 15:28  [ТС] 3
LK, спасибо! Насчет исполняемого файла учту.

Некоторым возможно прийдется увеличить интервал таймера, чтобы понять в чем дело.
0
FaB0SS
68 / 68 / 9
Регистрация: 10.02.2011
Сообщений: 131
19.02.2011, 15:40 4
Проблема в том, что если резко изменить направление возникает задержка. Подскажите, как от этого избавиться?
У тебя была ошибка в коде. Ты в ОнКейАп не проверял какая клавиша отжата.
Вот так будет правильнее:
код
C++
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
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
 
TForm1 *Form1;
 
int route;
int x = 2, y = 2;
int array[16][16] = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
 
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
 
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        route = Key;
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    if (route == VK_RIGHT && array[y][x + 1] == 0)
        x++;
    if (route == VK_LEFT && array[y][x - 1] == 0)
        x--;
    if (route == VK_DOWN && array[y + 1][x] == 0)
        y++;
    if (route == VK_UP && array[y - 1][x] == 0)
        y--;
    SpeedButton1->Left = x * 32 - 32;
    SpeedButton1->Top = y * 32 - 32;
}
 
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if (Key == route)
        route = NULL;
}

Заодно твой код немного укоротился
0
name?
201 / 172 / 52
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
19.02.2011, 15:52 5
C++
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
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
 
TForm1 *Form1;
 
AnsiString route;
 
int x = 2, y = 2;
bool right,up,down,left;
int array[16][16] = {{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
                     {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};
 
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
 
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    if (Key == VK_RIGHT)
        right=true;
    if (Key == VK_LEFT)
        left=true;
    if (Key == VK_DOWN)
        down=true;
    if (Key == VK_UP)
        up=true;
}
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
     if (Key == VK_RIGHT)
        right=false;
    if (Key == VK_LEFT)
        left=false;
    if (Key == VK_DOWN)
        down=false;
    if (Key == VK_UP)
        up=false;
}
void TForm1::move()
{
 if (right && array[y][x + 1] == 0)
        x++;
    if (left && array[y][x - 1] == 0)
        x--;
    if (down && array[y + 1][x] == 0)
        y++;
    if (up && array[y - 1][x] == 0)
        y--;
    SpeedButton1->Left = x * 32 - 32;
    SpeedButton1->Top = y * 32 - 32;
}
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
move();
}
//---------------------------------------------------------------------------
0
Бог C++ Builder
1 / 1 / 0
Регистрация: 19.02.2011
Сообщений: 31
19.02.2011, 18:42  [ТС] 6
Супер, всем спасибо!
0
19.02.2011, 18:42
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.02.2011, 18:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Нарисовать букву I, задать перемещение по экрану и поворот
Помогите пожалуйста... Задача такова: нарисовать английскую букву I, задать для нее перемещение по...

Задать перемещение объекта по траектории, повторяющей его форму
задать перемещение объекта по траектории, повторяющую его форму. На каждом углу поворота объект...

Построить изображение любой фигуры и задать ее перемещение по экрану
пожалуйста помогите!!! Построить изображение любой фигуры( фигуры различные) и задать ее...

Нужно задать sql запрос. не понимаю как. Нужно из одной таблицы вывести данные
В общем, нужно задать sql запрос где будет подсчитано общее кол-во записей (name - название работ)...


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

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

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