Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - tenkai188

Pages: [1]
1
Graphique / Re: création et utilisation d'une classe Tile
« le: Août 30, 2017, 09:37:58 pm »
ok je vais refaire ma page main :)
Merci pour les conseils.
Et j'ai réussi a faire + ou - ce que je voulais. Le problème (l'un des problèmes  ::) ) venait du constructeur de ma classe Tile qui créait un nouvel variable id au lieu de changer la valeur de l'attribut déjà existant  :-[

2
Graphique / Re: création et utilisation d'une classe Tile
« le: Août 29, 2017, 05:19:07 pm »
j'ai essayer de modifier mon code comme tu me la conseiller mais je crois que j'ai du me tromper quelque part, du coup c'est pire qu'avant  :(
Maintenant le démarrage est plus lent et le perso ne s’affiche même plus.

#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>        
#include <cstdlib>
#include <fstream>
#include <cctype>
#include "TileMap.h"
#include <array>
#include <vector>
#include "Character.h"
#include "Player.h"
#include "Animation.h"
#include "Main.h"
#include <cmath>
#include "Tile.h"


//void gestion_clavier();
int tileNbr(sf::Sprite playerSprite);

std::vector <Tile> tabTile;
sf::Texture playerTexture;
sf::Sprite playerSprite;
enum Direction { Down, Left, Right, Up };
sf::Vector2i anim(1, Down);
int speed = 2;
bool updateFPS = false;
sf::Clock animClock;
float fpsCount = 0, switchFps = 100, fpsSpeed = 500;
int currenTileX = 0, nbrRow = 0, nbrCol = 0;
int selection = 1;
TileMap map;
int a;
sf::View view;
bool inMenu = true;
bool inGame = false;
sf::Event event;


int main()
{
        sf::Vector2i screenDimensions(1400, 763);

        sf::RenderWindow window(sf::VideoMode(screenDimensions.x, screenDimensions.y), "My first SFML game");

        window.setKeyRepeatEnabled(false);

        a = screenDimensions.x;
        window.setFramerateLimit(60);


        float frameCounter = 0, switchFrame = 100, frameSpeed = 500;

        //image de fond:
        sf::Texture pTexture;
        sf::Sprite fond;
        //rectangle noir a placer sur l'image
        sf::RectangleShape rect(sf::Vector2f((screenDimensions.x / 100) * 20, screenDimensions.y));
        rect.setPosition((screenDimensions.x / 100) * 10, 0);
        rect.setFillColor(sf::Color(0, 0, 0, 170));
        //menu
        sf::Font font;
        sf::String newGame = "New Game";
        sf::String continu = "Load Game";
        sf::String options = "Options";
        sf::String exit = "Exit";

        sf::Text ng(newGame, font, 20);
        sf::Text ctn(continu, font, 20);
        sf::Text opt(options, font, 20);
        sf::Text ext(exit, font, 20);

        //rectangle de selection
        sf::RectangleShape rectSelect(sf::Vector2f((screenDimensions.x / 100) * 20, 30));
        rectSelect.setPosition((screenDimensions.x / 100) * 10, ((screenDimensions.y / 100) * 40));
        rectSelect.setFillColor(sf::Color(255, 255, 255, 0));
        rectSelect.setOutlineColor(sf::Color(255, 255, 255, 255));
        rectSelect.setOutlineThickness(2.0f);

        ng.setColor(sf::Color(255, 255, 255));
        ctn.setColor(sf::Color(255, 255, 255));
        opt.setColor(sf::Color(255, 255, 255));
        ext.setColor(sf::Color(255, 255, 255));


        if (!font.loadFromFile("arial.ttf"))
                std::cout << "Error could not load the font file" << std::endl;

        if (!pTexture.loadFromFile("SplashScreen.jpg"))
                std::cout << "Error could not load player image" << std::endl;

        fond.setTexture(pTexture);
        ng.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 40));
        ctn.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 45));
        opt.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 50));
        ext.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 55));


        std::ifstream monFlux("demoSol.txt");
        std::vector <int> tableau;
        std::vector <int> tabOn;
        std::vector <int> tabOff;
        std::vector <int> tabBelow;
        int nombre;
        tabOn.push_back(56);

        tabOff.push_back(19);
        tabOff.push_back(28);
        tabOff.push_back(33);
        tabOff.push_back(36);
        tabOff.push_back(48);
        tabOff.push_back(49);
        tabOff.push_back(50);

        while (monFlux >> nombre)
                tableau.push_back(nombre);

        for (int a = 0; a < tableau.size(); a++)
        {
                tabTile.push_back(Tile(tableau[a], tabOn, tabOff, tabBelow));

        }

        //création du perso principale
        !playerTexture.loadFromFile("knight.png");
        playerSprite.setTexture(playerTexture);

        while (window.isOpen())
        {
                while (inMenu == true)
                {
                        while (window.pollEvent(event))
                        {
                                switch (event.type)
                                {
                                case sf::Event::Closed:
                                        window.close();
                                        break;
                                }
                                if (event.type == sf::Event::KeyPressed)
                                        updateFPS = true;

                                else
                                        updateFPS = false;

                                if (event.type == sf::Event::KeyPressed)
                                {

                                        if (event.key.code == sf::Keyboard::Up)
                                        {
                                                if (selection == 1)
                                                {
                                                        selection = 4;
                                                        rectSelect.setPosition(((screenDimensions.x / 100) * 10), ((screenDimensions.y / 100) * 55));
                                                }
                                                else
                                                {
                                                        selection--;
                                                        rectSelect.move(0, -((screenDimensions.y / 100) * 5));
                                                }
                                        }
                                        else if (event.key.code == sf::Keyboard::Down)
                                        {
                                                if (selection == 4)
                                                {
                                                        selection = 1;
                                                        rectSelect.setPosition(((screenDimensions.x / 100) * 10), ((screenDimensions.y / 100) * 40));
                                                }
                                                else
                                                {
                                                        selection++;
                                                        rectSelect.move(0, ((screenDimensions.y / 100) * 5));
                                                }
                                        }

                                        if (event.key.code == sf::Keyboard::Return)
                                        {
                                                switch (selection)
                                                {
                                                case 1:
                                                        if (!map.load("tileset.png", sf::Vector2u(32, 32), tabTile, 50, 50))
                                                                return -1;
                                                        inGame = true;
                                                        break;
                                                case 4:
                                                        window.close();
                                                        break;
                                                }
                                        }
                                }
                                window.clear();
                                window.draw(fond);
                                window.draw(rect);
                                window.draw(ng);
                                window.draw(ctn);
                                window.draw(opt);
                                window.draw(ext);
                                window.draw(rectSelect);
                                window.display();
                        }
                }
                while (inGame == true)
                {
                        while (window.pollEvent(event))
                        {
                                switch (event.type)
                                {
                                case sf::Event::Closed:
                                        window.close();
                                        break;
                                }
                                currenTileX = std::abs(playerSprite.getPosition().x / 32);
                                if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
                                {
                                        anim.y = Up;
                                        playerSprite.move(0, -speed);
                                }
                                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
                                {
                                        anim.y = Down;
                                        playerSprite.move(0, speed);
                                }
                                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
                                {
                                        nbrCol = std::abs(playerSprite.getPosition().x / 32);
                                        nbrRow = std::abs(playerSprite.getPosition().y / 32);
                                        currenTileX = (nbrRow * 50) + nbrCol + 1;
                                        /*if (tabTile[currenTileX])
                                        {*/

                                        anim.y = Right;
                                        playerSprite.move(speed, 0);
                                        //}
                                }
                                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
                                {
                                        anim.y = Left;
                                        playerSprite.move(-speed, 0);
                                }
                                if (playerSprite.getPosition().x <= 0)
                                        playerSprite.setPosition(sf::Vector2f(0, playerSprite.getPosition().y));
                                if (playerSprite.getPosition().y <= 0)
                                        playerSprite.setPosition(sf::Vector2f(playerSprite.getPosition().x, 0));
                                if (updateFPS == true)
                                {
                                        if (animClock.getElapsedTime().asMilliseconds() >= 50)
                                        {
                                                anim.x--;
                                                if (anim.x * 32 >= playerTexture.getSize().x)
                                                        anim.x = 2;
                                                animClock.restart();
                                        }
                                }

                                playerSprite.setTextureRect(sf::IntRect(anim.x * 32, anim.y * 32, 32, 32));

                                //parametrage de la vue
                                view.reset(sf::FloatRect(0, 0, screenDimensions.x, screenDimensions.y));
                                sf::Vector2f position(screenDimensions.x / 2, screenDimensions.y / 2);
                                position.x = playerSprite.getPosition().x + 16 - (screenDimensions.x / 2);
                                position.y = playerSprite.getPosition().y + 16 - (screenDimensions.y / 2);
                                if (position.x < 0)
                                        position.x = 0;
                                if (position.y < 0)
                                        position.y = 0;
                                view.reset(sf::FloatRect(position.x, position.y, screenDimensions.x, screenDimensions.y));
                                window.clear();
                                window.setView(view);
                                window.draw(map);
                                window.draw(playerSprite);
                                window.display();
                        }
                }
               
        }
        return 0;
}

