コード例 #1
0
ファイル: permutuj.c プロジェクト: chivay/inf-lab
/**
 * Pisze na wyjście diagnostyczne komunikat o błędzie @n i przerywa wykonanie
 * programu.
 */
void blad(int n)
{
    fprintf(stderr, "%s: %s\n", STR_BLAD, komunikat(n));
    exit(EXIT_FAILURE);
}
コード例 #2
0
ファイル: Gra.cpp プロジェクト: evanec/Znowu_samoloty
void Gra::zagrajmy(){

	pocisk* pocisk_biezacy;
	bool czujka;

	
	/////////////////////////////////////////////////////////////////
	///////////////   model g³ównej pêtli programu   ///////////////
	///////////////////////////////////////////////////////////////


	al_get_keyboard_state(&obraz.key_state);
	int i;


	while((czyja_wygrana()==0) && !(al_key_down(&obraz.key_state, ALLEGRO_KEY_ESCAPE )))
    {
		al_get_keyboard_state(&obraz.key_state);

	//przemieszczenie pocisków
		for (i = 0; i < pociski_na_planszy_A.ile(); i++)
		{
		pocisk_biezacy=pociski_na_planszy_A[i+1];
		pocisk_biezacy->leci_pocisk();
		}

		for (i = 0; i < pociski_na_planszy_B.ile(); i++)
		{
		pocisk_biezacy=pociski_na_planszy_B[i+1];
		pocisk_biezacy->leci_pocisk();
		}


	//przemieszczenie samolotów

			
		obraz.timer();

			gracz_A->wybierz_sobie_klawisz();
			if (statek->strzelam==true){
				pociski_na_planszy_A+=new pocisk(*statek, obraz.pocisk);
				(statek->strzelam)=false;
			}

			gracz_B->wybierz_sobie_klawisz();
			if (statek2->strzelam==true){
				pociski_na_planszy_B+=new pocisk(*statek2, obraz.pocisk);
				(statek2->strzelam)=false;
			}
	


			//obs³uga bajerów wszelakich
		losuj_bonusy();
		//<JERZYK>:
		if (meteorycik!=NULL) 
		{
			if (meteorycik->czy_poza_plansza==true)
			{
				delete meteorycik;
				meteorycik=NULL;
			}
		}
		////</JERZYK>
		if (meteorycik!=NULL){
			meteorycik->akcja();
		}


		statek->akcja();
		statek2->akcja();
		ksiezyc->akcja();

		//kolizje
		if (fabs(statek->zwroc_pozycje_x()-ksiezyc->zwroc_pozycje_x())<=25 && fabs(statek->zwroc_pozycje_y()-ksiezyc->zwroc_pozycje_y())<=25) statek->zycie=0;
		if (fabs(statek2->zwroc_pozycje_x()-ksiezyc->zwroc_pozycje_x())<=25 && fabs(statek2->zwroc_pozycje_y()-ksiezyc->zwroc_pozycje_y())<=25) statek2->zycie=0;
		if (fabs(statek->zwroc_pozycje_x()-statek2->zwroc_pozycje_x())<=24 && fabs(statek->zwroc_pozycje_y()-statek2->zwroc_pozycje_y())<=24) { statek->zycie=0; statek2->zycie=0; }
		if (czy_paczka==true)
		{
			if (fabs(statek->zwroc_pozycje_x()-paczka->zwroc_pozycje_x())<=25 && fabs(statek->zwroc_pozycje_y()-paczka->zwroc_pozycje_y())<=25)
			{
				if (statek->zycie<max_zycie-2) statek->zycie+=2;
				else statek->zycie=max_zycie;
				delete paczka;
				czy_paczka=false;
			}
			if (fabs(statek2->zwroc_pozycje_x()-paczka->zwroc_pozycje_x())<=25 && fabs(statek2->zwroc_pozycje_y()-paczka->zwroc_pozycje_y())<=25)
			{
				if (statek2->zycie<max_zycie-2) statek2->zycie+=2;
				else statek2->zycie=max_zycie;
				delete paczka;
				czy_paczka=false;
			}
		}
		if (meteorycik!=NULL)
		{
			if (fabs(statek->zwroc_pozycje_x()-meteorycik->zwroc_pozycje_x())<=25 && fabs(statek->zwroc_pozycje_y()-meteorycik->zwroc_pozycje_y())<=25) statek->zycie=0;
			if (fabs(statek2->zwroc_pozycje_x()-meteorycik->zwroc_pozycje_x())<=25 && fabs(statek2->zwroc_pozycje_y()-meteorycik->zwroc_pozycje_y())<=25) statek2->zycie=0;
			if (czy_paczka==true) {
			if (fabs(meteorycik->zwroc_pozycje_x()-paczka->zwroc_pozycje_x())<=25 && fabs(meteorycik->zwroc_pozycje_y()-paczka->zwroc_pozycje_y())<=25)
			{
				delete paczka;
				czy_paczka=false;
			} }
			if (fabs(meteorycik->zwroc_pozycje_x()-ksiezyc->zwroc_pozycje_x())<=25 && fabs(meteorycik->zwroc_pozycje_y()-ksiezyc->zwroc_pozycje_y())<=25)
			{
				delete meteorycik;
				meteorycik=NULL;
			}
		}

	//wyœwietlanie

		obraz.wyswietl_mape(100/max_zycie*statek2->zycie,100/max_zycie*statek->zycie);

		//wyœwietlanie pocisków + sprawdzanie czy trafi³y
		for (int i = 0; i < pociski_na_planszy_A.ile(); i++)
		{
			obraz.wyswietl(*pociski_na_planszy_A[i+1]);
			
			pociski_na_planszy_A[i+1]->czy_trafil(*statek2, czujka);
			if (czujka==true)
				pociski_na_planszy_A-=(i+1);
			else if(1==pociski_na_planszy_A[i+1]->czy_poza_plansza()) pociski_na_planszy_A-=(i+1);
		}
		for (int i = 0; i < pociski_na_planszy_A.ile(); i++)
		{
			obraz.wyswietl(*pociski_na_planszy_A[i+1]);
			
			pociski_na_planszy_A[i+1]->czy_trafil(*ksiezyc, czujka);
			if (czujka==true)
				pociski_na_planszy_A-=(i+1);
			else if(1==pociski_na_planszy_A[i+1]->czy_poza_plansza()) pociski_na_planszy_A-=(i+1);
		}

		for (int i = 0; i < pociski_na_planszy_B.ile(); i++)
		{
			obraz.wyswietl(*pociski_na_planszy_B[i+1]);
			
			pociski_na_planszy_B[i+1]->czy_trafil(*statek, czujka);
			if (czujka==true)
				pociski_na_planszy_B-=(i+1);
			else if(1==pociski_na_planszy_B[i+1]->czy_poza_plansza()) pociski_na_planszy_B-=(i+1);
		}
		for (int i = 0; i < pociski_na_planszy_B.ile(); i++)
		{
			obraz.wyswietl(*pociski_na_planszy_B[i+1]);
			
			pociski_na_planszy_B[i+1]->czy_trafil(*ksiezyc, czujka);
			if (czujka==true)
				pociski_na_planszy_B-=(i+1);
			else if(1==pociski_na_planszy_B[i+1]->czy_poza_plansza()) pociski_na_planszy_B-=(i+1);
		}

		obraz.wyswietl(*statek);
		obraz.wyswietl(*statek2);
		obraz.wyswietl(*ksiezyc);
		if (czy_paczka==true)
			obraz.wyswietl(*paczka);
		if (meteorycik!=NULL)
			obraz.wyswietl(*meteorycik);

		al_flip_display();

	}


	komunikat();

}