![]() |
Re: Алгоритм игры Lines
Цитата:
Цитата:
Цитата:
|
Re: Алгоритм игры Lines
Всем привет
Вот не понял, что я тут назимичел, вероятно что- нибудь не так, потому что при вводе с клавиатуры прога зависает: Вот как я получаю координаты шара с клавиатуры (Enter): Из "Var.h": Цитата:
Цитата:
Цитата:
|
Re: Алгоритм игры Lines
Цитата:
Таким образом, если у тебя при входе в цикл sphere_is равна 0, получается бесконечный цикл из разряда while(1) { } |
Re: Алгоритм игры Lines
А че можно сделать с этим циком, чтобы он проверял, взят ли шар. Может OnTimer вызывать в содержимом этого цикла?;)
|
Re: Алгоритм игры Lines
Для начала зачем тебе проверять, убрали ли из ячейки шар?
Может, можно найти более простой вариант решения задачи, чем цикл? |
Re: Алгоритм игры Lines
Цитата:
Задача этого цикла дождаться, когда пользователь нажмет Enter, и если там, где был курсор на момент нажатия Enter был шар, то передать управление дальше, а если шара нет, то опять ждать, когда опять будет нажата Enter. Цитата:
|
Re: Алгоритм игры Lines
Код:
while (shphere_is!=true )//Проверка, взят ли шар или там ни чего нет если нажат ентер и клетка не пуста, то ... |
Re: Алгоритм игры Lines
Именно это и было у меня до того: а фигня тут в том, что пока работает цикл, нажате на клавиши не проверяется, хоть ты по ним кувалдой стучи.
Получается следующее: запускается цикл, проверяется, нажата ли клавиша, показывается, что не нажата, цикл идет по второму кругу, опять проверяется (пользователь уже по Enter кувалдой стучит) - и опять не нажата (так как выполняется цикл, и следовательно не проверяется нажатие на клавишы), и опять цикл идет по новой и так до бесконечности! Так вот как то надо сделать, чтоб и цикл работал, и нажате на клавишы проверялось, а для этого (вероятно) надо разместить проверку на нажатие клавиш прямо внутри цикла, то есть скопировать туда содержимое функции OnTimer (). Но это невозможно, так как программный код увеличится приверно в 2 раза! Может есть другие идеи?;) |
Re: Алгоритм игры Lines
А все таки, когда может проверяться нажатеие на клавишы?;)
Только когда не выполняется ни чего дрогого (в данном случа цикл), или всегда должно проверяться? |
Re: Алгоритм игры Lines
так. примерная структура программы на псевдокоде:
Код:
WinMain |
Re: Алгоритм игры Lines
я считаю раз ты взялся за С++ то надо применять ООП-мышление. Так создай класс CField в котором будут содержаться классы ячеек поля игры CCell. Отдельный класс для шаров CBall
[highlight = cpp] class CField { // здесь весь код что относится ко всему полю... } class CCell { // здесь все что относится к ячейке } class CBall { // здесь все что относится к шару, координаты там ,цвет, активен ли он и т.д } [/hightlight] |
Ответ: Алгоритм игры Lines
Вложений: 1
В связи с неудобством работы с клавиатурой для перемещения по игровому полю и большим количеством глюков при вводе с клавиатуры стрелками и кнопкой Enter, из-за которых работа стоит практически с лета, я решил отказаться от клавиатуры и использовать для перемещиния по полю мышь с самонарисованным курсором. Но! Проблема в том, что сцена у меня трехмерная, а мышь перемещается только в двухмерном режиме "по экрану".
Вложение 4174 Работа с проекциями провалилась, так как ничего не работало. У меня есть идея проверять пересечение нормали к экрану с клетками игрового поля, но при рисовании координаты сместились так, что отстледить и выяснить, куда именно провести прямую, что бы она была нормалью к экрану невозможно. Можно ли как-то перейти к глобальным координатам, чтоб нормалью к экрану была какоя-то ось, например z. Есть две функции: glPushMatrix (); она сохраняет координаты и glPopMatrix (); она возвращает координаты, сохраненные в предыдущей функции. Можно ли так проверять нахождение курсора над клеткой поля или есть идеи лучше?:) |
Ответ: Алгоритм игры Lines
glPushMatrix, если не ошибаюсь, сохраняет текущую матрицу проекции в стеке, а glPopMatrix, соответственно, достает ее из стека и восстанавливает.
То есть можно сделать так: Код:
<меняем матрицу проекции> Хотя если у тебя получится, расскажешь, как. :) P.S.: где-то видел какую-то статью на тему переноса 2д координат мыши в сцену, если найду - дам линк. |
Ответ: Алгоритм игры Lines
Цитата:
|
Ответ: Алгоритм игры Lines
Цитата:
Если да, то можно брать координаты камеры и пускать из этих координат луч в направлении взгляда камеры. Цитата:
|
Ответ: Алгоритм игры Lines
Как загрузить свой курсор мыши?;)
|
Ответ: Алгоритм игры Lines
Не пробовал glUnProject использовать?
http://www.gamedev.net/community/for...topic_id=65558 |
Ответ: Алгоритм игры Lines
Это преобрзование 3D координат в 2D (проекция на экран)?;)
|
Ответ: Алгоритм игры Lines
Цитата:
Цитата:
|
Ответ: Алгоритм игры Lines
Все!
Пришел опять к проекциям. Как мне на основании координат щелчка мыши (x,y) получить z координату пересечения с полем (по которой уже надо вычислять, какая это клетка поля).;) см. картинку из сообщения №76 Может есть отдельная функция для этого в OpenGl?;) |
Ответ: Алгоритм игры Lines
Alex_90, а ты уже "2Д линии" сделал? :offtop:
|
Ответ: Алгоритм игры Lines
Цитата:
Я вроде как 3D делаю! А откуда информация о 2D?;) |
Ответ: Алгоритм игры Lines
Как проверить, есть ли в данной точке что либо (плоскость) или ничего нет. ;)
Нужно для того, чтобы проверить пересечение луча, выпущенного из координат щелка мыши под прямым углом к экрану какой либо плоскостью (и соответствено получения z координаты этой плоскости).:) |
Ответ: Алгоритм игры Lines
В OpenGl есть матрица проекций GL_PROJECTION.
Как ее получить в массив?;) (с целью домножить на нее матрицу игрового поля, чтоб получилась проекционная картинка игрового поля на экран).:) |
Ответ: Алгоритм игры Lines
glGet*
Код:
GL_PROJECTION_MATRIX |
Часовой пояс GMT +4, время: 05:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot