Calculatrices Casio Graphiques : Jeux, programmes, cours, pompes, astuces et programmation sur calculatrice graphique Casio et ClassPad 300 : programmes casio et jeux casio...

Programmes et jeux pour calculatrices Casio Graph et calculatrice ClassPad 300, jeux casio, cours...Calcul formel pour Casio Graph 85
 

Forum Casio

 

Programmes et jeux pour calculatrices Casio Graph et calculatrice ClassPad 300, jeux casio, cours...: Forums

Bon anniversaire à Dibambino (34 ans) rbruno (28 ans)

Forum Casio

Un espace convivial pour poser vos questions ou simplement venir discuter... Entrer

Forum Programmation

Toutes les discussions à propos de la programmation sur calculatrices Casio... Entrer

Foire aux Questions

Les réponses aux questions les plus courantes sont ici ! Entrer

Forum principal Jeuxcasio.com
  

Bloquer des cases avec des matrices (Graph35+)

Auteur Bloquer des cases avec des matrices (Graph35+)
Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 05-12-2010 à 15:26     Editer/Supprimer les messages postés   Renvoyer une note
Salut salut !

Voilà, j'me suis mis à expérimenter les matrices grâces aux cours présents sur le site, mais j'ai un petit problème : comment bloquer des cases à partir de matrices ou listes ?
Je sais créer des matrices, ajouter des valeurs mais je ne vois pas comment je peux bloquer des cases dans un jeux.

Exemple : j'ai réalisé pour cela un petit programme avec un bonhomme qui bouge grâce aux flèches :

ViewWindow 1,127,0,63,1,0
F-Line 20,20,25,20
StoPict1
3I
3J
Lbl 7
Cls
RclPict1
F-Line I,J,I+2,J
F-Line I+1,J-1,I+1,J+1
F-Line I+1,J+1,I+1,J+3
F-Line I,J+2,I+2,J+2
F-Line I,J-1,I+2,J-1
PlotOn I,J+4
PlotOn I+2,J+4
Lbl8
0K
Do
GetkeyK
LpWhile K=0
K28 And K38 And K37 And K27Goto8
If K=28
Then J-5J
J<11J
Goto 7
IfEnd
If K=37
Then J+5J
J>5656J
Goto 7
IfEnd
If K=38
Then I-5I
I<11I
Goto 7
IfEnd
If K=27
Then I+5I
I>121121I
Goto 7
IfEnd


A partir de ce code, je voudrais savoir où mettre la matrice, et comment faire pour bloquer le
F-Line 20,20,25,20


Merci d'avance.



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 05-12-2010 à 22:51     Editer/Supprimer les messages postés   Renvoyer une note
La matrice représente le terrain. Le perso se déplace sur le terrain, de case en case.
Dans les cases de la matrice, tu mets des valeurs, qui représentent ce que contient la case, par exemple 0=vide, 1=mur
Si le perso veut aller sur la case à sa gauche, tu regardes la case de la matrice, si c'est 0 il peut y aller.



Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 06-12-2010 à 08:36     Editer/Supprimer les messages postés   Renvoyer une note
Hmmm ouais j'ai a peu près capté le truc. Par contre comment je traduit ça en code ? Dans mon petit programme par exemple ?


PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 06-12-2010 à 12:59     Editer/Supprimer les messages postés   Renvoyer une note
Ben c'est fastoche. Par exemple :

Tu commence par créer la matrice
{7,21}->Dim Mat A

Ensuite tu y mets 5 murs aléatoirement
For 1->A To 5
Int 21Ran#+1->X
Int 7Ran#+1->Y
1->Mat A[Y,X]
Next

Maintenant on affiche la map à l'écran :
ClrText
For 1->Y To 7
For 1->X To 21
Mat A[Y,X]=1=>Locate X,Y,"#"
Next
Next

Pour les coordonnées du perso on va utiliser les variables A et B, C et D pour sauvegarder ses anciennes coordonnées (pour effacer sa trace), et on le place en (1, 1) :
1->A~D

Début de la boucle principale :
While 1

On efface le perso à son ancienne position, et on l'affiche à sa nouvelle :
Locate C,D," "
Locate A,B,"O"
A->C
B->D

Ensuite on attend l'appuie d'une touche :
Do
GetKey
LpWhile Ans=0

On déplace le perso en fonction de la touche appuyée :
Ans=27=>A<21=>Isz A
Ans=38=>A>1=>Dsz A
Ans=37=>B<7=>Isz B
Ans=28=>B>1=>Dsz B

