Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem ze wskażnikami (SFML 2.0)

Ostatnio zmodyfikowano 2013-06-27 17:04
Autor Wiadomość
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
C/C++
#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
C/C++
#ifndef MENU_H_INCLUDED
#define MENU_H_INCLUDED

#include <SFML/Graphics.hpp>
void menu( sf::RenderWindow * oknoAplikacji );

#endif // MENU_H_INCLUDED

menu.cpp
C/C++
#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" ) ) //Wczytywanie tekstury
         dzialaj = false;
    //, sf::IntRect(10,10,32,32) //laduje czesc obrazka
    //tekstura.setSmooth(true); //Wygladzanie krawedzi
    sf::Sprite sprajt; //Tworzenie sprajta
    sprajt.setTexture( tekstura ); //Ladujemy teksture do sprajta
   
   
    sf::Texture teksturka; //Tworzenie tekstury
    teksturka.create( 1, 1 );
    sf::Sprite obiekt; //Tworzenie sprajta
    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: //Okno stracilo zaznaczenie
                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
C/C++
#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_H_INCLUDED

spalanie.cpp
C/C++
#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;
   
}
P-86360
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.
P-86365
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?
P-86366
pekfos
» 2013-06-27 16:58:11
Jakie tworzenie?
P-86367
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ę.
P-86369
« 1 »
  Strona 1 z 1