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 - Autres questions


Index du Forum » Autres questions » Utilisation matrice
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Utilisation matrice

Posté le 05/05/2018 14:54

Bonjour,
Je suis en train de créer un programme avec une petite map et j'aimerais savoir si au lieu de faire des boucles avec locate etc on pouvait utiliser les matrices ? (Si oui comment cela fonctionne ?)
Merci beaucoup d'avance


Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 05/05/2018 14:59 | #


Ouaip, les matrices sont très adaptées aux maps 2D.

Je te suggère de lire ce tutoriel : https://www.planet-casio.com/Fr/programmation/matrices.php
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 05/05/2018 15:06 | #


Merci beaucoup
Je l'ai déjà lu mais je n'arrrive pas à comprendre le rapport avec la création de map ... tu pourrais m'expliquer plus précisément comment ça marche stp ?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/05/2018 16:06 | #


Les maps 2D type Pokémon sont faites de cellules (tiles) carrées arrangées en grille. Chaque case de la matrice représente alors une tile, le numéro indiquant diverses informations (ça, ça dépend des jeux).
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 05/05/2018 16:24 | #


D'accord
et comment il faut faire pour associer un "block" à un chiffre ?
et le jeu sait il que je ne peux pas franchir le block ou il faut que je remette des limites manuellement ?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/05/2018 16:30 | #


C'est toi qui codes. La matrice te donne un espace 2D où tu peux mettre des chiffres, rien de plus. Il n'y a pas de notion de limites. Il n'y a pas de notion d'herbe ou de maison ; il y a des chiffres. Et si tu demandes une case en-dehors de la matrice, une erreur se produit.

À partir de là, tu peux élaborer.

Comment associer un bloc à un chiffre ? C'est toi qui décides. Une possibilité, c'est :

0 = Rien
1 = Arbre
2 = Porte de maison
3 = Toit de maison
etc

Mais c'est toi qui choisis. Tu peux faire complètement autre chose et décider, par convention que ce sera :

π  = Rien
√2 = Porte de maison
42 = Toit de maison

Mais ça sera pas très pratique à manipuler. Comment sait-on si l'on peut franchir le bloc ? Eh bien, encore une fois, c'est toi qui décides ce que tu mets dans ton jeu. Avec mon premier encodage on ne peut franchir que le rien (on ne peut pas traverser ni les arbres, ni les portes, ni les toits), donc pour savoir si j'ai le droit de traverser un bloc il suffit que je teste s'il est égal à 0.

Supposons que j'ai stocké ma map dans la matrice A et que je voudrais savoir si je peux accéder à la case x=3, y=2. Ça donnerait quelque chose comme :

If Mat A[2,3]=0
Then "On peut passer"
Else "On ne peut pas"
EndIf

Je sais que c'est une idée difficile à appréhender, mais la matrice te donne juste un espace de stockage. Tu peux y mettre des données. Mais c'est à doit de décider de ton encodage, c'est-à-dire comment tu représentes chaque objet et quelle signification cela a.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 05/05/2018 17:03 | #


et est ce que tu pourrais coder un exemple concret (j'en demande beaucoup je me rends compte) avec 0 pour rien 1 pour block ? parce que lorsque j'applique ce que tu m'as dis dans la première partie de ta réponse il y a une erreur, et donc rien de s'affiche
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/05/2018 17:42 | # | Fichier joint


Comment ça rien ne s'affiche ? Ta map ne va pas s'afficher toute seule...

Voilà un exemple en fichier joint. C'est du mode texte. Je n'ai pas commenté le code pour que ça reste un exercice pour toi, mais si tu doutes demande et je serai plus précis.


Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 05/05/2018 18:04 | #


j'ai essayé de comprendre mais c'est vraiment ca que tu voulais m'envoyer, parce que là je ne comprends rien ...
je t'envoies ce que j'ai trouvé dans le fichier :
ª¬½¯ˆšÿïÿïÿ‚þÿÿýà äÚÿþPROGRAMsystemMAPð[[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1][1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1][1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]@A 12A:4B ÷ ÷1Y÷7 ÷1X÷21 @A[Y,X]÷X,Y,"#" ÷:÷ ÷1 ÷A,B,"©" ÷ :K ÷ K=0 AC:BD K=27A‰1C K=28B™1D K=37B‰1D K=38A™1C @A[D,C]÷ ÷A,B," " CA:DB ÷

si c'est vraiment cela donne moi quelques indications pour que ca reste un exercie comme tu as dis
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 05/05/2018 18:06 | #


Il faut ouvrir ce fichier avec FA-124 pour le transférer sur ta calculatrice, regarde ce tutoriel : https://www.planet-casio.com/Fr/logiciels/voir_un_logiciel_casio.php?showid=16
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/05/2018 18:24 | #


Et j'irai plus loin, il faut le lancer sur ta calculatrice puis le lire sur ta calculatrice.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 05/05/2018 21:35 | #


Super merci beaucoup j'ai compris juste PourQuoi mettre MAT A[Y,X] et pas MAT A[X,Y] ?
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/05/2018 21:38 | #


Parce que dans une matrice, on note la ligne en premier et la colonne en deuxième. C'est hérité des maths.

J'aurais pu mettre Mat A[X,Y] mais il aurait fallu la stocker « dans l'autre sens » pour ça. Si tu vas dans le menu RUN/MAT et que tu regardes les contenus de la matrice A dans l'onglet MAT, tu verras que ça représente la map en vrai. Je voulais que la matrice soit dans le même sens que l'écran et je dois donc écrire dans l'ordre Y,X.

À l'inverse tu vois que Locate fonctionne bien en X,Y. C'est un peu le bordel en fait.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Chapochinoi Hors ligne Membre Points: 24 Défis: 0 Message

Citer : Posté le 05/05/2018 22:11 | #


Ok merci de ne pas avoir abandonné parce que j'ai mis du temps à comprendre
Lephenixnoir En ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 05/05/2018 22:13 | #


Si la séparation entre les données (la matrice) et l'utilisation que tu décides d'en faire (le jeu) est claire pour toi, alors tout est bon !
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 06/05/2018 15:30 | #


En fait le coup du [Y,X] on s'en fout : si tu stockes en [X,Y] (et que tu t'y tiens) tu auras pas de problème. C'est juste que, si tu veux afficher ta matrice à l'aide de l'éditeur intégré (par exemple "Mat A◢") les axes seront inversés, mais sinon ça pose aucun problème (et je te conseille même de faire ça, ça t'évitera de te gourer entre les coordonnées).
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE

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 87 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