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

[SFML] Mapa kafelkowa się nie wyświetla - prośba o sprawdzenie kodu

Ostatnio zmodyfikowano 2012-06-10 20:27
Autor Wiadomość
Mazzir
Temat założony przez niniejszego użytkownika
[SFML] Mapa kafelkowa się nie wyświetla - prośba o sprawdzenie kodu
» 2012-06-10 19:17:14
Jak w temacie, prosiłbym o sprawdzenie i ewentualne poprawienie kodu lub pokazanie mi, gdzie jest błąd.
Przeszukiwałem Google, ale nic mi nie pomogło. Wyświetla się tylko biały ekran.
http://wklej.org/hash/e848d67dcc7/
P-58186
pawajoro
» 2012-06-10 19:32:26
Po pierwsze: kod wklejamy na forum

Po drugie: Pięknie wszystko rysujesz po ekranie, ale przed tym, jak pokazujesz, to czyścisz ekran:
C/C++
App.Clear( Color( 255, 255, 255 ) );
App.Display();
Żeby było jak najprościej: musisz zamienić miejscami obie funkcje :P
P-58188
Mazzir
Temat założony przez niniejszego użytkownika
» 2012-06-10 19:36:21
Nie przyniosło żadnego efektu, nadal mam biały ekran.
P-58190
Mazzir
Temat założony przez niniejszego użytkownika
» 2012-06-10 19:39:18
Usunąłem czyszczenie ekranu i poprawiłem rysowanie kafelków, ale rysuje tylko pierwszy rząd, co nie spełnia moich oczekiwać ;) Nie mam pojęcia czemu, ale nie rysuje kolejnych..

C/C++
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Network.hpp>
#include <SFML/Audio.hpp>
#include "Collision.h"
#include <sstream>
#include <iostream>

using namespace std;
using namespace sf;

int main()
{
    RenderWindow App( VideoMode( 480, 480, 32 ), "..." );
    App.SetFramerateLimit( 60 );
   
    Event event;
    Clock timer;
   
    int sk = 32, wk = 32;
    int map_x = 0, map_y = 0;
   
    int Speed = 100;
    float d;
   
    Image ki1, ki2, ki3;
   
    ki1.LoadFromFile( "images/kafelek1.png" );
    ki2.LoadFromFile( "images/kafelek2.png" );
    ki3.LoadFromFile( "images/kafelek3.png" );
   
    Sprite k1, k2, k3;
   
    k1.SetImage( ki1 );
    k2.SetImage( ki2 );
    k3.SetImage( ki3 );
   
    int mapa[ 15 ][ 15 ] = {
        { 2, 2, 2, 2, 2, 1, 2, 3, 3, 1, 3, 1, 2, 3, 1 },
        { 1, 1, 3, 1, 1, 3, 2, 2, 1, 1, 1, 1, 3, 1, 2 },
        { 2, 2, 2, 2, 2, 2, 3, 3, 1, 3, 2, 2, 3, 1, 3 },
        { 1, 1, 1, 1, 1, 3, 3, 2, 2, 1, 2, 2, 1, 3, 1 },
        { 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 2, 2, 1, 3, 1 },
        { 2, 2, 2, 2, 2, 3, 3, 2, 2, 1, 2, 2, 1, 3, 1 },
        { 1, 1, 1, 1, 1, 3, 3, 2, 2, 2, 3, 2, 1, 3, 1 },
        { 2, 2, 2, 2, 2, 3, 3, 2, 2, 1, 1, 2, 1, 3, 1 },
        { 1, 1, 1, 1, 3, 2, 1, 1, 3, 3, 2, 1, 3, 2, 2 },
        { 3, 3, 3, 3, 2, 1, 1, 1, 3, 2, 1, 3, 2, 2, 3 },
        { 2, 2, 2, 2, 3, 3, 3, 1, 2, 1, 2, 2, 1, 3, 1 },
        { 1, 1, 1, 1, 3, 3, 2, 1, 1, 2, 2, 1, 3, 1, 2 },
        { 2, 2, 2, 2, 2, 1, 1, 1, 3, 2, 1, 3, 2, 2, 3 },
        { 1, 1, 1, 1, 1, 1, 1, 2, 1, 3, 1, 2, 3, 1, 2 },
        { 3, 3, 3, 3, 1, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3 } };
   
    while( App.IsOpened() )
    {
        d = App.GetFrameTime();
        timer.Reset();
       
        for( int i = 0; i < 15; i++ )
        {
            for( int j = 0; j < 15; j++ )
            {
                if( mapa[ i ][ j ] == 1 )
                {
                    k1.SetPosition( sk * map_x, wk * map_y );
                    App.Draw( k1 );
                   
                }
                if( mapa[ i ][ j ] == 2 )
                {
                    k2.SetPosition( sk * map_x, wk * map_y );
                    App.Draw( k2 );
                   
                }
                if( mapa[ i ][ j ] == 3 )
                {
                    k3.SetPosition( sk * map_x, wk * map_y );
                    App.Draw( k3 );
                }
                map_x++;
            }
            map_y++;
        }
       
        while( App.GetEvent( event ) )
        {
            if( event.Type == Event::Closed )
                 App.Close();
           
            if( event.Type == Event::KeyPressed && event.Key.Code == Key::Escape )
                 App.Close();
           
            const Input & ctrl = App.GetInput();
            if( ctrl.IsKeyDown( Key::Left ) || ctrl.IsKeyDown( Key::A ) )
                 map_x--;
           
            if( ctrl.IsKeyDown( Key::Right ) || ctrl.IsKeyDown( Key::D ) )
                 map_x++;
           
            if( ctrl.IsKeyDown( Key::Up ) || ctrl.IsKeyDown( Key::W ) )
                 map_y--;
           
            if( ctrl.IsKeyDown( Key::Down ) || ctrl.IsKeyDown( Key::S ) )
                 map_y++;
           
        }
       
        App.Display();
    }
    return 0;
}
P-58191
pawajoro
» 2012-06-10 19:50:02
Radzę przeczytać: » KursyKurs STC kurs

Przyrzyj się kodowi:
C/C++
for( int i = 0; i < 15; i++ )
{
    for( int j = 0; j < 15; j++ )
    {
        if( mapa[ i ][ j ] == 1 )
        {
            k1.SetPosition( sk * map_x, wk * map_y );
            App.Draw( k1 );
        }
        if( mapa[ i ][ j ] == 2 )
        {
            k2.SetPosition( sk * map_x, wk * map_y );
            App.Draw( k2 );
        }
        if( mapa[ i ][ j ] == 3 )
        {
            k3.SetPosition( sk * map_x, wk * map_y );
            App.Draw( k3 );
        }
        map_x++;
        map_y++;
    }
}
Za pierwszym razem będziesz miał współrzędne 0,0, ale potem 1,1 ; 2,2  itd. Rozumiesz OCB?

PS. map_y++; wywal za najbliższą klamrę
P-58192
Mazzir
Temat założony przez niniejszego użytkownika
» 2012-06-10 19:52:33
Przeniosłem, ale rysuje tylko pierwszą linię.
P-58193
pawajoro
» 2012-06-10 19:56:24
Wrzuć na jakiś hosting te kafelki, to będę testował
P-58195
Mazzir
Temat założony przez niniejszego użytkownika
» 2012-06-10 19:58:35
Obrazki muszą być w folderze images :)

Jak chcesz uruchomić to usuń z nagłówka:
#include "Collision.h"
P-58197
« 1 » 2
  Strona 1 z 2 Następna strona