olozi Temat założony przez niniejszego użytkownika |
Problem ze wskażnikami (SFML 2.0) » 2013-06-27 15:23:59 Piszę program z biblioteką SFML 2.0. Jako, że chwiałbym mieć ładnie uporządkowany program to podzieliłem go na wiele plików. program mi się kompiluje, ale nie wiem dlaczego nie wyświetla grafiki (kwadracik). Problem prawie na pewno znajduje się w pliku spalanie.cpp main.cpp #include <SFML/Graphics.hpp> #include "menu.h" int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600 ), "menu", sf::Style::None ); oknoAplikacji.setActive( false ); menu( & oknoAplikacji ); return 0; }
menu.h #ifndef MENU_H_INCLUDED #define MENU_H_INCLUDED
#include <SFML/Graphics.hpp> void menu( sf::RenderWindow * oknoAplikacji );
#endif
menu.cpp #include "menu.h" #include "spalanie.h"
#include <SFML/Graphics.hpp> #include <iostream>
void menu( sf::RenderWindow * oknoAplikacji ) { oknoAplikacji->setActive( true ); sf::Clock stoper; bool dzialaj = true; sf::Texture tekstura; if( !tekstura.loadFromFile( "obrazek.jpg" ) ) dzialaj = false; sf::Sprite sprajt; sprajt.setTexture( tekstura ); sf::Texture teksturka; teksturka.create( 1, 1 ); sf::Sprite obiekt; obiekt.setTexture( teksturka ); obiekt.setColor( sf::Color( 255, 255, 255 ) ); bool spalanie = false; while( dzialaj ) { sf::Event zdarzenie; while( oknoAplikacji->pollEvent( zdarzenie ) ) { switch( zdarzenie.type ) { case sf::Event::Closed: dzialaj = false; break; case sf::Event::KeyPressed: if( zdarzenie.key.code == sf::Keyboard::Escape ) dzialaj = false; break; case sf::Event::LostFocus: dzialaj = false; break; } } if( sf::Keyboard::isKeyPressed( sf::Keyboard::S ) ) { spal( 0, 0, 20, 20, 10, 10 ); std::cout << "poszlo" << std::endl; spalanie = true; } oknoAplikacji->clear(); if( spalanie ) { oknoAplikacji->draw( sprajt ); spalanie = spalaj( &* oknoAplikacji, & obiekt ); } oknoAplikacji->display(); } }
spalanie.h #ifndef SPALANIE_H_INCLUDED #define SPALANIE_H_INCLUDED
#include <SFML/Graphics.hpp> void spal( int x_Poczatek, int y_Poczatek, int x_Koniec, int y_Koniec, int x_Start, int y_Start ); bool spalaj( sf::RenderWindow * oknoAplikacji, sf::Sprite * kwadracik );
#endif
spalanie.cpp #include "spalanie.h"
#include <SFML/Graphics.hpp> #include <cstdlib> #include <iostream>
int x, y, xKoniec, yKoniec, xPoczatek, yPoczatek; int tab[ 800 ][ 600 ];
void spal( int x_Poczatek, int y_Poczatek, int x_Koniec, int y_Koniec, int x_Start, int y_Start ) { xPoczatek = x_Poczatek; yPoczatek = y_Poczatek; xKoniec = x_Koniec - x_Poczatek; yKoniec = y_Koniec - y_Poczatek; srand( time( NULL ) ); for( int i = 0; i < xKoniec; i++ ) { for( int j = 0; j < yKoniec; j++ ) { tab[ i ][ j ] = rand() % 500 + 1; } } tab[ x_Start ][ y_Start ] = 0; }
bool spalaj( sf::RenderWindow * oknoAplikacji, sf::Sprite * kwadracik ) { int a = 0; for( int i = 0; i < xKoniec; i++ ) { for( int j = 0; j < yKoniec; j++ ) { if( tab[ i ][ j ] <= 0 && tab[ i ][ j ] >= - 500 ) { if( i - 1 >= 0 ) if( tab[ i - 1 ][ j ] > 0 ) { tab[ i - 1 ][ j ] --; } tab[ i ][ j ] --; a++; } kwadracik->setColor( sf::Color( 255, 255, 255 ) ); kwadracik->setPosition( xPoczatek + i, yPoczatek + j ); oknoAplikacji->draw( * kwadracik ); } } if( a != xKoniec * xPoczatek ) return true; else return false; }
|
|
pekfos |
» 2013-06-27 16:55:26 Tekstura się wyświetla, ale jest czarna. Wczytuj ją z pliku, lub użyj sf::RectangleShape, sf::RenderTexture, lub jeszcze czegoś innego. |
|
olozi Temat założony przez niniejszego użytkownika |
» 2013-06-27 16:57:34 dzięki, a jaka jest komenda na tworzenie w Sprajcie? |
|
pekfos |
» 2013-06-27 16:58:11 Jakie tworzenie? |
|
olozi Temat założony przez niniejszego użytkownika |
» 2013-06-27 17:04:10 Aby stworzyć sprajta o pewnych wymiarach... To było głupie pytanie, do manipulacji obiektami służy Shape a nie Sprait, pomyliło mi się. |
|
« 1 » |