int tileNbr(sf::Sprite playerSprite)
{
        nbrCol = std::abs(playerSprite.getPosition().x / 32);
        nbrRow = std::abs(playerSprite.getPosition().y / 32);
        return currenTileX = (nbrRow * 50) + nbrCol;
}
 

3
Graphique / Re: création et utilisation d'une classe Tile
« le: Août 29, 2017, 01:10:13 pm »
j'utilise "screenTitleOn" pour indiquer que j'ai quitter le menu de démarrage.
Pour le clear: je l'ai placer pour effacer le menu de démarrage avant d'afficher la map du jeu :(

4
Graphique / Re: création et utilisation d'une classe Tile
« le: Août 29, 2017, 12:39:55 am »
Non, j'ai seulement un écran noir qui s'affiche avec le sprite de mon perso mais sans la map.
voila ma page main (désolé, comme je débute mon code est très brouillon)  :(

#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>       
#include <cstdlib>
#include <fstream>
#include <cctype>
#include "TileMap.h"
#include <array>
#include <vector>
#include "Character.h"
#include "Player.h"
#include "Animation.h"
#include "Main.h"
#include <cmath>
#include "Tile.h"


//void gestion_clavier();
int tileNbr(sf::Sprite playerSprite);

std::vector <Tile> tabTile ;
sf::Texture playerTexture;
sf::Sprite playerSprite;
enum Direction { Down, Left, Right, Up };
sf::Vector2i anim(1, Down);
int speed=2;
bool updateFPS = false;
sf::Clock animClock;
float fpsCount = 0, switchFps = 100, fpsSpeed = 500;
int currenTileX = 0, nbrRow=0,nbrCol=0;
bool screenTitleOn = true;
int selection = 1;
TileMap map;
int a;
sf::View view;


int main()
{
        sf::Vector2i screenDimensions(1400, 763);
       
        sf::RenderWindow window(sf::VideoMode(screenDimensions.x, screenDimensions.y), "My first SFML game");
       
        window.setKeyRepeatEnabled(false);
       
        a = screenDimensions.x;
        window.setFramerateLimit(60);
       

        float frameCounter = 0, switchFrame = 100, frameSpeed = 500;

        //image de fond:
        sf::Texture pTexture;
        sf::Sprite fond;
        //rectangle noir a placer sur l'image
        sf::RectangleShape rect(sf::Vector2f((screenDimensions.x/100)*20, screenDimensions.y));
        rect.setPosition((screenDimensions.x / 100) * 10, 0);
        rect.setFillColor(sf::Color(0, 0, 0, 170));
        //menu
        sf::Font font;
        sf::String newGame = "New Game";
        sf::String continu = "Load Game";
        sf::String options = "Options";
        sf::String exit = "Exit";

        sf::Text ng(newGame, font, 20);
        sf::Text ctn(continu, font, 20);
        sf::Text opt(options, font, 20);
        sf::Text ext(exit, font, 20);
       
        //rectangle de selection
        sf::RectangleShape rectSelect(sf::Vector2f((screenDimensions.x / 100) * 20, 30));
        rectSelect.setPosition((screenDimensions.x / 100) * 10, ((screenDimensions.y / 100) * 40));
        rectSelect.setFillColor(sf::Color(255, 255, 255, 0));
        rectSelect.setOutlineColor(sf::Color(255, 255, 255, 255));
        rectSelect.setOutlineThickness(2.0f);
       
        ng.setColor(sf::Color(255, 255, 255));
        ctn.setColor(sf::Color(255, 255, 255));
        opt.setColor(sf::Color(255, 255, 255));
        ext.setColor(sf::Color(255, 255, 255));


        if (!font.loadFromFile("arial.ttf"))
                std::cout << "Error could not load the font file" << std::endl;

        if (!pTexture.loadFromFile("SplashScreen.jpg"))
                std::cout << "Error could not load player image" << std::endl;

        fond.setTexture(pTexture);
        ng.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 40));
        ctn.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 45));
        opt.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 50));
        ext.setPosition(((screenDimensions.x / 100) * 15), ((screenDimensions.y / 100) * 55));
       
       
        std::ifstream monFlux("demoSol.txt");
        std::vector <int> tableau;
        std::vector <int> tabOn;
        std::vector <int> tabOff;
        std::vector <int> tabBelow;
        int nombre;
        tabOn.push_back(56);
       
        tabOff.push_back(19);
        tabOff.push_back(28);
        tabOff.push_back(33);
        tabOff.push_back(36);
        tabOff.push_back(48);
        tabOff.push_back(49);
        tabOff.push_back(50);

        while (monFlux >> nombre)
                tableau.push_back(nombre);
       
        for (int a = 0; a < tableau.size(); a++)
        {
                tabTile.push_back(Tile(tableau[a], tabOn, tabOff, tabBelow));

        }
       
        //création du perso principale
        !playerTexture.loadFromFile("knight.png");
        playerSprite.setTexture(playerTexture);

        while (window.isOpen())
        {
               
                sf::Event event;
               
                while (window.pollEvent(event))
                {
                        switch (event.type)
                        {
                        case sf::Event::Closed:
                                window.close();
                                break;

                        }
                        if (event.type == sf::Event::KeyPressed)
                                updateFPS = true;
                       
                        else
                                updateFPS = false;
                       
                       
                currenTileX = std::abs(playerSprite.getPosition().x / 32);
                if ((event.type == sf::Event::KeyPressed)&&(screenTitleOn==true))
                {
                       
                        if (event.key.code == sf::Keyboard::Up)
                        {
                                if (selection == 1)
                                {
                                        selection = 4;
                                        rectSelect.setPosition(((screenDimensions.x / 100) * 10), ((screenDimensions.y / 100) * 55));
                                }
                                else
                                {
                                        selection--;
                                        rectSelect.move(0, -((screenDimensions.y / 100) * 5));
                                }
                        }
                        else if (event.key.code == sf::Keyboard::Down)
                        {
                                if (selection == 4)
                                {
                                        selection = 1;
                                        rectSelect.setPosition(((screenDimensions.x / 100) * 10), ((screenDimensions.y / 100) * 40));
                                }
                                else
                                {
                                        selection++;
                                        rectSelect.move(0, ((screenDimensions.y / 100) * 5));
                                }
                        }

                        if (event.key.code == sf::Keyboard::Return)
                        {
                                switch (selection)
                                {
                                case 1:
                                        screenTitleOn = false;
                                        if (!map.load("tileset.png", sf::Vector2u(32, 32), tabTile, 50, 50))
                                                return -1;
                                        break;
                                case 4:
                                        window.close();
                                        break;
                                }
                        }
                       
                }
                }

                if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
                {
                        anim.y = Up;
                        playerSprite.move(0, -speed);
                }
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
                {
                        anim.y = Down;
                        playerSprite.move(0, speed);
                }
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
                {
                        nbrCol = std::abs(playerSprite.getPosition().x / 32);
                        nbrRow = std::abs(playerSprite.getPosition().y / 32);
                        currenTileX = (nbrRow * 50) + nbrCol+1;
                        /*if (tabTile[currenTileX])
                        {*/

                                anim.y = Right;
                               
                                playerSprite.move(speed, 0);
                        //}
                }
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
                {
                        anim.y = Left;
                        playerSprite.move(-speed, 0);
                }
                if (playerSprite.getPosition().x <= 0)
                        playerSprite.setPosition(sf::Vector2f(0, playerSprite.getPosition().y));
                if (playerSprite.getPosition().y <= 0)
                        playerSprite.setPosition(sf::Vector2f(playerSprite.getPosition().x,0));
                if (updateFPS == true)
                {
                        if (animClock.getElapsedTime().asMilliseconds() >= 50)
                        {
                                anim.x--;
                                if (anim.x * 32 >= playerTexture.getSize().x)
                                        anim.x = 2;
                                animClock.restart();
                        }
                }
               
                playerSprite.setTextureRect(sf::IntRect(anim.x * 32, anim.y * 32, 32, 32));
               
                //parametrage de la vue
                view.reset(sf::FloatRect(0, 0, screenDimensions.x, screenDimensions.y));
                sf::Vector2f position(screenDimensions.x/2, screenDimensions.y/2);
                position.x = playerSprite.getPosition().x + 16 - (screenDimensions.x / 2);
                position.y = playerSprite.getPosition().y + 16 - (screenDimensions.y / 2);
                if (position.x < 0)
                        position.x = 0;
                if (position.y < 0)
                        position.y = 0;
                view.reset(sf::FloatRect(position.x, position.y, screenDimensions.x, screenDimensions.y));
               
                window.clear();
                window.draw(fond);
                window.draw(rect);
                window.draw(ng);
                window.draw(ctn);
                window.draw(opt);
                window.draw(ext);
                window.draw(rectSelect);
                if (screenTitleOn == false)
                {
                        window.clear();
                        window.setView(view);
                        window.draw(map);
                        window.draw(playerSprite);
                }
                window.display();
        }
        return 0;
}
       
