Upravenie hry v C++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Upravenie hry v C++ – C / C++ – Fórum – Programujte.comUpravenie hry v C++ – C / C++ – Fórum – Programujte.com

 

tomas147
~ Anonymní uživatel
1 příspěvek
11. 12. 2015   #1
-
0
-

Vytvorte jednoduchú verziu hry, podobnú hre z cvičenia, avšak namiesto jednej lopty sa na začiatku hry budú pohybovať 3 lopty zhora nadol. Lopta sa nebude odrážať, ale po dopade na spodnú hranu hracej plochy zmizne a znovu sa objaví na hornej hrane (s tou istou x súradnicou). Po trafení lopta zmizne. Ak do 5 sekúnd nebudú trafené všetky lopty, tak pribudne ďalšia lopta, potom ďalšia ....Maximálny počet lôpt na hracej ploche môže byť obmedzený. 

#include "Ihrisko.h"

Ihrisko::Ihrisko(int xplocha, int yplocha,
	int wplocha, int hplocha) :
	Vykresovac(xplocha, yplocha, wplocha, hplocha),
	aPredmet(new Predmet(aX, aY, aW, aH, 65, 65, "ball.bmp"))
{
}

Ihrisko::~Ihrisko()
{
	if (aPredmet)
		delete aPredmet;
}

void Ihrisko::vykresliSa(SDL_Surface *surface)
{
	int farbaIhriska = SDL_MapRGB(surface->format, 0, 127, 0);
	SDL_Rect rect;
	rect.x = aX;
	rect.y = aY;
	rect.w = aW;
	rect.h = aH;
	SDL_FillRect(surface, &rect, farbaIhriska);
	aPredmet->vykresliSa(surface);
}

bool Ihrisko::zasah(int x, int y)
{
	if (aPredmet->zasah(x, y))
	{
		delete aPredmet;
		//aPredmet = NULL;
		aPredmet = new Predmet(aX, aY, aW, aH, 65, 65, "ball.bmp");
		if (aPredmet)
			return true;
	}
	return false;
}

void Ihrisko::posun()
{
	aPredmet->pohniSa(aX, aY, aW, aH);
}
#include <cstdlib>
#include <ctime>
#include "Predmet.h"

const int MAXDELTA = 7;

Predmet::Predmet(int xplocha, int yplocha,
	int wplocha, int hplocha, int w, int h,
	const char *cestaObrazok) :
	Vykresovac(0, 0, w, h)
{
	srand(unsigned(time(NULL)));
	aObrazok = SDL_LoadBMP(cestaObrazok);
	aX = generujNahodneCislo(xplocha, xplocha + wplocha - aW);
	aY = generujNahodneCislo(yplocha, yplocha + hplocha - aH);
	aDeltaX = generujNahodneCislo(1, MAXDELTA) - MAXDELTA / 2;
	aDeltaY = generujNahodneCislo(1, MAXDELTA) - MAXDELTA / 2;
}

Predmet::~Predmet()
{
	SDL_FreeSurface(aObrazok);
}

void Predmet::vykresliSa(SDL_Surface *surface)
{
	SDL_Rect rectObrazok = { 0, 0, aW, aH };
	SDL_Rect rectCiel = { aX, aY, 0, 0 };
	SDL_BlitSurface(aObrazok, &rectObrazok, surface, &rectCiel);
}

bool Predmet::zasah(int x, int y)
{
	return aX <= x && x <= aX + aW && aY <= y && y <= aY + aH;
}

int Predmet::generujNahodneCislo(int minValue, int maxValue)
{
	return rand() % (maxValue - minValue) + minValue;
}

void Predmet::pohniSa(int xplocha, int yplocha,
	int wplocha, int hplocha)
{
	aX += aDeltaX;
	aY += aDeltaY;

	if ((aX<=xplocha) || (aX +aW >=wplocha+xplocha))
		aDeltaX = -aDeltaX;
	if ((aY <= yplocha) || (aY +aH  >=hplocha+yplocha))
		
	aDeltaY = -aDeltaY;

	aX += aDeltaX;
	aY += aDeltaY;
		
	
}

nevedeli by ste to upraviť pomocou vektora alebo pola ?

Nahlásit jako SPAM
IP: 193.87.93.–
KOKOT
~ Anonymní uživatel
2 příspěvky
16. 12. 2015   #2
-
-1
-
Mimo téma

#1 tomas147
VYJEBANCI TAK ZDOCHNITE DO RANA KED NECHCETE POMOCT  

Nahlásit jako SPAM
IP: 178.41.47.–
Petr
~ Anonymní uživatel
746 příspěvků
17. 12. 2015   #3
-
0
-

#2 KOKOT

Klidně, ale ty neuděláš zápočet       

Nahlásit jako SPAM
IP: 8.20.181.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 14 hostů

Podobná vlákna

3d hry v c++ — založil RybaRak-WM

Hry — založil squirrel1981

C++,hry — založil sa54d

PC hry — založil Jakub Doucek

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý