Anonymní profil MiCizek – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil MiCizek – Programujte.comAnonymní profil MiCizek – Programujte.com

 

Příspěvky odeslané z IP adresy 89.24.203.–

C / C++ › DirectX 11: Debbugging na Wi…
27. 10. 2014   #195263

Ahoj. Zkouším se učit a programovat v DirectX 11 a rád bych věděl v čem debbugnout hlsl soubor. Microsoft buď podporuje Windows 8 pro to nebo je potřeba si připlatit za placenou verzi Visual Studia. Taky mám ve svém renderovacím programu chybu, kdy vytvořím 2D texture zdroj pro grafickou kartu, ale hodnota neodpovídá výslednému zobrazení. Skoro to vypadá že zdroj má jinou velikost než data, která do toho zdroje nahrávám. Takže to vypadá jako že se data překrývají. Vše jsem několikrát zkontroloval, ale nemůžu najít chybu.  Taky jak jsem řekl nemůžu to debbugnout. Pokud bych někomu kód posílal, tak prosím o diskrétnost.

C / C++ › Optimální řešení pool systém…
23. 5. 2014   #190402

ok nakonec jsem použil vector s ukazateli. Myslím, že tohle řešení mi bude vyhovovat nejvíce.

C / C++ › Nová evoluční hra - hledáme…
21. 5. 2014   #190340

Okej, taky se zabývám vývojem. Měl jsem to štěstí, že jsem mohl pracovat s partou nadaných lidí nejdříve s Gamebryo enginem a později CryEnginem. Momentálně se zabývám vlastním projektem a hlavně se učím v DirectX.

MiCizek
C / C++ › Optimální řešení pool systém…
21. 5. 2014   #190332

Ahoj, chtěl bych navrhnout a vytvořit nějaké optimální řešení pool systemu v C++, je to pro 3D engine. Základní požadavky by byly, že objekty různých tříd by měly mít nějaké společné metody jako initializace a update a podobně, které by se volaly postupně pro všechny prvky. Takže tyto objekty by dědily z nějaké základní třídy. Dále by tam měla být možnost volat methody tříd , které jsou přidružené pouze pro nějakou world cell, protože mě nepřipadá moc optimální počítat fyziku pro celé world space. Mělo by to být engine, s větším počtem objektů ve world space.

Spokojím se i s radami jak to udělat optimálně, než s nějakým kompletním řešením.

C / C++ › Čtení pole dat ze souboru(ob…
29. 12. 2013   #185771

Stále mi to nechce načíst obrázek :-( 


	Gdiplus::Bitmap *bitmap = new Gdiplus::Bitmap(L"C:\\Users\\VereWolf\\Desktop\\World_Space_Gen\\WorldSpaceGenV2\\Word_Space_Gen\\Debug\\gen.jpg");
	if(!bitmap)
		return 0;
C / C++ › Čtení pole dat ze souboru(ob…
29. 12. 2013   #185747

Ahoj metoda getPixel vrací 2, což je InvalidParametr. Nevíte někdo, co s tím? 

BYTE number;
	Gdiplus::Color color;
	Gdiplus::Bitmap bitmap(L"C:/Users/VereWolf/Desktop/World_Space_Gen/WorldSpaceGenV2/World_Space_Gen/Debug/gen.jpg");
	for (INT i = 0; i < CELLS; i++)
	{
		for (INT j = 0; j < CELLS; j++)
		{
			bitmap.GetPixel(1,1,&color);
			number = color.GetB();
			pixels.at(i*CELLSCALE).at(j*CELLSCALE).pixelType = color.GetB();
		}
	}
C / C++ › Čtení pole dat ze souboru(ob…
20. 12. 2013   #185512

Nebo by se mi hodil nějaký jednoduchý grafický editor v raw obrázků.

edit:

Mám nějaký dvojrozměrný pole dat a potřebuji je nějak hromadně upravit a pak je zpracovat v programu.

C / C++ › Čtení pole dat ze souboru(ob…
20. 12. 2013   #185511
C / C++ › Čtení pole dat ze souboru(ob…
20. 12. 2013   #185507

Ahoj potřeboval bych číst data z bitmapovýho nebo jiného bezestrátového formátu nebo najít nějaký jednoduchý editor, který ukládá data do raw formátu.

Inzerce › Hledáme dobrovolníky program…
15. 11. 2013   #183948

Dobrý den, já jsem členem Epoch Game, která je složena z dobrovolníků a která vyvíjejí free to play PC hru Lays of Althas: Sundered Order(LoA:SO). V současnosti hledáme nové dobrovolníky a přispěvatele.

Před tímto projektem jsme vyvíjeli Middle-Earth  Roleplaying Project (MERP) jako totální konverzi Skyrimu. Ale bohužel jsme v červenci 2012 dostali C&D dopis od Warner Bross a pod tímto tlakem jsme museli vývoj ukončit. Věříme, že jsme schopni zúročit naší zkušenost s MERP v našem novém projektu.

V současnosti naši novou hru vyvíjíme na CryEngine 3 a hledáme koncept  designéry, programátory v C++, skriptéry v LUA, 2D grafiky a 3D modeláře. Ale mějte na paměti, že jsme dobrovolníci a proto neočekávejte, že by jste dostávali plat nebo pracovali na plný úvazek. Potřebujeme vývojáře, kteří jsou ochotni obětovat spoustu času a úsilí.

Uchazeči, kteří nemají tolik času, aby se mohli připojit k týmu, mohou být přijati jako přispěvatelé na tak dlouho jak budou splňovat naše standarty kvality.

Níže jsou odkazy na Moddb stránku, stránku pro uchazeče a fórum pro přispěvatele.

http://www.moddb.com/games/the-lays-of-althas-sundered-order

http://www.epochgames.co.uk/forum/viewforum.php?f=525

http://www.epochgames.co.uk/forum/viewforum.php?f=585

Děkuju za váš čas,

VereWolf - Epocha Game Coder

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183339

Jinak děkuju, teď se mi to zase celé rozbilo, ale to je asi u programováni normální. :-)

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183327

to vím, že když dynamicky allocuju paměť, tak je to pomalejší. Ale zase pro nedynamicky allocovanou paměť je omezenější velikost ne?

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183321

protoze je to ve vectoru?

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183318

   


struct CPixel
{
	CPixel ()
	{
		pixelHeight = new UNSHORT;
		pixelType = new TYPETERRAIN;
		index = new UNSHORT;
		*pixelHeight = 0;
		*pixelType = gtt_Empty;
		*index = 0;
	};
	~CPixel()
	{
		delete pixelHeight;
		delete pixelType;
		delete index;
	}
	CPixel (CPixel *right)
	{
		pixelHeight = new UNSHORT;
		pixelType = new TYPETERRAIN;
		index = new UNSHORT;
		*pixelHeight = *right->pixelHeight;
		*pixelType = *right->pixelType;
		*index = *right->index;
	};
	UNSHORT *pixelHeight;
	TYPETERRAIN *pixelType;
	UNSHORT *index;
};
*height = CELLSCALE*CELLS;
*width = CELLSCALE*CELLS;
pixels.resize(*height);
for (UNSHORT i = 0; i < *height; i++) {
	pixels.at(i).resize(*width);
C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183314

Stejně to padá při volání deleta v destructoru.

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183311

#18 vitamin
aha :-D

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183306

Zjistil jsem, ze problem nastane, když se zavola jeden z operatoru new nebo delete v konstructoru/destructoru struct, co je prvkem vectoru.

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183301

Spadne mi to i když napíšu:

cout << pixels.size() << endl;
cout << pixels.at(0).size() << endl;
std::rotate(pixels.at(0).begin(), pixels.at(0).begin() + 1, pixels.at(0).end());

a obě dimenze mají velikost 512. Spadne mi to vždycky, když k pixels.at(0).begin() přičtu jakékoliv číslo.

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183298

Jenom, že mi to při tomhle tom zápisu spadne. 

std::rotate(pixels.at(*pGen->x).begin(), pixels.at(*pGen->x).begin() + CELLS, pixels.at(*pGen->x).end())
C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183293

Akorát úplně nechápu zápis 

for(auto& v:vec)

Předpokládám, že všechny prvky vectoru vec postupně uloží do  pomocného vectoru v a na nich provede funkci rotate.

Za druhé já tvořím fraktálový generátor map, který funguje velmi dobře. Ale plánuju, že bych ho použil ve skutečném grafickém enginu a momentálně planuju, že když se hráč posune, tak se mapa taky posune a nová část posunuté mapy se dogeneruje. A proto potřebuju v každém snímku řešit jenom část smyčky. Proto souřadnici x potřebuju zadávat ručně bez smyčky.

C / C++ › Posunutí hodnot ve vectoru
5. 11. 2013   #183284

A kdybych chtěl s pomocí rotate rotovat 2d vector? Program mi vždycky spadne.

C / C++ › Posunutí hodnot ve vectoru
4. 11. 2013   #183230

Ahoj, rád bych se zeptal, jak nejrychleji posunout všechny hodnoty ve vectoru. Př. Mám vector o velikosti 10 a všechny hodnoty potřebuji posunout  o  dvě doleva. Tak aby hodnota s klíčem č. 2 měla klíč č. 0, aby hodnota s klíčem č. 3 měla klíč č. 1 a hodnoty s klíčem č. 8,9 měly hodnotu 0. Pracuji na programu, který by měl umět streamovat velký svět do menšího.

C / C++ › Programování ve více lidech
14. 8. 2013   #180360

Jo a ještě, abych zbytečně nezakládal více témat, kde najdu EULA u MIcrosoft Visual?

C / C++ › Programování ve více lidech
13. 8. 2013   #180313

#2 KIIV
A co složitější programy, jako vývoj hry na CryEnginu? Nemůže být problém s poslední fází vývoje při ladění softwáru?

C / C++ › Programování ve více lidech
13. 8. 2013   #180306

Ahoj, chtěl bych se zeptat, jakým způsobem se programuje ve více lidí? Vím, že na to je placená verze Microsoft Visuál C++. Dá se bez toho obejít?

C / C++ › Jak zkompilovat kod do 64 bi…
18. 4. 2013   #175196

Díky, podívám.

C / C++ › Jak zkompilovat kod do 64 bi…
17. 4. 2013   #175113

Ahoj, mám program ve verzi v 32 bit a 64 bit a k tomu zdrojové kódy k jednomu .dll souboru toho programu. Bohužel potřebuji využít maximálně paměti RAM a proto to potřebuji zkompilovat do 64 bit. Visual Studio 2010 Express neumožňuje kompilování do 64 bit, ale údajně Microsoft SDK obsahuje 64 bit kompilátor. Takže jsem si ho nainstaloval. Ale problém je, že když ho mám nainstalovaný a v Configuration Manager v properties solution nastavím x64, tak mi zmizí celá nabídka v properties dokud vše zase nevrátím.

C / C++ › Jak zkompilovat kod do 64 bi…
12. 4. 2013   #174898

Ahoj můžu pomoci microsoft windows sdk 7.1 zkompilovat 64 bit soubory?

C / C++ › Jak zjistit, která dll jsou…
1. 4. 2013   #174259

dík

C / C++ › Jak zjistit, která dll jsou…
1. 4. 2013   #174255

Ahoj, když dělám program ve VS pro někoho jiného, aby si to vyzkoušel, jak zjistím, která dll mu mám ještě dodat?

C / C++ › BitMapová knihovna
1. 4. 2013   #174247

Jestly je to vůbec možný.

C / C++ › BitMapová knihovna
1. 4. 2013   #174246

Ahoj potřeboval bych nějakou knihovnu, která pod win32 console application by byla schopná pracovat s jpeg formátem nebo s jiným, který se dá běžně upravovat v nějakém běžném grafickém editoru. Potřebuju načíst data a pak získat hodnoty z jednotlivých pixelů. Mohl bych použít raw, ale s ním některý editory moc nepracujou. Díky.

C / C++ › Ruleta
1. 4. 2013   #174215

#2 vitamin
Počkat, počkat, co je tohle za zápis?

C / C++ › Jaký je nejvhodnější způsob…
31. 3. 2013   #174196

Díky :-)

C / C++ › Jaký je nejvhodnější způsob…
31. 3. 2013   #174191

Ahoj potřeboval bych vědět jak nejjednodušeji rozdělit datový typ int po 8bit a ty pak přetypovat na char, abych je mohl uložit do souboru a naopak. Jak několik typů char,  které jsem načetl ze souboru, spojit do jednoho int. Zde je můj příklad. Nebo je úplně jednoduší způsob?

	unshort value;
	unshort firstInt;
	unshort secondaryInt;
	cin >> value;
	firstInt = value;
	secondaryInt = value;
	firstInt <<= 8;
	firstInt >>= 8;
	secondaryInt >>= 8;
	cout << (char)firstInt << " " << (char)secondaryInt << endl;
	value = firstInt + 256 * secondaryInt;
	char firstChar;
	char secondaryChar;
	cin >> firstChar;
	cout << endl;
	cin	>> secondaryChar;
	cout << endl;
	value = (unshort)secondaryChar;
	value <<= 8;
	value = value + (unshort)firstChar;
	firstInt = value;
	secondaryInt = value;
	firstInt <<= 8;
	firstInt >>= 8;
	secondaryInt >>= 8;
	cout << (char)firstInt << " " << (char)secondaryInt << endl;
	value = firstInt + 256 * secondaryInt;
	cout << value << endl;
C / C++ › Program spadne, když se volá…
30. 3. 2013   #174137

Ahoj, může to být  takhle? Nebo je nějaký jednoduší způsob?

/* Je to jenom priklad, napadlo me to a myslim, ze se mi to muze hodit*/

	unshort value;
	unshort firstInt;
	unshort secondaryInt;
	cin >> value;
	firstInt = value;
	secondaryInt = value;
	firstInt <<= 8;
	firstInt >>= 8;
	secondaryInt >>= 8;
	cout << (char)firstInt << " " << (char)secondaryInt << endl;
	value = firstInt + 256 * secondaryInt;
	char firstChar;
	char secondaryChar;
	cin >> firstChar;
	cout << endl;
	cin	>> secondaryChar;
	cout << endl;
	value = (unshort)secondaryChar;
	value <<= 8;
	value = value + (unshort)firstChar;
	firstInt = value;
	secondaryInt = value;
	firstInt <<= 8;
	firstInt >>= 8;
	secondaryInt >>= 8;
	cout << (char)firstInt << " " << (char)secondaryInt << endl;
	value = firstInt + 256 * secondaryInt;
	cout << value << endl;
C / C++ › Program spadne, když se volá…
30. 3. 2013   #174119

trochu jsem to zkrášlil a hned to funguje. :-D

#pragma once

#include <fstream>
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

typedef unsigned short int unshort;
typedef unsigned long int unlong;

class Image
{
public:
	Image ();
	void CreatePoints (unshort x, unshort y);
	~Image ();
	bool LoadFile (string nameFile);
	bool SaveFile (string nameFile);
	unshort GetValueFromThisPoint (unshort itsPoint) const {return pPoint[itsPoint] + itsPoint;}
	void ConstructPoint ();
	void SetValueOfThisPoint (unshort itsPoint, unshort itsValue) {pPoint[itsPoint] = itsValue;}
	void SetPosition(unshort x, unshort y);
private:
	unshort *pPoint;
	unshort *pHeight, *pWidth;
};

class PlanetaryGeneration
{
public:
	PlanetaryGeneration ();
	PlanetaryGeneration (unshort x, unshort y);
	~PlanetaryGeneration ();
	bool SaveFiles ();
	bool LoadFiles ();
	string GetName(short itsX, short itsY);
	void SetCoordinate (short itsX, short itsY);
	void SetName ();
private:
	Image *pImage;
	short *pX;
	short *pY;
	string *pName;
};

PlanetaryGeneration::PlanetaryGeneration ()
{
	pX = new short;
	pY = new short;
	pName = new string;
	*pX = 0;
	*pY = 0;
	*pName = "Earth";
	pImage = new Image[9];
	for (int i = 0; i < 9; i++)
	{
	}
}

PlanetaryGeneration::PlanetaryGeneration (unshort x, unshort y)
{
	pX = new short;
	pY = new short;
	pName = new string;
	*pX = 0;
	*pY = 0;
	*pName = "Earth";
	pImage = new Image[9];
	for (int i = 0; i < 9; ++i)
	{
		pImage[i].CreatePoints(x,y);
	}
}

PlanetaryGeneration::~PlanetaryGeneration ()
{
	delete [] pImage;
	delete pX;
	delete pY;
	delete pName;
}

bool PlanetaryGeneration::SaveFiles ()
{
	int k = 0;
	string itsName;
	for (int i = -1; i <= 1; i++)
	{
		for (int j = -1; j <= 1; j++)
		{
			itsName = GetName(i,j);
			if (itsName != "error")
			{
				if (pImage[k].SaveFile(itsName))
				{
				}
				else
				{
					return false;
				}
			}
			++k;
		}
	}
	return true;
}

bool PlanetaryGeneration::LoadFiles ()
{
	int k = 0;
	string itsName;
	for (int i = -1; i <= 1; i++)
	{
		for (int j = -1; j <= 1; j++)
		{
			itsName = GetName(i,j);
			if (itsName != "error")
			{
				if (pImage[k].LoadFile(itsName))
				{
				}
				else
				{
					return false;
				}
			}
			++k;
		}
	}
	return true;
}

string PlanetaryGeneration::GetName(short itsX, short itsY) 
{
	if (itsX > 1 || itsX < -1 || itsY > 1 || itsY < -1)
	{
		cout << " Input method GetName() must be in range -1 to 1!" << endl;
	}
	else
	{
		short resultX = *pX + itsX;
		short resultY = *pY + itsY;
		stringstream streamX;
		stringstream streamY;
		streamX << resultX;
		streamY << resultY;
		if (resultX < 0 || resultY < 0)
		{}
		else
		{
			string wholeName = *pName + streamX.str() + "_" + streamY.str() + ".raw";
			return wholeName;
		}
	}
	return "error";
}

void PlanetaryGeneration::SetCoordinate (short itsX, short itsY)
{
	*pX = itsX;
	*pY = itsY;
}
void PlanetaryGeneration::SetName ()
{
	cout << "Write name of file." << endl;
	cin >> *pName;
	//cout << endl << *pName << endl;
}

//class Planet;


Image::Image ()
{
	pHeight = new unshort;
	pWidth = new unshort;
	*pHeight = 0;
	*pWidth = 0;
	pPoint = 0;
}

void Image::CreatePoints (unshort x, unshort y)
{
	if (x >= 256)
	{
		if (x <= 4096)
		{
			*pHeight = x;
		}
		else
		{
			*pHeight = 4096;
		}
	}
	else
	{
		*pHeight = 256;
	}
	if (y >= 256)
	{
		if (y <= 4096)
		{
			*pWidth = y;
		}
		else
		{
			*pWidth = 4096;
		}
	}
	else
	{
		*pWidth = 256;
	}
	pPoint = new unshort[*pHeight * *pWidth];
	ConstructPoint ();
}
Image::~Image ()
{
	delete pHeight;
	delete pWidth;
	delete [] pPoint;
}

bool Image::LoadFile (string nameFile)
{
	cout << endl <<"Begin Load File " << "\"" << nameFile << "\"" << "." << endl;
	unlong la = 0;
	unlong lb = 0;;
	unlong numberPoint;
	unshort number;
	lb = 0;
	ifstream inImageFile(nameFile,ios::binary);
	if(!inImageFile)
	{
		cout << endl <<"Unable to open." << endl;
		return false;
	}
	for (unshort i = 0; i < *pHeight; i++)
	{
		for (unshort j = 0; j < *pWidth; j++)
		{
			numberPoint = *pHeight*j+ *pWidth;
			inImageFile.read((char*) &number,sizeof number);
			pPoint[numberPoint] = number;
			la = 100*i/ *pHeight;
			if (la != lb)
			{
				cout << "Load File: "<< la << " %"<< " " << number << endl;
				lb = la;
			}
		}
	}
	inImageFile.close();
	cout << endl << "Complete Load File: "<< 100 << " %"<< endl;
	return true;
}

bool Image::SaveFile (string nameFile)
{
	cout << endl <<"Begin Save File " << "\"" << nameFile << "\"" << "." << endl;
	unlong la = 0;
	unlong lb = 0;
	unlong numberPoint;
	unshort number;
	ofstream outImageFile(nameFile,ios::binary);
	if(!outImageFile)
	{
		cout << endl <<"Unable to open." << endl;
		return false;
	}
	for (unshort i = 0; i < *pHeight; i++)
	{
		for (unshort j = 0; j < *pWidth; j++)
		{
			numberPoint = *pHeight*j+ *pWidth;
			number = pPoint[numberPoint];
			outImageFile.write((char*) &number,sizeof number);
			la = 100*i/ *pHeight;
			if (la != lb)
			{
				cout << "Save File: "<< la << " %"<< endl;
				lb = la;
			}
		}
	}
	outImageFile.close();
	cout << endl << "Complete Save File: "<< 100 << " %"<< endl;
	return true;
}

void Image::ConstructPoint ()
{
	unlong la = 0;
	unlong lb = 0;
	unlong numberPoint;
	cout << "Create new image." << endl << endl;
	for (unshort i = 0; i < *pHeight; i++)
	{
		for (unshort j = 0; j < *pWidth; j++)
		{
			numberPoint = *pHeight*j+ *pWidth;
			pPoint[numberPoint] = i;
			la = 100*i/ *pHeight;
			if (la != lb)
			{
				cout << "Create: "<< la << " %"<< " " << pPoint[numberPoint] <<endl;
				lb = la;
			}
		}
	}
	cout << "Complete: "<< 100 << " %"<< endl;
}
C / C++ › Program spadne, když se volá…
29. 3. 2013   #174115

Ok ale to nic nemění na tom, ze program spadne, kdy delokuju paměť. Jinak, co se týkám používání typedef a dynamické alokaci, vše se dá zatím snadno změnit. ;-)

C / C++ › Program spadne, když se volá…
29. 3. 2013   #174110

no mě celkem baví vypisovat unsigned short int. :-D :-P

C / C++ › Program spadne, když se volá…
29. 3. 2013   #174108

Ahoj, program spadne, když se volá destructor ~Image () , konkrétně řádek "delete [] pPoint;"

#pragma once

#include <fstream>
#include <iostream>
#include <string>
#include <sstream>

using namespace std;

class Image
{
public:
	Image ();
	void CreatePoints (unsigned short int x, unsigned short int y);
	~Image ();
	bool LoadFile (string nameFile);
	bool SaveFile (string nameFile);
	unsigned short int GetValueFromThisPoint (unsigned short int itsPoint) const {return pPoint[itsPoint] + itsPoint;}
	void ConstructPoint ();
	void SetValueOfThisPoint (unsigned short int itsPoint, unsigned short int itsValue) {pPoint[itsPoint] = itsValue;}
	void SetPosition(unsigned short int x, unsigned short int y);
private:
	unsigned short int *pPoint;
	unsigned short int *pHeight, *pWidth;
};

class PlanetaryGeneration
{
public:
	PlanetaryGeneration ();
	PlanetaryGeneration (unsigned short int x, unsigned short int y);
	~PlanetaryGeneration ();
	bool SaveFiles ();
	bool LoadFiles ();
	string GetName(signed short int itsX, signed short int itsY);
	void SetCoordinate (signed short int itsX, signed short int itsY);
	void SetName ();
private:
	Image *pImage;
	signed short int *pX;
	signed short int *pY;
	string *pName;
};

PlanetaryGeneration::PlanetaryGeneration ()
{
	pX = new signed short int;
	pY = new signed short int;
	pName = new string;
	*pX = 0;
	*pY = 0;
	*pName = "Earth";
	pImage = new Image[9];
	for (int i = 0; i < 9; i++)
	{
	}
}

PlanetaryGeneration::PlanetaryGeneration (unsigned short int x, unsigned short int y)
{
	pX = new signed short int;
	pY = new signed short int;
	pName = new string;
	*pX = 0;
	*pY = 0;
	*pName = "Earth";
	pImage = new Image[9];
	for (int i = 0; i < 9; ++i)
	{
		pImage[i].CreatePoints(x,y);
	}
}

PlanetaryGeneration::~PlanetaryGeneration ()
{
	delete [] pImage;
	delete pX;
	delete pY;
	delete pName;
}

bool PlanetaryGeneration::SaveFiles ()
{
	int k = 0;
	string itsName;
	for (int i = -1; i <= 1; i++)
	{
		for (int j = -1; j <= 1; j++)
		{
			itsName = GetName(i,j);
			if (itsName != "error")
			{
				if (pImage[k].SaveFile(itsName))
				{
				}
				else
				{
					return false;
				}
			}
			++k;
		}
	}
	return true;
}

bool PlanetaryGeneration::LoadFiles ()
{
	int k = 0;
	string itsName;
	for (int i = -1; i <= 1; i++)
	{
		for (int j = -1; j <= 1; j++)
		{
			itsName = GetName(i,j);
			if (itsName != "error")
			{
				if (pImage[k].LoadFile(itsName))
				{
				}
				else
				{
					return false;
				}
			}
			++k;
		}
	}
	return true;
}

string PlanetaryGeneration::GetName(signed short int itsX, signed short int itsY) 
{
	if (itsX > 1 || itsX < -1 || itsY > 1 || itsY < -1)
	{
		cout << " Input method GetName() must be in range -1 to 1!" << endl;
	}
	else
	{
		signed short int resultX = *pX + itsX;
		signed short int resultY = *pY + itsY;
		stringstream streamX;
		stringstream streamY;
		streamX << resultX;
		streamY << resultY;
		if (resultX < 0 || resultY < 0)
		{}
		else
		{
			string wholeName = *pName + streamX.str() + "_" + streamY.str() + ".raw";
			return wholeName;
		}
	}
	return "error";
}

void PlanetaryGeneration::SetCoordinate (signed short int itsX, signed short int itsY)
{
	*pX = itsX;
	*pY = itsY;
}
void PlanetaryGeneration::SetName ()
{
	cout << "Write name of file." << endl;
	cin >> *pName;
	//cout << endl << *pName << endl;
}

//class Planet;


Image::Image ()
{
	pHeight = new unsigned short int;
	pWidth = new unsigned short int;
	*pHeight = 0;
	*pWidth = 0;
	pPoint = 0;
}

void Image::CreatePoints (unsigned short x, unsigned short int y)
{
	if (x >= 256)
	{
		if (x <= 4096)
		{
			*pHeight = x;
		}
		else
		{
			*pHeight = 4096;
		}
	}
	else
	{
		*pHeight = 256;
	}
	if (y >= 256)
	{
		if (y <= 4096)
		{
			*pWidth = y;
		}
		else
		{
			*pWidth = 4096;
		}
	}
	else
	{
		*pWidth = 256;
	}
	pPoint = new unsigned short int[*pHeight * *pWidth];
	ConstructPoint ();
}
Image::~Image ()
{
	delete pHeight;
	delete pWidth;
	delete [] pPoint;
}

bool Image::LoadFile (string nameFile)
{
	cout << endl <<"Begin Load File " << "\"" << nameFile << "\"" << "." << endl;
	unsigned long int *la = new unsigned long int;
	unsigned long int *lb = new unsigned long int;
	unsigned long int numberPoint;
	unsigned short int number;
	*lb = 0;
	ifstream inImageFile(nameFile,ios::binary);
	if(!inImageFile)
	{
		cout << endl <<"Unable to open." << endl;
		return false;
	}
	for (unsigned short int i = 0; i < *pHeight; i++)
	{
		for (unsigned short int j = 0; j < *pWidth; j++)
		{
			numberPoint = *pHeight*j+ *pWidth;
			inImageFile.read((char*) &number,sizeof number);
			pPoint[numberPoint] = number;
			*la = 100*i/ *pHeight;
			if (*la != *lb)
			{
				cout << "Load File: "<< *la << " %"<< " " << number << endl;
				*lb = *la;
			}
		}
	}
	inImageFile.close();
	cout << endl << "Complete Load File: "<< 100 << " %"<< endl;
	return true;
}

bool Image::SaveFile (string nameFile)
{
	cout << endl <<"Begin Save File " << "\"" << nameFile << "\"" << "." << endl;
	unsigned long int *la = new unsigned long int;
	unsigned long int *lb = new unsigned long int;
	unsigned long int numberPoint;
	unsigned short int number;
	*lb = 0;
	ofstream outImageFile(nameFile,ios::binary);
	if(!outImageFile)
	{
		cout << endl <<"Unable to open." << endl;
		return false;
	}
	for (unsigned short int i = 0; i < *pHeight; i++)
	{
		for (unsigned short int j = 0; j < *pWidth; j++)
		{
			numberPoint = *pHeight*j+ *pWidth;
			number = pPoint[numberPoint];
			outImageFile.write((char*) &number,sizeof number);
			*la = 100*i/ *pHeight;
			if (*la != *lb)
			{
				cout << "Save File: "<< *la << " %"<< endl;
				*lb = *la;
			}
		}
	}
	outImageFile.close();
	cout << endl << "Complete Save File: "<< 100 << " %"<< endl;
	return true;
}

void Image::ConstructPoint ()
{
	unsigned long int *la = new unsigned long int;
	unsigned long int *lb = new unsigned long int;
	*lb = 0;
	unsigned long int numberPoint;
	cout << "Create new image." << endl << endl;
	for (unsigned short int i = 0; i < *pHeight; i++)
	{
		for (unsigned short int j = 0; j < *pWidth; j++)
		{
			numberPoint = *pHeight*j+ *pWidth;
			pPoint[numberPoint] = i;
			*la = 100*i/ *pHeight;
			if (*la != *lb)
			{
				cout << "Create: "<< *la << " %"<< " " << pPoint[numberPoint] <<endl;
				*lb = *la;
			}
		}
	}
	delete la;
	delete lb;
	cout << "Complete: "<< 100 << " %"<< endl;
}

 

 

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