On vérifie si la case sur laquelle on vient de se déplacer est vide, et sinon on fait demi-tour :
If Mat A[B,A]=1
Then C->A
D->B
IfEnd

Et puis la fin de la boucle principale :
WhileEnd


Dans ton code faut que tu bannisses les Goto, C'est une source d'erreur, et c'est pas propre du tout. En plus dans le code que t'as donné au début, t'as mis des Goto dans des If, ce qui fait que tu entre dans des If sans jamais en sortir. Quand elle entre dans un If, la calculatrice attends le IfEnd, si elle ne tombe jamais dessus, elle va mémoriser des tas de If et ça risque de planter au bout d'un moment.



Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 06-12-2010 à 18:52     Editer/Supprimer les messages postés   Renvoyer une note
Hmmmm d'accord d'accord. Mais j'ai pas compris pourquoi tu n'utilise pas de If... Then... IfEnd ?


Merci



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 06-12-2010 à 20:09     Editer/Supprimer les messages postés   Renvoyer une note
Pour la même raison que tu ne passes pas à Strasbourg quand tu fais Nantes-Bordeaux.
Quand t'en a pas besoin et que la double flèche (=>) suffit, pourquoi ne pas l'utiliser? C'est plus court et plus rapide.



Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 09-12-2010 à 07:12     Editer/Supprimer les messages postés   Renvoyer une note
Oh Merci ! C'est très bien tout ça ! J'ai essayé le programme c'est exactement ce que je voulais !

Mais enfaite, comment je fais sa pour y mettre dans un écran graphique (ViewWindow x,x,x,y,y,y) ?

Merci en tout cas.



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 09-12-2010 à 12:06     Editer/Supprimer les messages postés   Renvoyer une note
Suffit de changer les fonctions de dessin. Là j'ai utilisé Locate parce que c'est plus simple. Mais la map se situe dans la matrice, peut importe la manière dont tu la représente à l'écran.
Après, il faut évidemment adapter la taille de la matrice à la map que tu veux représenter.



Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 09-12-2010 à 13:24     Editer/Supprimer les messages postés   Renvoyer une note
Mais la matrice n'as pas des limites ? Parce que si je met des proportions trop grandes (par exemple 63,127 pour un map graphique) ça me met un message d'erreur : memoire ou j'crois.


Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 09-12-2010 à 21:31     Editer/Supprimer les messages postés   Renvoyer une note
Mais enfaite, y a un truc que j'ai du mal a comprendre : enfaite j'ai appris avec les cours du site mais je bloque sur la façon dont t'es passé pour réalisé le déplacement. Sa ma l'air beaucoup plus simple mais j'ai pas capté, ou plutôt j'ai pas compris.
Tu m'as dit que c'était pour simplifier, mais comme j'ai appris en suivant les cours du site, je bloque dessus.

Si tu pouvais m'expliquer les cours du site à TA façon, quand t'auras un peu de temps genre, sa m'arrangerait bien

Merci !



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 10-12-2010 à 00:14     Editer/Supprimer les messages postés   Renvoyer une note
Dis moi plutôt ce que tu ne comprends pas dans le code que j'ai donné plus haut.


Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 10-12-2010 à 12:20     Editer/Supprimer les messages postés   Renvoyer une note
Nan enfaite c'est plutôt que toi tu programme d'une toute autre façon que moi donc sa me perturbe lol


dunedune
Programmeur



Messages: 650
Calculatrice : Graph 35+
Message posté: 10-12-2010 à 14:12     Editer/Supprimer les messages postés   Renvoyer une note
Après tout tu lui as demandé comment 'traduire ça en code'. Forcément il va te répondre avec son code, pas avec le tien


 
Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 10-12-2010 à 17:56     Editer/Supprimer les messages postés   Renvoyer une note
C'est vrai, mais je pense et même j'affirme que son code est beaucoup plus "performant" si je peut le dire comme ça : il est beaucoup plus simple que ceux avec quoi je travaille, mais il est tellement simple que j'ai du mal à le comprendre. Sa façon de programmer n'as strictement rien a voir avec la mienne. Quand je code ce qu'il m'a fait à ma façon, le truc est beaucoup plus long et surtout, y a des truc que j'arrive pas à mettre, genre bloquer les cases (même si maintenant j'y arrive grâce à lui !).

