|
|
||||||
Ping Pong 2D, ncurses01.10.2013, 14:51. Показов 9290. Ответов 14
Метки нет (Все метки)
Написал наколенную реализацию игры в пинг понг в консоли Linux (поэтому там есть сторонний kbhit())
Прошу сильно не пинать за кучку костылей ![]()
Столкнулся с такой проблемой - платформа внизу медленно реагирует на нажатия стрелок на клавиатуре. Понял, что это связано с тем, что цикл из за usleep() медленно проходит итерацию. Уменьшил задержку, соответственно пришлось уменьшить скорость шарика, а то летал как бешеный. Но Часть проблемы осталась всё равно - платформа реагирует на нажатие клавиши, перемещаясь на одну единицу, затем замирает на долю секунды, и потом уже двигается, пока не отпустить клавишу. Оказалось связано с системными настройками на картинке. Если поставить короткую задержку, то всё почти идеально, но пользователь же не будет менять задержку ради игры. Вопрос: как работать с клавиатурой, чтобы не возникало задержек? Как делают это в реальных играх?
1
|
||||||
| 01.10.2013, 14:51 | |
|
Ответы с готовыми решениями:
14
Ping Pong У кого-нибудь заработал "Bluetooth QML Ping Pong example"? Qt5.4.1 ping pong |
|
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
|
|
| 01.10.2013, 17:57 | |
|
в реальных играх используют готовые игровые движки
1
|
|
|
|
|
| 01.10.2013, 21:12 | |
|
скорость движения привязана в играх к фпс.
То есть оценивается, сколько времени прошло с момента предыдущей отрисовки, это время, грубо говоря, и умножается на скорость движения объекта, чтобы получить величину, на которую требуется изменить его координаты. Добавлено через 58 секунд В твоём случае, usleep стоит убрать, а клавиатуру обрабатывать лучше не в цикле отрисовки
1
|
|
|
|
|
| 01.10.2013, 21:27 [ТС] | |
|
попробую. но без usleep() точка будет летать как бешенная, что в принципе можно регулировать коэффициентом. только вот проблемы это наверно не решит, ведь тут уж так задумано в системе - если вы зажмёте какую нибудь букву, печатая текст, она не начнет сразу же печататься в больших количествах, есть задержка, видимо, от ложных срабатываний.
Добавлено через 3 минуты как и ожидалось, эффекта нет, зато всё мерцает, из-за слишком быстрого обновления консоли. тут дело в использовании getch(). надо заменить её каким-то аналогом, который не будет считывать символы. хотелось бы узнать, есть ли такие?
0
|
|
|
|
||||||||
| 01.10.2013, 21:50 | ||||||||
|
А функцию эту ты взял откуда-то?
С количеством шагов в цикле/длиной задержек надо экспериментировать
1
|
||||||||
|
|
|
| 02.10.2013, 11:19 [ТС] | |
|
Нашел, видимо чья-то реализация для linux. Работает аналогично kbhit из conio.h
Добавлено через 6 минут Попробовал ваш вариант. Ничего не изменилось, па крайней мере на глаз не заметно. Моё мнение, здесь задержка в цикле не причем, она мала. Виновата задержка печати символов повторно при зажатой клавише. Как и в любом текстовом редакторе: зажметё букву "ы" - сперва сразу появится одна буква "ы", потом через некоторый промежуток времени начнут появляться другие. Вот именно этот промежуток и мешает.
0
|
|
|
Антикодер
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
|
|
| 02.10.2013, 11:29 | |
|
вкусно, но это не C++
0
|
|
|
|
||||||
| 02.10.2013, 12:03 [ТС] | ||||||
![]() на самом деле, это лишь проба пера, структуры вместо классов потому, что там, где начал писать, не было компилятора C++. Да и что это меняет. По сути ничего и не изменится, кроме структур. Вопрос не об этом.
0
|
||||||
|
Антикодер
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
|
|
| 02.10.2013, 14:53 | |
|
скажем это не по Страуструпу(создатель C++)
0
|
|
|
Антикодер
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
|
|
| 02.10.2013, 15:25 | |
|
0
|
|
|
|
|
| 02.10.2013, 18:09 [ТС] | |
|
Что тут изменится, если сделать по Страуструпу, кроме замены структур на классы? В данном конкретном случае и структура-то от класса ничем не отличается, кроме того, что в ней по дефолту всё public.
0
|
|
|
|
||
| 02.10.2013, 18:12 | ||
|
0
|
||
|
|
|
| 02.10.2013, 18:16 [ТС] | |
|
Она скомпилится и как си программа, и как с++ программа, а изначально задумана как программа на С. Просто когда писал первую реализацию, под рукой не было компилятора С++.XRuZzz просто намекнул мне, что я написал не в С++ стиле.
Добавлено через 57 секунд И мы опять отошли от темы. Видимо, на этот вопрос мне так просто ответа не получить.
0
|
|
| 02.10.2013, 18:16 | |
|
Помогаю со студенческими работами здесь
15
Ping-Pong - шарик, игрок Ping pong физика игры Игра Ping-Pong - сохранение и загрузка! Java Ping Pong с поддержкой сетевой игры Написал игру ping pong, но шарик застревает в ракетке Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|