Création de frontière - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Création de frontière (/showthread.php?tid=3382) |
Création de frontière - biboum - 06-12-2008 Bonjour. J'ai un petit soucis technique Dans mon jeu, il y a des pays (France, Pays-Bas, Belgique, peu importe...^^) J'aimerais faire en sorte de pouvoir fermer-ouvrir les frontières. Mais comment dire que la Belgique à une frontière avec le Luxembourg, la France, l'Allemagne, etc), que le Danemark que avec L'allemagne ... Ce n'est pas sur une carte (pas encore), donc j'imagine qu'il va falloir chercher la réponse par la BDD. J'avais pensé à inscrire pour chaque pays les frontières qu'il possède...mais le problème c'est que mes pays sont composé en térritoire, et que chaque térritoire peut devenir un autre pays du jour au lendemain...donc je ne vois pas trop comment automatiser cela. Merci de votre aide RE: Création de frontière - Karedas - 06-12-2008 Est ce que des territoires peuvent se créer en cours de jeu ? RE: Création de frontière - Nodark - 06-12-2008 Je ne pense pas ! Les territoires seront la dès le début le jeu,la différence,et qu'ils peuvent changer de pays qui les contrôle C'est bien ça? RE: Création de frontière - Sephi-Chan - 06-12-2008 En fait, il faut modéliser une relation plusieurs à plusieurs (avec 2 tables, donc). Une table contients les territoires, l'autre les liaisons d'un territoire à l'autre. Par exemple, dans la table pays, on a le couple (id | nom) : Citation :1 | France Notre table qui lieraient des pays à des pays (qu'on pourrait appeler pays_pays) contiendraient les données suivantes (id_pays_1 | id_pays_2 | distance) : Citation :1 | 2 | 3 # Signifie que la France (1) touche la Belgique (2) et qu'il y a 3 unités de distance entre les 2. Je ne sais pas si tu as déjà fais de la théorie des graphes, mais c'en est. Avec ça tu modélises un graphe orienté car tu peux faire des frontière à sens unique en retirant une ligne dans la table : si j'enlève la première ligne de la table, les Français ne peuvent plus aller en Belgique, mais les Belges peuvent aller en France. Tu peux également avoir un poids (la distance, en l'occurrence) qui diffère pour aller d'un point à un autre (le trajet Belgique/Allemagne peut être plus court (pour telle ou telle raison) que le trajet Allemagne/Belgique). Tu peux également avoir plusieurs chemins d'un point à un autre, ou plusieurs types de chemin (aérien, maritime, sous-terrain, terrestre, téléportation, etc.) Enfin bon, ça claque quoi. Et avec ça, tu peux facilement appliquer plein, plein d'algorithme qui concernent cette même théorie des graphes. Sephi-Chan RE: Création de frontière - Seren - 06-12-2008 Une question importante avant c'est de se poser la question c'est de savoir comment tu vas représenter des territoires de formes non géométriques. Pour une forme géométrique, tu peux utiliser des équations. Par exemple, X>38 c'est la Corée du Nord, X<= 38 c'est la Corée du Sud. Les deux pays sont séparés par le parrallèe de 38° Nord. Dans ce cas là ça tombe bien . Mais si tu as des formes complexes, une solution c'est d'utiliser un masque de territoire, C'est à dire que chaque "case" ou "lieux" à une propriété qui identifie son territoire. Exemple graphique : 000000022222211111111111 000002222222222111111111 000000022222221111111111 000000022222222211111111 000000022220004440000000 003333333000000444400000 003333330000000004444000 003333300000000000440440 000000000000000000000000 C'est très laid, j'ai essayé de faire grossièrement: 0 = Mer / Ocean 1 = Allemagne/ Autriche / Suisse 2 = France 3 = Péninsule Ibérique 4 = Italie A partir du moment ou tu as une représentation comme celle ci dans ta base. tu peux définir un tableau ou une table frontière: frontiere[3][2] = "ouverte"; frontiere[2][1] = "fermée"; Lors d'un déplacement/ changement de territoire, tu vérifies si la case de départ et d'arrivée sont dans le meme territoire : si c'est le cas pas de test, sinon vérifier l'état de frontière. RE: Création de frontière - biboum - 06-12-2008 Oui Nodark, C'est bien cela. Le térritoire de Paris peut en cas de guerre devenir Espagnol, Anglais ou Thailandais. Mes tables térritoires, pays, sont déjà crées. Ainsi qu'une table pour les latitudes/longitudes. J'avoue que la solution de Seren, j'ai rien compris du tout... J'avais fait une autre table où chaque térritoire a un numero qui l'identifie comme "mer/terre/ile/territoire cotier, etc" Mais par contre la solution de Sephi-Chan est pas mal, bien qu'un peu longue également à mettre en place. Je pensais qu'il y aurait une solution plus simple^^, Je vois qu'il n'en est rien...merci Du coup ca oblige à marquer chaque territoire et ses frontières et sa distance avec chaque térritoire si je comprend bien ? La France avec ses voisins proches, mais également la france avec la lituanie, la finlande, l'ukraine, bref chaque pays et sa distance en nombre de case... RE: Création de frontière - Sephi-Chan - 06-12-2008 Moi c'est Sephi-Chan, pas Séphi-phan… Je me suis permis de corriger moi même. Dans la table pays_pays, tu indiques seulement les territoires limitrophes. Ensuite, quand tu veux aller de la France à la Lituanie, tu utilises un algorithme de recherche de chemin pour déterminer la meilleur route. L'algorithme de Dijkstra est le plus fiable. Ensuite, rien ne t'empêche de d'ouvrir des voies directes entre deux pays non limitrophes : il te suffit d'ajouter alors une entrée dans la table pays_pays. Sephi-Chan RE: Création de frontière - biboum - 07-12-2008 Je vais tenter de faire ca C'est un poil compliqué... Mais bon on va y arriver ^^ |