MapModelExample.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * Exemple d'utilisation du MapModel
  4. *
  5. * Ce fichier montre comment utiliser le modèle CRUD pour gérer les cartes.
  6. */
  7. // Inclure les classes nécessaires
  8. require_once __DIR__ . '/../Models/Map.php';
  9. require_once __DIR__ . '/../Models/MapModel.php';
  10. /**
  11. * Fonction principale d'exemple
  12. */
  13. function runMapModelExample()
  14. {
  15. echo "=== Exemple d'utilisation du MapModel ===\n\n";
  16. // 1. Créer la table si elle n'existe pas
  17. echo "1. Création de la table maps...\n";
  18. if (MapModel::createTable()) {
  19. echo "✓ Table créée avec succès\n\n";
  20. } else {
  21. echo "✗ Erreur lors de la création de la table\n\n";
  22. return;
  23. }
  24. // 2. Créer une nouvelle carte
  25. echo "2. Création d'une nouvelle carte...\n";
  26. $map = new Map("Carte exemple", 5, 5);
  27. // Ajouter quelques tuiles
  28. $map->setTile(0, 0, new Tile(['type' => 'castle', 'resources' => ['gold' => 100]]));
  29. $map->setTile(2, 2, new Tile(['type' => 'forest', 'resources' => ['wood' => 50]]));
  30. $map->setTile(4, 4, new Tile(['type' => 'mountain', 'elevation' => 2000]));
  31. $mapId = MapModel::create($map, "Carte d'exemple avec différents types de tuiles");
  32. if ($mapId) {
  33. echo "✓ Carte créée avec succès, ID: $mapId\n\n";
  34. } else {
  35. echo "✗ Erreur lors de la création de la carte\n\n";
  36. return;
  37. }
  38. // 3. Charger la carte depuis la base
  39. echo "3. Chargement de la carte depuis la base...\n";
  40. $loadedMap = MapModel::findMap($mapId);
  41. if ($loadedMap) {
  42. echo "✓ Carte chargée: {$loadedMap->getName()}\n";
  43. echo "Dimensions: {$loadedMap->getWidth()} x {$loadedMap->getHeight()}\n";
  44. // Afficher quelques statistiques
  45. $stats = $loadedMap->getStatistics();
  46. echo "Cases vides: {$stats['empty_count']} ({$stats['empty_percentage']}%)\n";
  47. echo "Types présents: " . implode(', ', array_keys($stats['tile_type_counts'])) . "\n\n";
  48. } else {
  49. echo "✗ Erreur lors du chargement de la carte\n\n";
  50. }
  51. // 4. Mettre à jour la carte
  52. echo "4. Mise à jour de la carte...\n";
  53. $loadedMap->setTile(1, 1, new Tile(['type' => 'river', 'resources' => ['water' => 1000]]));
  54. $loadedMap->setName("Carte exemple modifiée");
  55. if (MapModel::update($mapId, $loadedMap, "Carte mise à jour avec une rivière")) {
  56. echo "✓ Carte mise à jour avec succès\n\n";
  57. } else {
  58. echo "✗ Erreur lors de la mise à jour\n\n";
  59. }
  60. // 5. Lister toutes les cartes avec pagination
  61. echo "5. Liste des cartes (pagination)...\n";
  62. $paginated = MapModel::paginate(1, 5);
  63. echo "Page {$paginated['pagination']['current_page']} sur {$paginated['pagination']['total_pages']}\n";
  64. echo "Total de cartes: {$paginated['pagination']['total']}\n";
  65. foreach ($paginated['data'] as $mapData) {
  66. echo "- ID {$mapData['id']}: {$mapData['name']} ({$mapData['width']}x{$mapData['height']})\n";
  67. }
  68. echo "\n";
  69. // 6. Recherche de cartes
  70. echo "6. Recherche de cartes contenant 'exemple'...\n";
  71. $searchResults = MapModel::search('exemple');
  72. echo "Résultats trouvés: " . count($searchResults) . "\n";
  73. foreach ($searchResults as $result) {
  74. echo "- {$result['name']} (ID: {$result['id']})\n";
  75. }
  76. echo "\n";
  77. // 7. Statistiques globales
  78. echo "7. Statistiques globales...\n";
  79. $globalStats = MapModel::getGlobalStats();
  80. echo "Total de cartes: {$globalStats['total_maps']}\n";
  81. echo "Dimensions moyennes: {$globalStats['average_width']} x {$globalStats['average_height']}\n";
  82. if ($globalStats['latest_map']) {
  83. echo "Dernière carte: {$globalStats['latest_map']['name']} (créée le {$globalStats['latest_map']['created_at']})\n";
  84. }
  85. echo "\n";
  86. // 8. Dupliquer une carte
  87. echo "8. Duplication de la carte...\n";
  88. $duplicateId = MapModel::duplicate($mapId, "Copie de la carte exemple");
  89. if ($duplicateId) {
  90. echo "✓ Carte dupliquée avec succès, nouvel ID: $duplicateId\n\n";
  91. } else {
  92. echo "✗ Erreur lors de la duplication\n\n";
  93. }
  94. // 9. Export de la carte
  95. echo "9. Export de la carte au format JSON...\n";
  96. $exportData = MapModel::export($mapId, 'json');
  97. if ($exportData) {
  98. echo "✓ Export réussi (" . strlen($exportData) . " caractères)\n";
  99. echo "Aperçu: " . substr($exportData, 0, 100) . "...\n\n";
  100. } else {
  101. echo "✗ Erreur lors de l'export\n\n";
  102. }
  103. // 10. Nettoyage (optionnel - décommenter pour supprimer les cartes de test)
  104. /*
  105. echo "10. Suppression des cartes de test...\n";
  106. if (MapModel::delete($mapId)) {
  107. echo "✓ Carte originale supprimée\n";
  108. }
  109. if (MapModel::delete($duplicateId)) {
  110. echo "✓ Carte dupliquée supprimée\n";
  111. }
  112. echo "\n";
  113. */
  114. echo "=== Exemple terminé ===\n";
  115. }
  116. // Exécuter l'exemple si le fichier est appelé directement
  117. if (basename(__FILE__) === basename($_SERVER['PHP_SELF'] ?? '')) {
  118. runMapModelExample();
  119. }