Voila j'ai un petit problème, j'ai une boucle qui me set les coordonné de mes sprites automatiquement, donc jusque là tout marche, sauf que plus tard dans le code je les récupère mais ils ont changé ... j'ai essayé pleins de technique et chercher sur des forum mais je n'ai pas d'erreur similaire. Si quelqu'un avait une solution svp
je n'ai pas pu insérer les images mais ce sont des cubes de 125px par 125px.
Merci pour ceux qui m'aideront, bonne journée a tous !
Le code est le suivant :
#include <SFML/Graphics.hpp>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
using namespace sf;
int main()
{
int winSizeX = 800;
int winSizeY = 600;
const int sizeBlock = 125 / 5;
RenderWindow app(VideoMode(winSizeX, winSizeY), "SFML window");
View view(Vector2f(winSizeX/2,winSizeY/2),Vector2f(winSizeX,winSizeY));
Texture g;
if (!g.loadFromFile("textures/grass.bmp"))
return EXIT_FAILURE;
Sprite grass(g);
grass.setOrigin(0,15);
Texture s;
if (!s.loadFromFile("textures/stone.bmp"))
return EXIT_FAILURE;
Sprite stone(s);
Texture a;
if (!a.loadFromFile("textures/air.bmp"))
return EXIT_FAILURE;
Sprite air(a);
ifstream fichier("map/map1.txt");
int x = 0;
int mapX = 6;
int posX;
int y = 0;
int mapY = 40;
int posY;
Sprite tab[mapY][mapX];
if(fichier){
string ligne;
while(getline(fichier, ligne)){
for(x = 0; x < ligne.length(); x++){
Sprite sprite;
if(ligne[x] == 'g'){
sprite = grass;
}
else if(ligne[x] == 's'){
sprite = stone;
}
else if(ligne[x] == ' '){
sprite = air;
}
posX = x * sizeBlock;
posY = y * sizeBlock;
sprite.setScale(sprite.getScale().x/5,sprite.getScale().x/5);
sprite.setPosition(posX , posY);
tab[y][x] = sprite;
}
y ++;
}
}
else{
cout << "ERREUR: Impossible d'ouvrir le fichier en lecture." << endl;
}
while (app.isOpen()){
Event event;
while (app.pollEvent(event)){
if (event.type == Event::Closed)
app.close();
}
if(Keyboard::isKeyPressed(Keyboard::Right)){
view.move(1,0);
}
if(Keyboard::isKeyPressed(Keyboard::Left)){
view.move(-1,0);
}
app.clear();
app.setView(view);
for(y = 0; y < 6; y++){
for(x = 0; x < 40; x++){
app.draw(tab[y][x]);
}
}
app.display();
system("pause");
}
return EXIT_SUCCESS;
}
Version simple: Les dimensions d'un tableau doivent être connues à la compilation, ainsi le compilateur pourra leur réserver l'espace mémoire qui leur convient. Dans le cas contraire, accéder a un élément peut en fait être l'espace mémoire d'une tout autre variable. Bien sûre c'est imprévisible, c'est ce qu'on appelle un comportement indéterminé, ou UB (Undifined Behavior).
Pour les tableaux dynamique, C++ propose un type spécialement adapté: std::vector. Et pour les tableaux statiques, il y a aussi un type: std::array.
Ces 2 types t'offrirons bien plus de souplesses et de garanties que les tableaux "C-like" tout moisis, n'hésites pas à les utiliser et en abuser.
Créer une procédure qui s'appelle elle même, procédurception !
Tableau modifiant une valeur contre ma volonté
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Créer une procédure qui s'appelle elle même, procédurception !
En recherche d'emploi.
Créer une procédure qui s'appelle elle même, procédurception !
Créer une procédure qui s'appelle elle même, procédurception !
Créer une procédure qui s'appelle elle même, procédurception !