Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2012, 20:44   #1
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию OpenGL and Games and Fire

Народ подскажите с чего начать реализацию функции\класса стрельбы в 2D игре допустим. Я парился парился что то сделал но это не то. То есть у меня получилось выстрелить и снаряд летел, но как только я опять нажимаю на стрельбу, то снаряд не появляется новый а перемещается на начальную позицию. Где то пол пачки А4 листов исписал алгоритмом вобще никак подскажите. Извините код старый представить не могу исходник затерялся.
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 20.04.2012, 21:17   #2
Inv1s
Форумчанин
 
Аватар для Inv1s
 
Регистрация: 06.11.2011
Сообщений: 214
По умолчанию

Массив пулей сделать?
Или если грамотно, то класс отвечающий за динамические объекты в игре.
Помог, нажми на весы
html, js, php, С++, С#, OpenGl, DirectX, XNA, HLSL
Inv1s вне форума Ответить с цитированием
Старый 20.04.2012, 21:43   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

для пуль пожалуй вполне логичен или список, или массив с битовой картой(чтоб не смещать все в массиве, а просто писать в пустое место массива)/или аналог.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.04.2012, 22:07   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Я думал сделать так. Создать класс отвечающий за стрельбу:
К примеру:
Код:
class Fire
{
       public:
                void FireFunc()
                {
                      int Y = 0;
                      for(int i = 0; i < WIN_ORTHO_MAX; i++)
                      {
                            glBegin(GL_POINTS);
                            glVertex2s(i,Y);
                            glEnd();
                      }
                }
};
int main()
{
     ///....///
     Fire a[10];
}
и при выстреле индекс массива объектов увеличится и т.д. Будет ли этого код работать
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 20.04.2012, 22:48   #5
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Код:
#include "stdafx.h"
#include <GL/glut>
#include <fstream>

short WIN_WIDTH;
short WIN_HEIGHT;
short WIN_MAX;
short WIN_MIN;
short WIN_POS_X;
short WIN_POS_Y;
char WIN_TITLE[6];
int nNumberFire = 0;
class LoadFileInitialize
{
private:
	friend void LoadFuncInit();
	void LoadFileInit()
	{
		std::ifstream input_initialize("Data//INITIALIZE.dat");
		if(!input_initialize)
		{
			MessageBoxA(NULL,"Файл INITIALIZE.dat не найден","WARNING",MB_OK|MB_ICONWARNING);
			exit(0);
		}
		input_initialize >> WIN_TITLE;
		input_initialize >> WIN_WIDTH;
		input_initialize >> WIN_HEIGHT;
		input_initialize >> WIN_POS_X;
		input_initialize >> WIN_POS_Y;
		input_initialize >> WIN_MIN;
		input_initialize >> WIN_MAX;
		input_initialize.close();
	}
}myLoad;
class Fire
{
public:
	void FireFunc()
	{
		for(int i = 0; i < WIN_MAX; i++)
		{
			glPointSize(5);
			glColor3ub(i,0,0);
			glBegin(GL_POINTS);
			glVertex2s(i,0);
			glEnd();
			glPointSize(1);
		}
	}
}fire[5];
void RenderScene()
{
	glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
	glEnable(GL_DEPTH_TEST);
	fire[nNumberFire].FireFunc(); \\ Если занести эту функцию в функцию обработки клавиш то при нажатии UP нечего не 
                                                \\ отображается
	glDisable(GL_DEPTH_TEST);
	glutSwapBuffers();
	glutPostRedisplay();
}
void LoadFuncInit()
{
	myLoad.LoadFileInit();
}
void SpecialKeyFunc(int key,int x,int y)
{
	switch(key)
	{
	case GLUT_KEY_UP:
		nNumberFire++; \\Увеличение индекса массива объектов
		break;
	}
}
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 20.04.2012 в 22:56.
kineziz вне форума Ответить с цитированием
Старый 20.04.2012, 22:48   #6
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Код:
void InitializeFunc()
{
	glutDisplayFunc(RenderScene);
	glutSpecialFunc(SpecialKeyFunc);
}
int WINAPI WinMain(HINSTANCE hWindow,HINSTANCE hPrev, 
				   LPSTR lpCmd,int nShow)
{
	LoadFuncInit();
	glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH);
	glutInitWindowSize(WIN_WIDTH,WIN_HEIGHT);
	glutInitWindowPosition(WIN_POS_X,WIN_POS_Y);
	glutCreateWindow(WIN_TITLE);
	glClearColor(1,1,1,1);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	glOrtho(WIN_MIN,WIN_MAX,WIN_MAX,
		    WIN_MIN,WIN_MIN,WIN_MAX);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	InitializeFunc();
	glutMainLoop();
	return 0;
}
Что то не очень хочешь работать помогите. Результат программы: цветная линия на экране.т.е цикл работает. Но я хочу чтоб была только точка а не линия как это сделать чтоб предыдущая точка стиралась
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу создать онлайновый-шутер на примере игры Cross Fire makshero Фриланс 0 06.11.2011 12:28
Another Games Xen_OS Gamedev - cоздание игр: Unity, OpenGL, DirectX 25 08.05.2008 13:41