[SFML 2.0]Stoper
Ostatnio zmodyfikowano 2014-05-17 23:06
GGG205 Temat założony przez niniejszego użytkownika |
» 2014-05-16 21:52:33 Odświeżam. |
|
colorgreen19 |
» 2014-05-16 22:21:16 zmien moze troche system. Zrób w klasie timer wewnętrzny czas i do funkcji przekazuj czas obiegu jednej pętli internal_time += elapsed; i zrób warunek if( internal_time.asSeconds() >= seconds( 2.f ) ) { internal_time = Time::Zero; return true; }
moze to podziała |
|
pekfos |
» 2014-05-17 20:46:50 Do aktualnego kodu: Co wypisuje ten cout w Timer() i co jeszcze używa tego zegara? Najlepiej podaj cały kod związany z tym stoperem. |
|
GGG205 Temat założony przez niniejszego użytkownika |
» 2014-05-17 22:53:04 To więc tak. Kiedy timer wrzucam do pliku main restartuje się. Ale kiedy dam funckje z tymi npc to nie ma restartu. Więc colorgreen na razie zostanę przy tym moim bo mam nadzieję :). @pekfos: 1.Cout wypisuje liczby od 1-6 odlicza i po 6 sekundach wykonuje się akcja losowego poruszania, ale liczy dalej 7,8,9 i tak dalej. Jeśli wrzucę do main.cpp i ustawię by odliczał np do 10 wykonuje akcje i resetuje zegar tak jak tego chcę. 2.Raczej nic, ale dam kod, gdzie używana jest ta funkcja. void Character::move( float elapsed, ADDON_CHAR STYLE_MOVE, Game cDown ) { switch( STYLE_MOVE ) { case RANDOM_MOVE: if( cDown.Timer( 6 ) == true ) { int process =( rand() % 2 ) + 1; if( process == 1 ) DIR = static_cast < DIRECTIONS >( rand() % 4 ); else { if( DIR == LEFT ) velocity.x -= 1; else if( DIR == RIGHT ) velocity.x += 1; else if( DIR == UP ) velocity.y -= 1; else if( DIR == DOWN ) velocity.y += 1; } } break; } SPRplayer.setTextureRect( IntRect( frame * 32, DIR * 48, 32, 48 ) ); SPRplayer.move( velocity.x * elapsed, velocity.y * elapsed ); pos.x = SPRplayer.getPosition().x; pos.y = SPRplayer.getPosition().y; } 3.Cały kod ze stoperem Game.h #ifndef GAME_H #define GAME_H
#include <SFML\Graphics.hpp>
using namespace sf;
class Game { private: Clock clock; float timer; public: bool Timer( float time ); };
#endif Game.cpp #include <SFML\Graphics.hpp> #include <iostream> #include "Game.h"
bool Game::Timer( float time ) { timer = clock.getElapsedTime().asSeconds(); std::cout << timer << std::endl; if( timer >= time ) { clock.restart(); return true; } else return false; return false; } Tylko tyle |
|
pekfos |
» 2014-05-17 22:58:48 void Character::move( float elapsed, ADDON_CHAR STYLE_MOVE, Game cDown )
|
Przekazujesz stoper przez wartość. |
|
GGG205 Temat założony przez niniejszego użytkownika |
» 2014-05-17 23:04:59 To mam dać & ?
@EDIT
Tak działa. Dzięki. |
|
pekfos |
» 2014-05-17 23:06:48 Sprawdź..? Skoro przez wartość jest źle, to dużo więcej możliwości nie masz. |
|
1 « 2 » |