SFML problem ze sterowaniem
Ostatnio zmodyfikowano 2012-01-27 20:46
arek194 Temat założony przez niniejszego użytkownika |
SFML problem ze sterowaniem » 2012-01-27 18:40:57 Witam, Mam problem ze sterowaniem w moim prototypie gry, gdy naciskam spacje to pocisk leci tylko wtedy kiedy jest wciśnięta spacja lub klawisz strzałki. Pod spodem zamieszczam kod źródłowy. #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> #include <SFML/System.hpp> #include <iostream> #include "obiekty.h"
#define WIDTH 800 #define HEIGHT 400
bool wyjscie = false;
const int ILE_KUL = 5;
void init_ludek( GRACZ & ludek ); void draw_ludek( GRACZ & ludek, sf::RenderWindow & oknoAplikacji );
void init_pocisk( POCISK pocisk[], int size ); void draw_pocisk( POCISK pocisk[], int size, sf::RenderWindow & oknoAplikacji ); void fire_pocisk( POCISK pocisk[], int size, GRACZ & ludek ); void update_pocisk( POCISK pocisk[], int size );
int main() { GRACZ ludek; POCISK pocisk[ ILE_KUL ]; sf::RenderWindow oknoAplikacji( sf::VideoMode( WIDTH, HEIGHT, 32 ), "Kurs SFML - http://cpp0x.pl" ); init_ludek( ludek ); init_pocisk( pocisk, ILE_KUL ); while( oknoAplikacji.IsOpened() ) { oknoAplikacji.Clear( sf::Color( 0, 0, 255 ) ); draw_ludek( ludek, oknoAplikacji ); draw_pocisk( pocisk, ILE_KUL, oknoAplikacji ); sf::Event zdarzenie; while( oknoAplikacji.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == sf::Event::Closed ) oknoAplikacji.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) oknoAplikacji.Close(); if( zdarzenie.Type == sf::Event::MouseButtonPressed && zdarzenie.MouseButton.Button == sf::Mouse::Middle ) oknoAplikacji.Close(); const sf::Input & sterowanie = oknoAplikacji.GetInput(); if( sterowanie.IsKeyDown( sf::Key::Left ) ) { ludek.x -= ludek.predkosc; } else if( zdarzenie.Type == sf::Event::KeyPressed && sterowanie.IsKeyDown( sf::Key::Right ) ) { ludek.x += ludek.predkosc; } else if( zdarzenie.Type == sf::Event::KeyPressed && sterowanie.IsKeyDown( sf::Key::Up ) ) { ludek.y -= ludek.predkosc; } else if( zdarzenie.Type == sf::Event::KeyPressed && sterowanie.IsKeyDown( sf::Key::Down ) ) { ludek.y += ludek.predkosc; } else if( zdarzenie.Type == sf::Event::KeyPressed && sterowanie.IsKeyDown( sf::Key::Space ) ) { fire_pocisk( pocisk, ILE_KUL, ludek ); } else if( zdarzenie.Type == sf::Event::KeyPressed && sterowanie.IsKeyDown( sf::Key::Escape ) ) { wyjscie = false; } if( ludek.x < 0 ) ludek.x = 0; else if( ludek.x > 300 ) ludek.x = 300; else if( ludek.y < 0 ) ludek.y = 0; else if( ludek.y > 400 ) ludek.y = 400; update_pocisk( pocisk, ILE_KUL ); } oknoAplikacji.Display(); } return 0; }
void init_ludek( GRACZ & ludek )
void draw_ludek( GRACZ & ludek, sf::RenderWindow & oknoAplikacji )
void init_pocisk( POCISK pocisk[], int size )
void draw_pocisk( POCISK pocisk[], int size, sf::RenderWindow & oknoAplikacji )
void fire_pocisk( POCISK pocisk[], int size, GRACZ & ludek )
void update_pocisk( POCISK pocisk[], int size )
|
|
pekfos |
» 2012-01-27 19:14:44 aktualizuj pociski poza pętlą komunikatów. |
|
arek194 Temat założony przez niniejszego użytkownika |
» 2012-01-27 20:46:27 dziękuje za pomoc temat do zamknięcia |
|
« 1 » |