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

[C++][SFML] Wielkie miasto, wielkie budynki i wielkie tablice

Ostatnio zmodyfikowano 2012-06-19 15:11
Autor Wiadomość
Schulze13
Temat założony przez niniejszego użytkownika
» 2012-06-18 22:03:36
Ok... rozkminiam to wszystko i teraz jak chwycić Duo lub jak stworzyć bezpieczną mapę z obiektów?
//Gratulacje 200 posta :)

@edit
Dostarczam cały kod gry jaki udało mi się stworzyć.

cGra.h
C/C++
//////////////////////////////////////////////////////////////////////////////////
// by Norbert 'Schulze_13' Szulc
// norbertszulc13(a)gmail.com
//////////////////////////////////////////////////////////////////////////////////

#pragma once
#include <SFML/Graphics.hpp>

#include "cCity.h"

class cGra
{
public:
   
    cGra( void )
    {
       
    }
   
    virtual ~cGra( void )
    {
       
    }
   
    //////////////////////////////////////////////////////////////////////////////////
    //petla gry
    //////////////////////////////////////////////////////////////////////////////////
   
    void petlaGry( sf::RenderWindow & oknoApp, sf::Vector2f & mysz )
    {
        cCity miasto( oknoApp, mysz );
       
        //////////////////////////////////////////////////////////////////////////////////
        while( oknoApp.IsOpened() )
        {
            //////////////////////////////////////////////////////////////////////////////////
            //obsluga zdarzen
            /*
           
            Nazwa zdarzenia Opis zdarzenia
            Closed Zostało wysłane żądanie zamknięcia okna.
            Resized Okno zmieniło swój rozmiar.
            LostFocus Okno straciło zaznaczenie.
            GainedFocus Okno odzyskało zaznaczenie.
            TextEntered Został wprowadzony znak, który jest uznawany za tekst (np. litery, znaki specjalne, spacja, cyfry). Dodatkowo: ENTER, BACKSPACE i ESC.
            KeyPressed Klawisz został wciśnięty.
            KeyReleased Klawisz został puszczony.
            MouseWheelMoved Scroll myszy został przekręcony.
            MouseButtonPressed Przycisk myszy został wciśnięty.
            MouseButtonReleased Przycisk myszy został puszczony.
            MouseMoved Położenie zwracane przez mysz zostało zmienione.
            MouseEntered Mysz powróciła do obszaru okna.
            MouseLeft Mysz opuściła obszar okna.
           
            */
           
            while( oknoApp.GetEvent( eventApp ) )
            {
                if( eventApp.Type == sf::Event::Closed )
                {
                    oknoApp.Close();
                }
               
            }
            //////////////////////////////////////////////////////////////////////////////////
           
           
            //////////////////////////////////////////////////////////////////////////////////
            oknoApp.Clear( sf::Color( 0, 0, 30 ) );
            //////////////////////////////////////////////////////////////////////////////////
            //wyswietlanie
           
            miasto.pokaz( oknoApp );
           
            //////////////////////////////////////////////////////////////////////////////////
            oknoApp.Display();
        }
    }
   
private:
    sf::Event eventApp;
   
    //cCity miasto;
};

cCity.h
C/C++
//////////////////////////////////////////////////////////////////////////////////
// by Norbert 'Schulze_13' Szulc
// norbertszulc13(a)gmail.com
//////////////////////////////////////////////////////////////////////////////////

#pragma once
#include <SFML/Graphics.hpp>
#include <iostream>
#include <vector>

#include "cBlok.h"
#include "cBudynek.h"

#define size 128

class cCity
{
public:
   
    cCity( sf::RenderWindow & oknoApp, sf::Vector2f & mysz )
    {
        ptrB = NULL;
       
        for( int i = 0; i < size; i++ )
        {
            for( int j = 0; j < size; j++ )
            {
                ptrB = new cBlok( i, j );
                mapa[ i ][ j ] = ptrB;
               
                //ptrB = NULL;
            }
        }
        std::cout << "\ngotowe mapa ma " << sizeof( mapa ) << " bajtow\npola ma" << sizeof( ptrB = new cBlok( 0, 0 ) ) << "bajtow";
        delete ptrB;
        ptrB = NULL;
    }
   
    virtual ~cCity( void )
    {
       
    }
   
    void pokaz( sf::RenderWindow & oknoApp )
    {
        for( int i = 0; i < size; i++ )
        {
            for( int j = 0; j < size; j++ )
            {
               
                mapa[ i ][ j ]->pokaz( oknoApp );
               
            }
        }
    }
   
private:
   
   
   
    cBlok * ptrB;
    cBlok * mapa[ size ][ size ];

cBlok.h
C/C++
//////////////////////////////////////////////////////////////////////////////////
// by Norbert 'Schulze_13' Szulc
// norbertszulc13(a)gmail.com
//////////////////////////////////////////////////////////////////////////////////

#pragma once
#include <SFML/Graphics.hpp>
#include <iostream>

#include "cBudynek.h"

class cBlok
{
public:
   
    cBlok( int x, int y )
    {
        //std::cout << "blok";
        coord.x = x;
        coord.y = y;
        spBlok.SetPosition( coord );
    }
   
    virtual ~cBlok( void )
    {
    }
   
    void pokaz( sf::RenderWindow & oknoApp )
    {
        oknoApp.Draw( spBlok );
    }
private:
   
    sf::Sprite spBlok;
    sf::Vector2f coord;
   
    int wysokoscBlok;
   
    cBudynek * budynek;
   
};

cBudynek.h
C/C++
#pragma once
class cBudynek
{
public:
   
    cBudynek( void )
    {
    }
   
    virtual ~cBudynek( void )
    {
    }
private:
};

W main.cpp jest działający (kto by pomyślał) kod menu. cBudynek jest pusty bo walczę aktualnie z mapą.
Co do biblioteki... patrz -> tytuł

@edit
Najpierw w main tworzone jest okno i pokazywane. Błąd nie następuje po wygenerowaniu mapy, czyli wywołaniu konstruktora cCity, tylko podczas rysowania za pomocą metody pokaz() w cCity która jest wywoływana z petlaGry().
P-58677
Schulze13
Temat założony przez niniejszego użytkownika
» 2012-06-19 15:11:57
WSZYSTKO wina sprita w cBlok... Problem z pamięcią rozwiązany. Na razie zamykam.
P-58694
1 « 2 »
Poprzednia strona Strona 2 z 2