PMG https://forum.pmg.org.ru/ |
|
простенькая 2D игра https://forum.pmg.org.ru/viewtopic.php?f=1&t=7239 |
Страница 1 из 1 |
Автор: | falconsan [ 18 ноя 2009 14:12 ] |
Заголовок сообщения: | простенькая 2D игра |
Вообщем задача не из простых (лично для меня) , т.к. что-то могу , а чему-то мне нужно научиться . В институте задали курсовую работу - запрограммировать игру на C/C++ Я это сделал , правда в консольном(Win32 console appl..) приложении ... сами понимаете игра в консольном приложении - вообще без наглядности ... бредово... Игра: Перед вами в ряд выложены 13 монет , играют 2 игрока , первый может взять только 1 монету , следующий игрок может брать не больше удвоенного количества монет, от тех что взял предыдущий . например если я взял 2 монеты , то вы можете взять 1, 2, 3, 4 но не больше , и т д . Ход обязательно должен быть результативным. Выигрывает тот, кто последним возьмёт 13ю монету . примерно на экране должно быть так : зеленое поле , на нём 13 монет , 12 чёрных , 13я - красная , если ходит компьютер - его монеты сдвигаются вверх , если игрок - вниз . Подскажите плз как это всё в графику перевести и реализовать ... |
Автор: | bad_duck [ 18 ноя 2009 15:45 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
читай http://pmg.org.ru/nehe/index.html и скачивай исходники, там всё понятно. |
Автор: | MagicWolf [ 20 ноя 2009 11:51 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
С точки зрения OpenGL у тебя есть есть несколько объектов: 1. поле 2. монеты с разной текстурой. У каждого объекта есть координаты и форма представления, например в 3DS. Выводишь все объекты в нужном местоположении и повороте и все. |
Автор: | AlexFalcoN [ 13 апр 2010 15:06 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
![]() когда рисую монеты слева направо и если значение ячейки z[i] = 1 я сдвигаюсь на 0.15 по оси Y , если z[i] = 2 вниз , а если z[i] = 0 то Y =0 получается картина , каждая последующая монета расположена не на 1м уровне а на 0.15 по Y выше предыдущей или ниже в зависимости от значение z[i] , ( i = 0->12); обошёл этот момент путём замены этих передвижений на простое закрашивание в разные цвета, например человек взял 5 монет , компьютер берёт 8 , и на экране вырисовывается первые 5 монет в зелёный цвет а остальные 8 в красный , не взятые монеты перекрашены в белый , понимаю детсадовская игра получается , но как мог так и сделал. кстате как поле создать я пока не понимаю . |
Автор: | MagicWolf [ 13 апр 2010 19:35 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
>кстате как поле создать я пока не понимаю . В каком смысле. Надо где-то создать модельку поля и выводит ее. |
Автор: | AlexFalcoN [ 01 июн 2010 13:58 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
не, я имел ввиду поле как прямоугольник 3 х 13 (строка столбец) , по логике , самая центральная строка - 2я , в ней распологаются 13 монет в строчку , если игрок 1 берёт 1 монету, монета сдвигается в 1ю строчку , если вторые 2 монеты берёт 2й игрок то , 2я,3я монеты сдвигаются на строчку вниз . это получается матрица , это я понял . Вопрос у меня был и остаётся до сих пор только , как рисовать с openGL монеты как отдельные друг от друга обьекты . А то рисую 1ю монету , затем вторую а она смещается относительно первой , 3я относительно 2й , в своей игре пришлось писать так: Код: glTranslated(0,0,0); glColor3d(0.8,0.4,0.0); auxSolidSphere(7.0); glPopMatrix; glTranslated(X1,Y1,0); glColor3d(0.5,0.1,0.1); auxSolidSphere(0.2); glTranslated(-X1,-Y1,0); glPopMatrix; glTranslated(X2,Y2,0); glColor3d(0.4,0.2,0.2); auxSolidSphere(0.4); glTranslated(-X2,-Y2,0); glPopMatrix; glTranslated(X3,Y3,0); glColor3d(0,0.1,1); auxSolidSphere(0.65); glPopMatrix; glTranslated(X4,Y4,0); glColor3d(0.1,0.2,0.2); auxSolidSphere(0.1); glTranslated(-X4,-Y4,0); glPopMatrix; glTranslated(-X3,-Y3,0); glPopMatrix; glTranslated(X5,Y5,0); glColor3d(0.8,0.5,0.1); auxSolidSphere(0.55); glTranslated(-X5,-Y5,0); glPopMatrix; glTranslated(X6,Y6,0); glColor3d(0.6,0.5,0.1); auxSolidSphere(2.4); мне приходилось перемещать на нулевое расстояние . кстате у меня почему то glPopMatrix; и glPushMatrix; не пашет , как я их н ставил в какой последовательности, может я не доконца понял что эти команды делают? |
Автор: | MagicWolf [ 01 июн 2010 14:11 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
glPushMatrix - сохраняет какую-то матрицу в стеке, glPopMatrix - извлекает из стека. Смысл такой. Берешь какую-то матрицу, например, модели и вида. Сохраняешь ее в стеке, потом как-то ее меняешь, выводишь то, что нужно, и извлекаешь из стека. Лучше всего почитать Эйнджела. |
Автор: | bad_duck [ 01 июн 2010 19:08 ] |
Заголовок сообщения: | Re: простенькая 2D игра |
AlexFalcoN писал(а): получается картина , каждая последующая монета расположена не на 1м уровне а на 0.15 по Y выше предыдущей или ниже в зависимости от значение z[i] Это как раз и получается из-за отсутствия glPushMatrix() и glPopMatrix(), матрица для каждой следующей фигуры зависит от предыдущей фигуры, а если расставить glPushMatrix() и glPopMatrix() в нужных местах, то они будут независимыми. Расставить их нужно примерно так:Код: glPushMatrix();
glTranslated(0,0,0); glColor3d(0.8,0.4,0.0); auxSolidSphere(7.0); glPopMatrix; glPushMatrix(); glTranslated(X1,Y1,0); glColor3d(0.5,0.1,0.1); auxSolidSphere(0.2); glPopMatrix; glPushMatrix(); glTranslated(X2,Y2,0); glColor3d(0.4,0.2,0.2); auxSolidSphere(0.4); glPopMatrix; |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |