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

Aide en python

wonsder
wonsder
Niveau 3
10 février 2019 à 11:48:59

salut, d'habitude j'aime chercher par moi-même, mais pour le coup j'ai aucune idée de comment faire...

j'essaie de faire un mini jeu en python avec un pote, ou on a un perso et un minotaure dans un labyrinthe, le minotaure doit trouver le perso.

j'ai fait la génération du labyrinthe, et il est stocké dans une matrice M(20;20) ou chaque cellule correspond à une case de la matrice, et dans la matrice il y a les infos pour savoir si chacun des murs est ouvert ou non. par exemple, si dans la matrice, on lit à l’emplacement (2,5) "['open', 'open', 'close', 'open'], cela signifie qu'a la case du labyrinthe de coordonnées 2, 5, les murs de droit, du bas et du haut sont ouvert, et celui de gauche est fermé.

voilà mon problème: j'aimerai que le perso ne voit pas tout le labyrinthe, seulement une partie devant lui, comme si il l'éclairait, ou son champ de vision. et je n'ai aucune idée de comment faire en sorte que je n'affiche que cette partie.

si certains d'entre vous pourraient m'aider.... :)

blackapplex
blackapplex
Niveau 10
10 février 2019 à 12:33:16

Déjà il y a un algo très simple, tu éclaires tout en cercle autour de là où est le perso, au delà tu rends la map plus sombre.
Maintenant si jamais tu veux t'amuser à faire l'algo plus compliqué qui fait qu'il ne voit que là où il est censé voir, donc pas à travers les murs, l'algorithme doit probablement s'apparenter à du ray tracing. Je ne connais pas précisément le nom d'un algo qui ferait ça intelligement pour ton cas, mais ça doit pouvoir se trouver.
Sinon, vu ton concept, je doute que ça soit très couteux sur les processeurs actuels de faire un truc un peu naïf genre prendre les cases dans un rayon de N, de faire une ligne droite vers le perso en utilisant (x_perso, y_perso) - (x_case, y_case), et de bouger case par case en direction du perso. Si un chemin en ligne droite va du perso à la case sans rencontrer un mur, alors tu éclaires la case.
Sachant que même avec des map de 1000x1000 tu peux sous-échantilloner, tu peux faire du multithread, tu peux mettre les résultats en cache de façon pas trop complexe, tu peux précalculer sur les futurs mouvements, bref tout ce que font les moteurs graphiques actuels avec GPU j'imagine

Et le jour où t'auras une map de 1milliard*1milliard*1milliard en 3D tu pourras utiliser un GPU RTX2080 pour faire du raytracing temps réel :noel:

Message édité le 10 février 2019 à 12:37:26 par blackapplex
wonsder
wonsder
Niveau 3
10 février 2019 à 12:41:52

Le 10 février 2019 à 12:33:16 blackapplex a écrit :
Déjà il y a un algo très simple, tu éclaires tout en cercle autour de là où est le perso, au delà tu rends la map plus sombre.
Maintenant si jamais tu veux t'amuser à faire l'algo plus compliqué qui fait qu'il ne voit que là où il est censé voir, donc pas à travers les murs, l'algorithme doit probablement s'apparenter à du ray tracing. Je ne connais pas précisément le nom d'un algo qui ferait ça intelligement pour ton cas, mais ça doit pouvoir se trouver.
Sinon, vu ton concept, je doute que ça soit très couteux sur les processeurs actuels de faire un truc un peu naïf genre prendre les cases dans un rayon de N, de faire une ligne droite vers le perso en utilisant (x_perso, y_perso) - (x_case, y_case), et de bouger case par case en direction du perso. Si un chemin en ligne droite va du perso à la case sans rencontrer un mur, alors tu éclaires la case.
Sachant que même avec des map de 1000x1000 tu peux sous-échantilloner, tu peux faire du multithread, tu peux mettre les résultats en cache de façon pas trop complexe, tu peux précalculer sur les futurs mouvements, bref tout ce que font les moteurs graphiques actuels avec GPU j'imagine

Et le jour où t'auras une map de 1milliard*1milliard*1milliard en 3D tu pourras utiliser un GPU RTX2080 pour faire du raytracing temps réel :noel:

yup, j'ai compris... ç'a a pas l'air si compliqué en fin de compte ^^ merci, jvais essayer de me débrouiller

FullKarism
FullKarism
Niveau 1
02 juin 2020 à 14:39:45

Salut, je me demandais si tu avais terminé ton jeu parce que je dois faire un jeu à peu près similaire et je ne suis pas super bon en python. Ça serait super si tu pouvais m'envoyer ton code pour que je progresse plus rapidement, merci.

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