int tileNbr(sf::Sprite playerSprite)
{
        nbrCol = std::abs(playerSprite.getPosition().x / 32);
        nbrRow = std::abs(playerSprite.getPosition().y / 32);
        return currenTileX = (nbrRow * 50) + nbrCol;
}
 

5
Graphique / création et utilisation d'une classe Tile
« le: Août 28, 2017, 11:24:01 pm »
Bonjour,

j'ai créé une classe Tile afin de pouvoir créé un tableau dynamique de Tile a partir d'un fichier txt pour gérer plus facilement les collisions. Pour cela cette classe utilise des vector et une énumération pour savoir de quel type de tile il s'agit. Cependant la map se s'affiche pas :(

Tile.h:
#pragma once
#include <SFML/Graphics.hpp>
#include <vector>
#include <iostream>
#include <fstream>
 
class Tile
{
public:
    Tile();
    Tile(int,std::vector<int>, std::vector<int>, std::vector<int>);
    ~Tile();
 
    int getId() const
    {
        return id;
    }
    void setId(int ide)
    {
        id = ide;
    }
 
    enum type { on, off, below };
private:
    int id;
};
 

Tile.cpp:
#include "Tile.h"
Tile::Tile()
{
    id = 0;
    type on;
}
Tile::Tile(int ide, std::vector<int>tabOn, std::vector<int>tabOff, std::vector<int>tabBelow)
{
    int id = ide;
    bool findIt = false;
 
    for (int b = 0; b < tabOn.size(); b++)
    {
        if ((ide == tabOn[b])&&(findIt==false))
        {
            type on;
            findIt = true;
        }
    }
    for (int b = 0; b < tabOff.size(); b++)
    {
        if ((ide == tabOff[b]) && (findIt == false))
        {
            type off;
            findIt = true;
        }
    }
    for (int b = 0; b < tabBelow.size(); b++)
    {
        if ((ide == tabBelow[b]) && (findIt == false))
        {
            type below;
            findIt = true;
        }
    }
}
 

la classe Tilemap que l'on trouve comme exemple sur le site de sfml que j'ai légèrement modifié:
#pragma once
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <ctime>
#include <cstdlib>
#include "Tile.h"
 
class TileMap : public sf::Drawable, public sf::Transformable
{
public:
    TileMap();
    ~TileMap();
    bool load(const std::string& tileset, sf::Vector2u tileSize, std::vector <Tile> tiles, unsigned int width, unsigned int height)
    {
        // on charge la texture du tileset
        if (!m_tileset.loadFromFile(tileset))
            return false;
 
        // on redimensionne le tableau de vertex pour qu'il puisse contenir tout le niveau
        m_vertices.setPrimitiveType(sf::Quads);
        m_vertices.resize(width * height * 4);
 
        // on remplit le tableau de vertex, avec un quad par tuile
        for (unsigned int i = 0; i < width; ++i)
            for (unsigned int j = 0; j < height; ++j)
            {
                // on récupère le numéro de tuile courant
                int tileNumber = tiles[i + j * width].getId();
 
                // on en déduit sa position dans la texture du tileset
                int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
                int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);
 
                // on récupère un pointeur vers le quad à définir dans le tableau de vertex
                sf::Vertex* quad = &m_vertices[(i + j * width) * 4];
 
                // on définit ses quatre coins
                quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
                quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
                quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
                quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);
 
                // on définit ses quatre coordonnées de texture
                quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
                quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
                quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
                quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);
            }
 
        return true;
    }
 
