Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Basic Casio et troisième dimension
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Basic Casio et troisième dimension

Posté le 14/04/2021 14:52

Bonjour à tous !

3D rime souvent avec langage C, difficulté d'affichage, raycasting, lancer de rayon et autres grossièreté du même acabit. Et en Basic, rien en 3D. Ce temps est révolu !

Grâce à un système simple et robuste, il est possible d'afficher dans une 3D simple un labyrinthe dont le plan est stocké dans une matrice.

Le principe est assez trivial : on a une matrice qui représente le labyrinthe dans sa totalité et deux variables qui symbolisent les coordonnées de la place du joueur dans la matrice. Une troisième variable stocke la direction dans laquelle le joueur regarde.

À partir de ces trois variables on extrait de la matrice du labyrinthe une sous-matrice qui contient le champ de vision du joueur. Cette matrice fait 3 cases par 4. 3 cases pour avoir une case à gauche du joueur, une à droite plus la rangée centrale. 4 pour les plans. Cette matrice est analysée et en fonction de la position du 1 (mur) ou du 0 (air) le programme affiche (ou pas) un segment de mur qui correspond au plan en cours d'analyse.

Bon, assez des détails techniques ! Places aux images :






@RDP


Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 14/04/2021 15:00 | #


Petite suggestion : on ne devrait pas voir la ligne verticale sur le bord de l'écran, car pour voir un carré dans sa totalité il faut se tenir devant, hors on est dedans. Tu peux donc avancer un peu tout l'écran, et on s'y retrouverait mieux.

Accessoirement, le mur vertical à distance 1 devant nous occupe moins de colonnes à l'écran que celui à distance 2 : ça devrait être l'inverse.

Ajouté le 19/04/2021 à 10:29 :
J'y pense maintenant, est-ce que le programme fonctionne aussi si on se trouve dans un couloir large de 2 ou 3 cases ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 20/04/2021 22:17 | #


Sympa !
J'ai une question, c'es pourquoi tu vérifies les 4x3 cases ? Es ce que tu pourrais gagner quelques perf en ne t'occupant que de celles devant le joueur ?
Et sinon, comment tu fais ton rendu avec la perspective ? C'est precalculé ou c’est vraiment calculé en fonction de ta sous matrice ?
Lephenixnoir En ligne Administrateur Points: 24673 Défis: 170 Message

Citer : Posté le 20/04/2021 22:19 | #


Quitte à spoiler la deuxième question, les positions des traits sont pré-calculées à la main et le programme consulte "juste" la matrice pour savoir lesquels afficher.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 25/04/2021 18:37 | #


Merci !

Je confirme ce que dit Lephe, j'ai un programme qui renvoie une liste de coordonnées (pour tracer le mur ou l'ouverture) en fonction de la position relative de la case regardée par rapport au joueur.

Pour la première question, c'est juste une question de "jouabilité" c'est plus agréable du point du vue du joueur de voir 4 cases devant lui, plutôt que 2 ou 3. Une autre raison est que chaque plan étant pré-dessiné (la deuxième question btw) si j'avais eu 5 ou 6 plan j'aurais dû tout pré-dessiné et j'aurais aussi très vite perdu en performance : un plan en plus oblige à avoir 3 cases à regarder en plus soit environ 9 traits à tracer sur l'écran.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque


LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 150 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd