• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[SFML]Zapis gry

Object Storage Arubacloud
0 głosów
418 wizyt
pytanie zadane 22 maja 2017 w C i C++ przez redie Obywatel (1,490 p.)
void Game::save()
{
	fstream save,save1,save2;
	Text title("Save your game", font, 80);
	title.setPosition(window.getSize().x / 2.0 - title.getGlobalBounds().width / 2.0, 50.0);
	Text text[4];
	string str[] = { "Empty save","Empty save","Empty save","Return" };
	for (auto i = 0;i < 4;i++) {
		text[i].setFont(font);
		text[i].setCharacterSize(30);
		text[i].setString(str[i]);
		text[i].setPosition(window.getSize().x / 2.0 - text[i].getGlobalBounds().width / 2.0, (250.0f + i * 50.0f));
	}
	while (state==SAVE) {
		Vector2f mouse(Mouse::getPosition(window));
		Event event;
		while (window.pollEvent(event)) {
			if (event.type == Event::KeyReleased && event.key.code == Keyboard::Escape) {
				state = MGAME;
			}
			else if (text[0].getGlobalBounds().contains(mouse) && event.type == Event::MouseButtonReleased
				&& event.key.code == Mouse::Left) {
				cout << "save 1" << endl;
				save.open("Data/Save_1.txt", ios::in | ios::out | ios::trunc);
				save << "PlayerHP: " << player->gethp() << "\n";
				save << "CurrentLevel: " << player->getcurrentLevel() << "\n";
				save << "CurrentEq: " << player->getcurrentweapon()->getName() << " " << player->getcurrentarmor()->getName() << "\n";
				text[0].setString("Save 1");
			}
			else if (text[1].getGlobalBounds().contains(mouse) && event.type == Event::MouseButtonReleased
				&& event.key.code == Mouse::Left) {
				cout << "save 2" << endl;				
				save1.open("Data/Save_2.txt", ios::in | ios::out);
				save1 << "PlayerHP: " << player->gethp() << "\n";
				save1 << "CurrentLevel: " << player->getcurrentLevel() << "\n";
				save1 << "CurrentEq: " << player->getcurrentweapon()->getName() << " " << player->getcurrentarmor()->getName() << "\n";
				text[1].setString("Save 2");
			}
			else if (text[2].getGlobalBounds().contains(mouse) && event.type == Event::MouseButtonReleased
				&& event.key.code == Mouse::Left) {
				cout << "save 3" << endl;
				save2.open("Data/Save_3.txt", ios::in | ios::out);
				save2 << "PlayerHP: " << player->gethp() << "\n";
				save2 << "CurrentLevel: " << player->getcurrentLevel() << "\n";
				save2 << "CurrentEq: " << player->getcurrentweapon()->getName() << " " << player->getcurrentarmor()->getName() << "\n";
				text[2].setString("Save 3");
			}
			else if (text[3].getGlobalBounds().contains(mouse) && event.type == Event::MouseButtonReleased
				&& event.key.code == Mouse::Left) {
				state = MGAME;
			}
			for (auto &i : text) {
				if (i.getGlobalBounds().contains(mouse))
					i.setFillColor(Color::Blue);
				else i.setFillColor(Color::Red);
			}
		}
		window.clear();
		window.setView(viewMenu);
		window.draw(background);
		window.draw(title);
		for (auto i : text)
			window.draw(i);
		window.display();
	}
	save.close();
	save1.close();
	save2.close();
}

 

Cześć, potrzebuję małej pomocy, otóż napisałem sobie tak kod do prostego zapisu stanu gry, i chciałbym żeby to działało dla trzech plików, aktualnie tylko ten pierwszy się poprawnie zapisuje, w te dwa kolejne nie wiem czemu nie mogę zapisać :/ (w ogóle mi się plik nie tworzy o to chodzi), i pytanko też mam dlaczego też to zapisywanie działa jak wczęśniej dam np. cout << "COŚ" << endl;

1 odpowiedź

0 głosów
odpowiedź 22 maja 2017 przez bartolinciu Dyskutant (7,580 p.)
Możliwe, że dzieje się tak przez to, że zamiast endl dajesz '\n' ponieważ endl wywołuje flush() na strumieniu wyjścia.
komentarz 22 maja 2017 przez redie Obywatel (1,490 p.)
Niestety dalej nic :/ Nie tworzy mi się plik 2 i 3 zp owyższego kodu :/

Podobne pytania

+3 głosów
0 odpowiedzi 222 wizyt
+4 głosów
0 odpowiedzi 134 wizyt
pytanie zadane 31 lipca 2023 w Nasze projekty przez Bondrusiek Maniak (61,370 p.)
+1 głos
2 odpowiedzi 646 wizyt
pytanie zadane 19 sierpnia 2018 w Nasze projekty przez Michał Muzyka Pasjonat (24,080 p.)

92,568 zapytań

141,420 odpowiedzi

319,617 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...