Форум программистов, компьютерный форум CyberForum.ru

Медленная реакция программы на нажатие клавиши в игре - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как преобразовать LPCWSTR в char*? http://www.cyberforum.ru/cpp-beginners/thread1131318.html
Здравствуйте! Как преобразовать LPCWSTR в char*?
C++ При переворачивании массивов выходят такие цифры: "-858993469". Как с этим бороться? постоянно сталкиваюсь с такой проблемой: при переворачивании массивов выходят такие цифры: вот код: #include <stdio.h> #include <conio.h> #include <iostream> #include <iomanip> using namespace std; int main(void) http://www.cyberforum.ru/cpp-beginners/thread1131316.html
C++ Найти объем пирамиды, построенной на векторах как на сторонах
Трехмерные векторы заданы своими координатами, например, А = (ха, уа, za). Найти объем пирамиды, построенной на векторах А, В, С, как на сторонах.
Для каждого позитивного элемента определить, есть ли в массиве отрицательный элемент с противоположным значениям C++
Все детали задачи на фото Задачи перепечатываем в тему!
C++ Вычислить сумму элементов матрицы, образующих символ http://www.cyberforum.ru/cpp-beginners/thread1131279.html
Помогите, пожалуйста, с выполнением задания... 1)Задана матрица чисел: а Вычислить сумму элементов, образующих символ 2)Вычислить: x1,x2,.....xn заданы
C++ Обработка и сортировка графических файлов Создать программу для обработки и сортировки графических файлов_) Может есть какие мысли?? подробнее

Показать сообщение отдельно
dimcoder
Полярный
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,115
28.03.2014, 09:48  [ТС]     Медленная реакция программы на нажатие клавиши в игре
up...

Добавлено через 2 часа 46 минут
Появился другой вопрос (в самом низу), с предыдущим разобрался использовав GetAsyncKeyState()
Кликните здесь для просмотра всего текста
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
#include <graphics.h>
#include <iostream>
 
#include "player.h"
 
using namespace std;
 
int main()
{
    char ch = 0;
    
    initwindow(800, 600);
    
    Player player;
    
    DWORD lastPressed = 0, lastPressed2 = 0, lastPressed3 = 0, buf;
    
    while(true)
    {
        if (GetAsyncKeyState(0x41) && lastPressed + 10 < (buf = GetTickCount()))   //0x41 - a
        {
            lastPressed = buf;
            player.moveLeft();
        }
        if (GetAsyncKeyState(0x44)&& lastPressed2 + 10 < (buf = GetTickCount()))   //0x44 - d
        {
            lastPressed2 = buf;
            player.moveRight();
        }
        
        if (lastPressed3 + 10 < (buf = GetTickCount()))
        {
            lastPressed3 = buf;
            cleardevice();
        }
        player.draw();
    }
    return EXIT_SUCCESS;
}
Все работает на ура но как вы видите создаются 4 доп переменные buf, lastPressed1,2,3 что бы не слишком быстро и часто реагировал. Я попытался избавится от лишнего примерно так:
C++
1
2
3
4
5
6
7
8
9
10
while(true)
    {
        if (GetAsyncKeyState(0x41) && (10+lastPressed) < (lastPressed = GetTickCount()))
            player.moveLeft();
        if (GetAsyncKeyState(0x44) && (10+lastPressed2) < (lastPressed2 = GetTickCount()))
            player.moveRight();
        if ((10+lastPressed3) < (lastPressed3 = GetTickCount()))
            cleardevice();
        player.draw();
    }

Но думаю, вдруг такая вот конструкция это Undefinded Behaviour
C++
1
(10+lastPressed) < (lastPressed = GetTickCount())
UB или не UB?

Добавлено через 11 часов 13 минут
Судя по приоритету и ассоциативности, происходят следующие действия по порядку:
1) (10+lastPressed) ---- назовем результат r1
2) GetTickCount() ---- назовем это gtc
3) lastPressed = gtc --- это r2
4) r1 < r2 ---результат получен
Это правильно или все таки можно наступить на грабли?

Добавлено через 58 минут
Цитата Сообщение от dimcoder Посмотреть сообщение
грабли
однако, да, все таки грабли. Если выражение выше false и оно в цикле, то оно и в следующий раз будет false т.к. идет приравнивание.
Короче со всем разобрался, может кому то еще поможет.
Тема закрыта.
 
Текущее время: 09:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru