CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C++] Problème conception du jeu HEX

kuwabara
kuwabara
Niveau 9
05 avril 2009 à 15:57:13

Bonjour, dans le cadre d'un projet, je suis ammené à programmer le jeu HEX en C++.
Pour plus d'infos sur ce jeu, rendez vous ici:
http://fr.wikipedia.org/wiki/Hex

Cepandant, beaucoup d'obstacles se dressent devant moi:
- Le style de la grille tout d'abord nous est imposé, elle doit être exactement comme cela:
http://img17.imageshack.us/my.php?image=jeuhex.png

J'ai d'abord pensé a dessiner le grille moi-même à grands renforts de cout mais on nous dit que l'utilisateur doit pouvoir choisir les dimensions de la grille au début de la partie. Comment faire pour pouvoir afficher une grille répondant au dimensions choisies par le joueur?

- Deuxième problème, celui du repérage des cases. Si l'utilisateur veut jouer en b4 par exemple, comment pouvoir afficher son pion a l'endroit ou il le souhait? J'avais pensé à implémenter une matrice et de l'associer à la grille mais je ne sais pas si c'est faisable.

C'est pourquoi j'en appelle à votre aide, non pas pour me donner toutes les réponses (ça n'aurait aucun interet) mais au moins pour que vous m'accordiez une petite aide.

Merci a vous.

chris_27
chris_27
Niveau 10
05 avril 2009 à 16:39:20

Tu es obligé de faire ça en mode texte ? :doute:
La SDL (ou autre) et les sprites seraient d'un grand secours ici.

kuwabara
kuwabara
Niveau 9
05 avril 2009 à 20:51:58

ouaip, malheureusement le mode texte est obligatoire :(

Jackass059
Jackass059
Niveau 10
05 avril 2009 à 22:58:22

Pour la matrice associée à la grille de jeu, il n'y a aucun problème. Puisque sur le schéma que tu nous montre, la grille est numérotée de 1 à 5 et de a à e, donc c'est bien une matrice carrée de taille 5.

Pour l'affichage, il faut juste écrire une fonction que se contente de retranscrire la matrice en mode texte ^^.

kuwabara
kuwabara
Niveau 9
06 avril 2009 à 18:52:24

retranscrire une matrice en mode texte? avec ce design :gne: je vois pas comment faire

Jackass059
Jackass059
Niveau 10
06 avril 2009 à 23:28:16

for (int i=0; i<taille; i++) {
for (int j=0; j<taille; j++) {
for (int k=abs(taille/2)-i); k>0; k--) {print(" ");}
print(tab[i][j]);
}
}

un truc du genre quoi XD

kuwabara
kuwabara
Niveau 9
07 avril 2009 à 16:40:10

lol :doute:

Kaoron
Kaoron
Niveau 9
07 avril 2009 à 19:32:57

Hexgrid en mode texte, décomposition :
http://rafb.net/p/7IBYkL79.html

Je te laisse le soin de coder ça comme tu préfères.

Kao.

kuwabara
kuwabara
Niveau 9
07 avril 2009 à 19:36:59

merci, ca m'aidera beaucoup :-)

Kaoron
Kaoron
Niveau 9
07 avril 2009 à 19:39:14

Aww, je n'avais pas regardé le style imposé. Bon, t'as du bol, ça se construit de la même manière, il faut juste changer de motifs.

Et puis comme ça, j'ai pas l'impression de te mâcher le travail.

kuwabara
kuwabara
Niveau 9
07 avril 2009 à 20:03:58

ouai mais j'ia pas compris ton dernier dessin ou tu remplis les cases, t'as utilisé une méthode ou c'étais juste un dessin comme ca?

Kaoron
Kaoron
Niveau 9
07 avril 2009 à 20:18:36

Pas de méthode particulière, c'était juste pour numéroter les lignes et colonnes.

Pseudo supprimé
Pseudo supprimé 07 avril 2009 à 22:57:45

Au passage une matrice classique n'est pas recommandée pour le modèle de données d'un plateau dont les cases ont 6 voisins directs. Utilise une grille de cellules avec des listes chaînées. En plus, tu pourras plus facilement parcourir ta structure, les hexagrilles se computant plutôt bien.

Jackass059
Jackass059
Niveau 10
07 avril 2009 à 23:09:28

Oui, excuse moi je t'ai juste décris comment je ferai pour avoir un affichage en "losange".

La ligne "importante", c'est celle là :

« for (int k=abs(t(aille/2)-i); k>0; k--) {print(" ");} »

Avec le print à adapter.

Kaoron
Kaoron
Niveau 9
07 avril 2009 à 23:11:10

Ou pas! Une hexgrid, c'est les deux axes naturels d'une matrice plus un axe diagonal. Bien plus simple à mettre en œuvre qu'une grille chaînée AMHA.

Cependant, le chaînage peut avoir des propriétés intéressantes pour le problème donné.

Pseudo supprimé
Pseudo supprimé 07 avril 2009 à 23:41:17

Beh oui, vu qu'on manipule une ligne qui serpente de-ci de-là. On peut écrire de beaux algos comme tu le dis. Le problème de la matrice avec un axe diagonal, c'est que les cas limites seront nombreux. D'un autre côté, s'il y a du min-max alpha beta derrière, ça peut faciliter les choses d'un point de vue vitesse de calcul de la valeur d'un état. D'ailleurs, sauf erreur de ma part, les hexgrids ont été popularisées dans les wargames pour leurs intéressantes propriétés d'un point de vue facilité calculatoire ou un truc du genre.

Kaoron
Kaoron
Niveau 9
08 avril 2009 à 00:09:00

Facilité calculatoire ? J'aurais plutôt dit que six adjacences à distance constante, c'est un truc cool, mais bon, je veux bien te croire.

Sur les cas limites... tu t'enflammes un peu je crois - sans offense. Les cas limites d'une matrice n*n (c'en est une)... c'est quand t'as un indice hors limites, tu définis 6 adjacences {(0,1),(1,0),(0,-1),(-1,0),(-1,-1),(1,1)} et t'as tout ce qu'il faut (note que tu peux définir des méthodes sympa pour retourner la liste d'adjacence d'une cellule).
Compares une matrice n*n + 6 couples à une grille chainée indicable. C'est plus simple à créer, les accès aux valeurs se font en temps constant... et t'auras défini les méthodes qui vont bien pour naviguer dans ta structure.

C'est pas comme si on avait besoin d'ajouter ou supprimer des cellules de la grille.

Pseudo supprimé
Pseudo supprimé 08 avril 2009 à 00:22:42

Oui, les accès seront en temps constant. Mais partant du principe que chaque case sera testée et qu'on essaiera de trouver un chemin à partir de celle ci, je pense qu'une navigation avec des objets chaînés peut faciliter les choses. Pour chipoter, dans le cas d'une chaîne, le coût d'un déplacement est un pointage mémoire, dans le cas d'une matrice, c'est un calcul en plus. Mais ça reste du O(1), oui. Et le code avec une version chaînée sera plus élégant, mais ça, ça n'engage que moi :p

http://en.wikipedia.org/wiki/Hex_map
Oui, tu as parfaitement raison (et moi aussi, mais moins, je me disais bien que j'avais lu un truc au sujet des calculs de distance, mais dans notre cas, HEX, ça sert un peu à que dalle, je l'avoue).

tendrills
tendrills
Niveau 4
30 mai 2009 à 23:25:52

Lolilol
Saint DG dit toujours, y'a que des cons qui répondent dans les forums, alors pourquoi poster pour de l'aide sur le projet plutôt que d'aller demander au prof?
C'est mal... c'est très mal !!
sa vaudra un moins pour sa !!

flo-killer-fr
flo-killer-fr
Niveau 14
30 mai 2009 à 23:36:24

Et au vu des réponses, on peux voir que en effet, le grand DG a eu encore une fois raison :hap: . Je rajouterais que c'est mal, tres mal :ziane: :sournois:
Elle est belle la promo de dut info :-(

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment