Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Co tu jest zle?


Rekomendowane odpowiedzi

Opublikowano

Kod na bibliotece sfml , usiłuje zrobić że po wciśnięciu klawisza Strzałki do góry postać w grze podskakuje ale taki problem ze gdy klikam strzaleke to nic się nie dzieje . pomocy!

 

 

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{

        for( int xyz = 1; xyz <= 10; xyz++ )
        {
             postac.Move( 0, - 1.0 );
        }
        for( int xyz = 1; xyz <= 10; xyz++ )
        {
             postac.Move( 0, + 1.0 );
        }
}

 

 

... May the odds be ever in your favour ... All you need is love ... Now boy, now you own me ...

Opublikowano

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{
			 for( int xyz = 1; xyz <= 10; xyz++ )
			 {
					 postac.Move.y -=1;
			 }
			 for( int xyz = 1; xyz <= 10; xyz++ )
			 {
					 postac.Move.y +=1;
			 }
}

 

postac.Move( 0, - 1.0 );

co to w ogóle jest, skąd to wziełeś ?

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
Opublikowano

bo równocześnie postać się unosi i opada czy coś :P bo funkcję for są obie idętyczne czyli jeżeli jedna z nich zadziała to druga też, czyli jeżeli pójdzie w górę to i w duł lub w cale :P

 

 

@UP to co on ma też powinno działać.

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Opublikowano

lol ale że mnie debil.

 

Move to funkcja ! hahaha.....

 

No to nie może być -1 +1

 

tylko

int x;

int y=0;

 

 

Move(0,++y);

 

Move(0,--y);

Zamykam temat, bo autor nie trzyma poziomu.

....

Polityka forum zakazuję nam zamykać tematy, tylko dlatego, że są na niskim poziomie.

I lold.
Opublikowano

@UP weź może mu cały kod popraw z opisem błędów ;)

 

 

PS. to co on tu ma z tym ruchem to to powinno działać, bo mam coś niemal identycznego w swojej grze (3D, tu może być różnica, bo jest na Direct3D), ale u mnie by to zadziałało tylko błąd z funkcją for jest ;)

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Opublikowano

Dobra, a więc ja napiszę co i jak :D

 

 

Jeżeli chodzi ci o skakanie to wystarczy dać timer :P

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{

for( int xyz = 1; xyz <= 10; xyz++ )
{
postac.Move.y -=1;
}

Sleep(500) //po skosu zawisa w powietrzu na 0,5 sekundy 

for( int xyz = 1; xyz <= 10; xyz++ )
{
postac.Move.y +=1;
}
}

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Opublikowano

Up nie chce mi komplikowac tego kodu kodu :/

Edit@

Przerobiłem to tak

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{
for( int xyz = 1; xyz <= 10; xyz++ )
{
postac.Move( 0, + 1 );//tu zmieniłem
}
Sleep(500);
for( int xyz = 1; xyz <= 10; xyz++ )
{
 postac.Move( 0, + 1 );//tu zmienilem
}
}

I teraz postac po kliknieciu strzalki w górę po około 0.5 sekundzie przesuwa się w duł o kawalek :/

Potem jeszcze zmieniłem na coś takiego

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{
for( int xyz = 1; xyz <= 10; xyz++ )
{
postac.Move( 0, - 1 );
Sleep(50);//dla płynnosci
}
Sleep(500);
for( int xyz = 1; xyz <= 10; xyz++ )
{
 postac.Move( 0, + 1 );
Sleep(50);//dla płynnosci ruchów
}
}

I teraz znowu pentle wykonują się równocześnie bo tak jakby nic nie reaguje :/

 

 

... May the odds be ever in your favour ... All you need is love ... Now boy, now you own me ...

Opublikowano

Up. Już po zmieniałem i opisałem co się dzieje

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
 {
  for( int podskok = 1; podskok <= 10; podskok++ )
  {
   postac.Move( 0, - 1 );
   Sleep(50);
  }
  Sleep(500); //po skosu zawisa w powietrzu na 0,5 sekundy 
  for( int opadanie = 1; opadanie <= 10; opadanie++ )
  {
   postac.Move( 0, + 1 );
   Sleep(50);
  }
 }

Teraz postać po kliknięciu klawisza Nie zmienia pozycji więc chyba pętle się wykonują równocześnie :/

 

 

... May the odds be ever in your favour ... All you need is love ... Now boy, now you own me ...

Opublikowano

if( sterowanie.IsKeyDown( sf::Key::Up ) )
{
int skok = 1;
for(; skok < 10; skok++, Sleep(50))
{
 postac.Move(0, skok);
}

for(; skok > 1; skok--, Sleep(50))
{
 postac.Move(0, skok);
 Sleep(50);
}
}

 

Do Sleep() potrzebne jest bodajże #include <windows.h>.

 

A Tobie nie działało dlatego, że w "postac.Move()" drugi argument był ustawiany na +1 albo -1. Z każdą pętlą był ustawiony na 1 albo -1, a nie zwiększał się lub zmienjszał o 1.

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Opublikowano

Up. teraz postać przesuwa się tylko w dół :/

 

 

... May the odds be ever in your favour ... All you need is love ... Now boy, now you own me ...

Opublikowano

Funkcja move jak mowi nazwa powinna dodawac przekazane parametry do polozenia, tak wiec dajac -1 postac leci w dol, dajac move(0,1) postac leci w gore.

 

Teraz skoro mowisz ze u ciebie leci w dol, czyli tak jakbys mial odwrocona os oy. Sprobuj zamienic petle miejscami.

Opublikowano

Up. teraz postać przesuwa się tylko w dół :/

 

No to coś chyba jest nie tak z funkcja move. Weź ją tu wklej.

Smutek to skutek chęci w kontekście skutku

raczej niefrasobliwej wzglądu o treści zgryźliwej

ma postać walca co jeździ nam po palcach.

Opublikowano

Napisz jeszcze raz co ona ma robić ?? Ona ma iść w górę i już nie spadać ?? Jak tak to zostaw tylko to :

 

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{
for( int xyz = 1; xyz <= 10; xyz++ )
{
postac.Move( 0, + 1 );
}
}

 

 

PS. spróbuj też tego :

if( sterowanie.IsKeyDown( sf::Key::Up ) )// skakanie
{
for( int xyz = 1; xyz <= 10; xyz++ )
{
postac.Move( 0, + 1 );
}
}

"Jesteśmy ludźmi, bo popełniamy błędy i na nich się uczymy."

Opublikowano

Ja chcę zeby podskoczyła i spadł.a

 

 

... May the odds be ever in your favour ... All you need is love ... Now boy, now you own me ...

Opublikowano

Jestem prawie pewny, że nie wolno ci w takich funkcjach używać Sleep'ów...

 

Wklej zawsze cały kod.

 

@EDIT

Aha, i w ogóle sam sposób podejścia jest błędny.

W funkcji przechwytującej klawisze należy tylko zmieniać wektor.

 

Samym "poruszaniem się" i wyświetlaniem nowej pozycji należy zajmować się w głównej pętli, w oparciu o aktualny wektor.

 

@DOWN

Nie.

Ta sygnatura jest pusta.

Opublikowano

Up. A mógłbyś podać ten fragment kodu dobry żebym mógł sobie go spokojnie przeanalizować??

 

 

... May the odds be ever in your favour ... All you need is love ... Now boy, now you own me ...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...