Methodes.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "Methodes.h"
  2. std::string niveauSuivant(std::string index, std::string niveauPrecedant)
  3. {
  4. std::ifstream flux(index.c_str());
  5. std::string _niveauSuivant;
  6. if(flux)
  7. {
  8. if(niveauPrecedant == "")
  9. {
  10. if(getline(flux, _niveauSuivant))
  11. return _niveauSuivant.erase(0, 5);
  12. else
  13. return "";
  14. }
  15. bool trouver = false;
  16. while(getline(flux, _niveauSuivant))
  17. {
  18. if(trouver)
  19. return _niveauSuivant;
  20. if(_niveauSuivant == niveauPrecedant)
  21. trouver = true;
  22. }
  23. if(trouver)
  24. save("Niveaux/0index.txt", niveauPrecedant);
  25. }
  26. return "";
  27. }
  28. bool chargerNiveau(char terrain[24*18], std::string chemin)
  29. {
  30. std::ifstream flux(chemin.c_str());
  31. if(flux)
  32. {
  33. for(int y = 0;y<18;y++)
  34. {
  35. std::string ligne = "";
  36. if(!getline(flux, ligne))
  37. std::cout << "ligne " << y+1 << ": raté" << std::endl;
  38. for(unsigned int x = 0;x<24;x++)
  39. {
  40. if(x<ligne.size())
  41. terrain[x+y*24] = ligne[x];
  42. else
  43. terrain[x+y*24] = '#';
  44. }
  45. }
  46. return true;
  47. }
  48. return false;
  49. }
  50. void save(std::string index, std::string niveauActuel)
  51. {
  52. std::ifstream iflux(index.c_str());
  53. if(!iflux)
  54. return;
  55. std::string tmp, firstline, ligne;
  56. //enlever ligne save:
  57. getline(iflux, ligne);
  58. //recuperer premiere ligne tout en la mettant dans tmp
  59. getline(iflux, firstline);
  60. tmp+=firstline+"\n";
  61. while(getline(iflux, ligne))tmp+=ligne+"\n";
  62. if(niveauActuel == ligne)
  63. niveauActuel = firstline;
  64. iflux.close();
  65. std::ofstream oflux(index.c_str());
  66. if(!oflux)
  67. return;
  68. oflux << "save:"+niveauActuel+"\n" << tmp;
  69. }