private:
 
    virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
    {
        // on applique la transformation
        states.transform *= getTransform();
 
        // on applique la texture du tileset
        states.texture = &m_tileset;
 
        // et on dessine enfin le tableau de vertex
        target.draw(m_vertices, states);
    }
 
    sf::VertexArray m_vertices;
    sf::Texture m_tileset;
};
 

main.cpp:
std::ifstream monFlux("demoSol.txt");
std::vector <int> tableau;
std::vector <int> tabOn;
std::vector <int> tabOff;
std::vector <int> tabBelow;
int nombre;
tabOn.push_back(56);
 
tabOff.push_back(19);
tabOff.push_back(28);
tabOff.push_back(33);
tabOff.push_back(36);
tabOff.push_back(48);
tabOff.push_back(49);
tabOff.push_back(50);
 
while (monFlux >> nombre)
    tableau.push_back(nombre);
 
for (int a = 0; a < tableau.size(); a++)
{
    tabTile.push_back(Tile(tableau[a], tabOn, tabOff, tabBelow));
 
}
 

if (!map.load("tileset.png", sf::Vector2u(32, 32), tabTile, 50, 50))
                        return -1;
 

6
Graphique / Re: question sur l'exemple de tilemap
« le: Juillet 25, 2017, 02:49:46 pm »
ok je vais jeter un coup d’œil à tous ça
encore merci  :)

7
Graphique / Re: question sur l'exemple de tilemap
« le: Juillet 24, 2017, 10:56:30 pm »

En fait je créé mes map avec un éditeur de map (Tiled) et je l'exporte ensuite sous forme de fichier txt (avec lequel j'utilise le même tileset) dans mon projet sfml .
Malheureusement les virgules sont ajouté automatiquement  :(
Est il possible d'utiliser une virgule comme séparateurs? si oui comment ?
Parce que sa risque de me prendre un moment pour enlevé les virgules a chaque map créé :(
Ou alors as tu une autre méthode a me conseiller pour créé et gérer les maps?

Dans tous les cas merci pour tes réponses et conseils. :)

8
Graphique / Re: question sur l'exemple de tilemap
« le: Juillet 24, 2017, 06:11:12 pm »
Une liste d'entier séparé par des virgules.
"25,25,85,47,65,55,etc..."

9
Graphique / Re: question sur l'exemple de tilemap
« le: Juillet 24, 2017, 04:10:45 pm »
Il y a quelque chose que je dois mal comprendre  :-\
j'ai d'abord ajouter ton code:
        std::ifstream monFlux("demoSol.txt");
        std::vector <int> tableau;
       
        int nombre;
        while (!monFlux.eof())
        {
                while (monFlux >> nombre);
                        tableau.push_back(nombre);
        }
       
        for (int a = 0; a < tableau.size(); a++)
        {
                std::cout << tableau[a] << std::endl;
        }
        std::cout << tableau.size() << std::endl;
       
 
Rien ne semble s'afficher.
Ensuite je me suis dit que c'était mon "while (!monFlux.eof())" qui devait poser problème. je l'ai donc supprimé:
        std::ifstream monFlux("demoSol.txt");
        std::vector <int> tableau;
       
        int nombre;
       
        while (monFlux >> nombre);
                tableau.push_back(nombre);
       
       
        for (int a = 0; a < tableau.size(); a++)
        {
                std::cout << tableau[a] << std::endl;
        }
        std::cout << tableau.size() << std::endl;
       
 
Et là quand je parcourt le tableau il n'affiche qu'un seul nombre et une taille de 1
Je suppose donc que le problème vient de la manière dont je lis le fichier
Mais je trouve pas de solution  :(

10
Graphique / Re: question sur l'exemple de tilemap
« le: Juillet 23, 2017, 09:02:57 pm »
c'est ce que j'ai fait (je me base sur le tuto: https://openclassrooms.com/courses/programmez-avec-le-langage-c)
Mais probablement par ce que je débute, je n'arrive pas a faire quelque chose de correct :'(
Mon dernier essai:
std::ifstream monFlux("demoSol.txt");
        std::vector <int> tableau;
       
        std::string str;
        while (!monFlux.eof())
        {
                        int nombre;
                        monFlux >> nombre;
                        tableau.push_back(nombre);
                               
        }
       
        for (int a = 0; a < tableau.size(); a++)
        {
                std::cout << tableau[a] << std::endl;
        }
 

Merci quand même de m'avoir répondu ^^ et désolé si ma question étais hors sujet

11
Graphique / question sur l'exemple de tilemap
« le: Juillet 23, 2017, 07:36:06 pm »
Bonjour,

je débute en c++ ainsi que dans l'utilisation de SFML et j'ai une question concernant les tileMap.

j'ai (en suivant le tuto : https://www.sfml-dev.org/tutorials/2.4/graphics-vertex-array-fr.php) créé une map.
Est-il possible de remplir le tableau level (créé et utilisé dans l'exemple) avec un fichier txt ? Si oui, comment ?
j'ai essayer de le faire en ouvrant le fichier en lecture et en utilisant un tableau dynamique mais je n'y arrive pas :(

Pages: [1]