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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2012, 21:48   #1
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию c++/allegro space invaders

Всем доброго времени суток,
Пишу игру на аллегро, однако возник баг : несколько минут приложение работает нормально, но потом тупо виснет и выскакивает ошибка о закрытии приложения, комментировал все вызовы классов, оставлял только главный цикл, ничего не изменилось.Подскажите что не так?
Код:
volatile long counter=0;
void increment()
{
	counter++;
}
#include"allegro\include\allegro.h"
#include"defines.h"
#include"Player.h"
#include"Destroyer.h"
#include "Bomber.h"
int main(void)
{
	allegro_init();
	install_keyboard();
	install_sound(DIGI_AUTODETECT,MIDI_AUTODETECT,"A");
	set_color_depth(32);
	set_gfx_mode(GFX_AUTODETECT_WINDOWED,WinWidth,WinHeight,0,0);
	set_window_title("Space Invaders");
	LOCK_VARIABLE(counter);
	LOCK_FUNCTION(increment);
	install_int_ex(increment,BPS_TO_TIMER(100));
	BITMAP * buffer=create_bitmap(WinWidth,WinHeight);
	BITMAP* bg=load_bitmap("images\\background\\Level_6.bmp",NULL);
	CDestroyer destr[3];
	destr[0].Init(300,200,0,0,32,32,"images\\Enemies\\destrojer.bmp",1,2);
	destr[1].Init(370,200,0,0,32,32,"images\\Enemies\\destrojer.bmp",1,2);
	destr[2].Init(400,300,0,0,32,32,"images\\Enemies\\destrojer.bmp",1,2);
	CBomber bomber;
	bomber.Init(400,300,0,0,32,32,"images\\Enemies\\bomber.bmp",1,2);
	CEnemy **enemy;
	enemy=new CEnemy*[3];
	enemy[0]=&destr[0];
	enemy[1]=&destr[1];
	enemy[2]=&bomber;
	bool done=false;
	CPlayer player;
	int g=700,j=0;
	player.Init(400,400,0,Down,32,32,"images\\mainShip\\mths.bmp",1,2);
	while(!done)
	{
		while(counter>0)
		{
			if(key[KEY_ESC])
				done=true;
			player.Update();
			enemy[0]->Update(player.lightlaser.GetX(),player.lightlaser.GetY());
			enemy[1]->Update(player.lightlaser.GetX(),player.lightlaser.GetY());
			enemy[2]->Update(player.lightlaser.GetX(),player.lightlaser.GetY());
			counter--;	
		}
		j++;
		if(g>=-350&&j%4==0)
		{
			g--;
		}
		if(g==-350)
		{
			g=900;
			
		}
		blit(bg,buffer,0,g,0,0,WinWidth,WinHeight);
		player.Draw(buffer);
		enemy[0]->Draw(buffer);
		enemy[1]->Draw(buffer);
		enemy[2]->Draw(buffer);
		blit(buffer,screen,0,0,0,0,WinWidth,WinHeight);
		clear_bitmap(buffer);
	}
	return 0;
}
END_OF_MAIN()
revaldo666 вне форума Ответить с цитированием
Старый 19.01.2012, 22:58   #2
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Я понятие не имею, что такое alegro. Думаю 99,9% читающих эту тему тоже. Поэтому, логически рассудив, имхо гораздо быстрее спросить на оф форуме разработчиков http://www.allegro.cc/forums/ (если я конечно правильно загуглил).
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 19.01.2012, 23:28   #3
revaldo666
Форумчанин
 
Регистрация: 24.06.2010
Сообщений: 251
По умолчанию

Та если бы я мог у них на форуме зарегатся, уже бы туда и написал, у них с серваком что-то((
revaldo666 вне форума Ответить с цитированием
Старый 20.01.2012, 19:36   #4
Alex&(R)
Пользователь
 
Аватар для Alex&(R)
 
Регистрация: 15.05.2011
Сообщений: 14
По умолчанию

Что-то мне кажется, у Вас переменная j не обнуляется в цикле. То есть в тот момент, когда происходит переполнение j, программа виснет и завершается ошибкой.
Alex&(R) вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
the Space 2D 45 isometric space fighter (Open Source) DeeMOONger Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 18.06.2011 17:24
There is not space pablo333 Помощь студентам 13 15.02.2011 18:38
heap space KillJoy Общие вопросы по Java, Java SE, Kotlin 2 25.01.2011 12:23
Ошибка Out of stack space и др Solex Microsoft Office Excel 3 10.02.2010 10:21
space invaders Alfonso1 Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 20.11.2009 13:23