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

SFML Poruszanie się postaci.

Object Storage Arubacloud
+1 głos
875 wizyt
pytanie zadane 12 maja 2015 w C i C++ przez Adrian1999 Nałogowiec (34,570 p.)

Witam, otóż zaczynam się ciągle powoli bawić w sfmlu, napotkałem taki problem że chciałbym poruszać się postacią, no dodaję do pozycji x + 1 piksel ale nic się nie dzieje 

#include <iostream>
#include <SFML/Graphics.hpp>
#include <cmath>
#include <Windows.h>
#include <string>
#include <vector>
using namespace std;
struct pozycja
{
	int x;
	int y;

};
int main()
{
	
	sf::Vector2f rozmiar(300, 600);
	sf::CircleShape kwadracik(30, 4);
	pozycja pk;
	pk.x = 10; pk.y = 20;
	
	sf::RenderWindow okno(sf::VideoMode(rozmiar.x, rozmiar.y), "Moje okno");

	while (okno.isOpen())
	{
		kwadracik.setPosition(pk.x, pk.y);
		sf::Event event;
		while (okno.pollEvent(event))
		{
			if (event.type == sf::Event::Closed)
				okno.close();
			if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::A))
				pk.x + 1;
		}
		


		okno.draw(kwadracik);
	
		okno.display();
	}


	return 0;
}

Potrafi ktoś wyjaśnić czemu?

2 odpowiedzi

+1 głos
odpowiedź 12 maja 2015 przez Arsetus Gaduła (4,760 p.)
pk.x + 1;

Zmień ten zapis na:

pk.x += 1;

Powinno zadziałać, ponieważ twój zapis nie zmienia wartości pk.x. Wartość pk.x musi być na nowo definiowana aby pozycja kwadracika się zmieniała.

Pozdrawiam.

komentarz 12 maja 2015 przez Adrian1999 Nałogowiec (34,570 p.)
to nadal nic nie daje :D
komentarz 12 maja 2015 przez Arsetus Gaduła (4,760 p.)

W takim przypadku przenieś jeszcze:

kwadracik.setPosition(pk.x, pk.y);

na koniec drugiej pętli while.

komentarz 12 maja 2015 przez Adrian1999 Nałogowiec (34,570 p.)
Zrobilem tak,efekt jest dziwny ale dziala. Co nie zmienia faktu ze jest nie do użycia, popatrzyłem jakie funkcje ma SFML znalazłem funkcje move, działa znakomicie, nie ma żadnych usterek ani przesunięć dodatkowych, nie trzeba dodatkowo pamięci dodawać. Po prostu cud dla programisty.
komentarz 12 maja 2015 przez Arsetus Gaduła (4,760 p.)
edycja 12 maja 2015 przez Arsetus
Cieszę się, że znalazłeś rozwiazanie. Ja osobiście nie znam SFML tylko SDL, lecz nawet bez znajomości żadnej biblioteki można zauważyć niektóre błędy, dlatego też odpowiedziałem.

Pozdrawiam i powodzenia w projekcie.
komentarz 12 maja 2015 przez Ursan Bywalec (2,920 p.)

Zanim odkryłem move() robiłem:

foo.setPosition(foo.getPosition().x+1,foo.getPosition().y+1);
0 głosów
odpowiedź 12 maja 2015 przez niezalogowany
http://www.sfml-dev.org/tutorials/2.1/window-inputs.php Tutaj masz link do oficjalnych tutoriali SMFL-a, w pierwszym bloku kodu pisze character.move(1,0), co oznacza, że sprite przesunie się o 1 w osi X. Ja też jestem nowy w SFML-u ;) Miłej nauki życzę :)

Podobne pytania

0 głosów
0 odpowiedzi 111 wizyt
pytanie zadane 6 września 2020 w C i C++ przez NieMaJuzNazw Użytkownik (890 p.)
0 głosów
4 odpowiedzi 221 wizyt
pytanie zadane 1 sierpnia 2015 w C i C++ przez Slavian Początkujący (420 p.)
0 głosów
2 odpowiedzi 529 wizyt
pytanie zadane 27 grudnia 2016 w C i C++ przez sofnir Gaduła (4,690 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 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!

...