Enfin bref, je veux (si possible bien sûr D) apprendre SA façon de programmer, afin de pouvoir créer mon style à moi (en gros, je veux m'en inspirer!).


En tout cas, je lui dit un grand merci pour tout ce qu'il m'a déjà réalisé !



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 10-12-2010 à 20:39     Editer/Supprimer les messages postés   Renvoyer une note
Je sais pas, à force de coder ça devient tellement naturel. Le code là je l'ai écrit au boulot pendant que j'étais au téléphone avec un client, la tête ailleurs quoi.

Je me rappelle qu'au lycée je codais un snake fonctionnel en 5 minutes chrono sur une graph 35+, je connaissais le code par coeur et je le tapais machinalement

Bref, c'est avec l'entrainement que ça vient, si tu codes en cherchant toujours à augmenter la propreté du code et ses performances, tu vas t'améliorer.



Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 10-12-2010 à 22:38     Editer/Supprimer les messages postés   Renvoyer une note
Trop fort !

Tu peux m'expliquer, s'il te plaît et si tu as du temps, les chapitres 3 (boucles), 5 (Les connecteurs logiques), 6 (getkey), 9 (Les mouvements) et 10 (Listes et matrices) à TA façon personnel ? S'il te plaît s'il te plaît !

Et au faite, sans vouloir être indiscret, tu travaille dans quoi ? Programmation ? T'es diplômé en programmation ou t'as appris par toi même ?



PierrotLL
Administrateur



Messages: 1854
Calculatrice : Graph 85
Message posté: 11-12-2010 à 14:36     Editer/Supprimer les messages postés   Renvoyer une note
Bon je vais essayer.

Les boucles :
Une boucle, ça sert à répéter plusieurs fois un bloc d'instructions.
En anglais, "while" signifie "tant que".
Donc
While A=1
...
WhileEnd
Signifie qu'on répète le code à la place du "..." tant que A=1

Pour Do - LpWhile, ça signifie "répéter (quelque chose) tant que"

Concrètement, quand la calto lit While, elle regarde la condition, si elle est vraie elle continue, sinon elle saute après le WhileEnd correspondant. Si elle a exécuté toute la boucle et qu'elle arrive au WhileEnd, elle remonte au While pour re-tester la condition, et on recommence le même manège.
Avec Do-LpWhile, la condition n'est testée qu'à la fin, donc la boucle s'exécute au moins une fois. C'est la seule différence.

La boucle For sert à exécuter un bloc d'instructions un nombre de fois bien défini. Comme 5 fois, ou X fois.
For 1->A To X
...
Next
Littéralement "Pour A=1 jusqu'à A=X, faire (quelque chose) Tour suivant"

Les connecteurs logique :
Heu, qu'est ce que je peux expliquer là dessus, ça parait tellement évident.
Le cours parle de And et Or, après yen a d'autres mais c'est les plus simples.
En gros ça te permet de mettre plusieurs conditions dans une seule. Comme par exemple "If A=1 And B=2 Then", littéralement "Si A=1 et B=2 alors ..."
Ca évite juste de faire un truc à la con comme
If A=1
Then If B=2
Then
...
IfEnd
IfEnd


GetKey :
Ya rien à expliquer là dessus, c'est juste une fonction qui te donne un nombre correspondant à la touche appuyée, ou 0 si aucune touche n'est enfoncée.

Les mouvements :
Ben, t'affiches quelque chose à un endroit, et après tu l'affiches à un autre endroit, et pouf, il a bougé
C'est tout.

Les listes et matrices :
Une liste c'est un tableau à une dimension, une matrice c'est un tableau à deux dimensions.



Mahtout
Programmeur Basic



Messages: 15
Calculatrice : Graph 35+
Message posté: 11-12-2010 à 22:43     Editer/Supprimer les messages postés   Renvoyer une note
Ow yeah trop puissant ! Merci !


Meetic - Les règles du jeu ont changé | MeeticAffinity
  
Bloquer le sujet Déplacer le sujet Supprimer le sujet
 
     


Toutes les pages et les images de jeux casio appartiennent à http://www.jeuxcasio.com ©2002-2020
Toute reproduction partielle ou totale de Jeuxcasio.com ou de son contenu est strictement interdite. | Casio est une marque déposée par le groupe Noblet

Bac Français Meeticadblocktest Amazon.com Expedia.com Ebookers
Opodo
Amazon.fr eBay Fr