Posté le 30/10/2018 22:23
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 82 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
Citer : Posté le 30/10/2018 23:49 | #
Qu'es ce qui t'empêche de mettre BIDE sur ton RPi (Raspberry pi, c'est ça ?)
Citer : Posté le 31/10/2018 10:55 | #
Qu'es ce qui t'empêche de mettre BIDE sur ton RPi (Raspberry pi, c'est ça ?)
C'est bien un Raspberry Pi 2
Je n'y avais tout simplement pas pensé...
BIDE fonctionne plutôt bien (hormis les ralentissements de 5 secondes à chaque fois que je tape un caractère dû à l’auto-complétion) mais je n'ai pas de moyen de les tester ni sur émulateur (je ne pense pas que Casio ait prévu des émulateurs ARM ni qu'ils tourneraient à plus de 0.2 FPS) ni sur calculatrice (toujours pas assez de fonds pour le câble ou un modèle plus évolué).
Pour le moment je vais continuer de travailler là-dessus (Locate) et je verrai pour les autres projets plus tard
D'ailleurs j'ai vu que la limite en nombre de lignes est de 300, ça devrait tenir mais je pense que je devrais compresser quand c'est possible, par exemple avec des variables de 1 caractère, ce qui en fait 51 disponibles dans chaque fonction, la dernière (Z) étant destinée à la "map", et abuser des point-virgules ; pour économiser des lignes si ça dépasse les 300 (ça m'étonnerait)
Citer : Posté le 31/10/2018 13:37 | #
Aaah RPi <3
Citer : Posté le 31/10/2018 14:11 | # | Fichier joint
Aaah RPi <3
J'ai fait quelques tests et cette ligne m'indique une MemoryError
Est-ce que c'est dû à l'émulateur bridé ou est-ce que la 90+E ne peut pas faire des liste de listes ?
_L=[[c for _ in R(21)]for _ in R(6)]
Citer : Posté le 01/11/2018 22:50 | # | Fichier joint
J'ai fini de coder la première version fonctionnelle
Si un heureux possesseur de 90+E voulait bien tester, je met le programme en fichier joint (je n'ai pas pu n'en possédant pas)
Pour ceux qui ont la flemme de télécharger mais qui veulent quand même voir le code en l'état (j'ai économisé le plus de place possible pour moi donc c'est pas très lisible )
def setup(c=" "):
global _L
_L=[[c for _ in R(21)]for _ in R(6)]
def refresh(i=0):
s=""
for l in _L:
for c in l:
s+=c
P(s)
if i:
return I("> ")
else:
P()
def locate(x,y,s):
s=str(s)
i=-1
for c in s:
if i+x<21:
_L[y-1][x+i]=c
i+=1
def getCellContent(x,y):
return _L[y-1][x-1]
Pour l'utilisation :
setup(c=" ") : Permet d'initialiser le programme, a n'utiliser qu'une fois (fait aussi office de ClrText). c est la variable remplissant le tableau, par défaut un espace (si vous mettez un "K" en paramètre vous aurez un tableau Locate plein de K)
locate(x, y, s) : le Locate tel que vous le connaissez sûrement déjà en Basic, il gère les débordements (locate(20,1,"ave") fonctionne ) et gère les entiers et les chaînes de caractères.
getCellContent(x, y) : mon petit ajout ; retourne le contenu de la cellule pointée sous la forme d'un string.
refresh(i=0) : "raffraichit" le Locate, et si i est vrai ajoute une ligne d'input en bas qui renvoie une valeur
Voilà, merci de me dire si cela fonctionne sous Graph, votre avis, des bugs ou optimisations possible.
Merci d'avance
Le Kikoo
Ajouté le 01/11/2018 à 22:53 :
Je précise que la variable _L contenant le tableau utilisé est global pour alléger le code
Ajouté le 01/11/2018 à 22:58 :
Et aussi (je suis endormi là ) la fonction refresh(i=0) fait office d'input() si i est vrai. Sinon il affiche juste un retour a la ligne et ne renvoie rien.
Ajouté le 01/11/2018 à 23:43 :
Un code d'exemple commenté parce que mes explications sont tout sauf claires et aussi en partie car je m'ennuie
setup() #Indispensable, lance le programme.
locate(1, 1, "Bonjour, veuillez") #Définit les contenants du Locate.
locate(1, 2, "entrer votre age") # /!\ N'effectue pas de changements avant de refresh /!\
age = int(refresh(1)) #Rafraîchit et attend une entrée.
locate(1, 1, "Vous êtes ") #D'autres Locates...
locate(1, 2, "Heureusement que je")
locate(1, 3, "suis là pour vous le")
locate(1, 4, "dire !")
if age >= 18: #Une condition, vous devriez savoir faire :E
locate(11, 1, "majeur !")
else:
locate(11, 1, "mineur !")
refresh(1) #Fin du programme, input de pause.
Citer : Posté le 02/11/2018 22:42 | # | Fichier joint
OK, j'ai testé le programme sur l'émulateur officiel, il fonctionne après quelques modifs'
Je devrais le poster en tant que programme sur le site maintenant ?
(En fichier joint une version fonctionnelle)
Citer : Posté le 06/11/2018 23:16 | #
Si i est un booléen, en Python c'est beaucoup plus propre de faire i=False
Je suppose que tu stockes l'écran dans un tableau ? Combien de temps ça prend pour l'afficher ?
Citer : Posté le 07/11/2018 07:24 | #
Si i est un booléen, en Python c'est beaucoup plus propre de faire i=False
Je suppose que tu stockes l'écran dans un tableau ? Combien de temps ça prend pour l'afficher ?
Je sais que c'est bien plus propre d'utiliser False mais j'ai essayé de faire le script le plus compact possible, c'était sûrement un mauvais choix pour 4 octets... Je vais modifier demain pour que ce soit plus clair à l'utilisation merci
L'écran est bien stocké dans un tableau global _L
Pour le temps je ne sais pas, je n'ai pu le tester que sur l'émulateur.
En tout cas c'est quasi-instantané (tout le tableau s'affiche d'un coup), tant que l'on ne l'appelle pas trop souvent le rafraîchissement est fluide
https://www.planet-casio.com/Fr/programmes/programme3658-1-Locate.py-KikooDX-.html
Citer : Posté le 27/02/2019 02:32 | # | Fichier joint
J'ai réussi le défi sans regarder vos réponses, mais je l'ai fait sur portable, je sais pas si ça marche sur Casio, je testerai demain, en attendant, je vous le donne en fichier joint, vous allez voir, c'est très simple .
Par contre, j'utilise un
trash=os.system('clear')
Donc je sais pas si ça marche sur Casio...
Sinon, ça s'utilise comme ça :
t = texte, nombre, variable, etc...
Citer : Posté le 27/02/2019 11:20 | #
C'est bien, j'avais choisi de ne pas utiliser de chaîne de caractères pour un tableau, mais cette fonction...
import os
trash=os.system('clear')
global lct
lct=replace(lct,c,a+((b-1)*22))
print(lct)
On n'importe JAMAIS un module dans une fonction, et OS n'existe pas sous le MicroPython de la 90+E.
Tu devrais regarder ce que j'ai fait, c'est très différent.
Citer : Posté le 27/02/2019 11:26 | #
Ah ! Je viens de vérifier et oui... Il n'y a pas de module os dans la 90...
Ajouté le 27/02/2019 à 11:28 :
Ah oui ! C'est super compliqué ton truc là !
Citer : Posté le 27/02/2019 12:28 | #
Le code est condensé, c'est pas très lisible effectivement, mais son but n'est pas d'être lu
Citer : Posté le 27/02/2019 14:15 | #
Je me suis rendu compte, si on enlève le clear, c'est quasi instantané, il y a plusieurs tableaux mais osef
Citer : Posté le 27/02/2019 15:33 | #
Le code est condensé, c'est pas très lisible effectivement, mais son but n'est pas d'être lu
Alors non, un code est fait pour être lus par un être humain et occasionnellement exécuté par un ordinateur
Citer : Posté le 05/11/2019 17:01 | #
Est-ce un déterrage ?
Bonjour
J'aimerais supprimer les étapes de test de Locate.py 2 pour la prochaine version, les checks rendent le code beaucoup plus lent et moins propre. Ils gênent plus qu'autre chose, et si un utilisateur en a besoin qu'il code les vérifications lui-même
De plus les programmes qui utilisent ce module (majoritairement de Shadow et quelques-uns par moi-même) ne se voient pas du tout affectés par ces vérifications.
Je vous demande votre avis.
Merci d'avance
Ajouté le 06/11/2019 à 09:49 :
Je suis revenu sur le projet, j'ai déjà commit la suppression des vérifications ; je suis en train de coder une idée que j'ai eu hier pour pouvoir utiliser les 7 lignes du shell
Ce sera terminé très bientôt, c'est déjà codé pour Screen, il me reste à faire Pad
Citer : Posté le 06/11/2019 10:13 | #
Psst, mets un exemple dans le post principal
Citer : Posté le 06/11/2019 10:17 | #
Psst, mets un exemple dans le post principal
Fait
.....................
.....................
..ENFIN..............
.....................
............7........
.........LIGNES..... < l'input se trouve ici
Ajouté le 06/11/2019 à 11:11 :
Nouveau problème, le programme fonctionne parfaitement sur ordinateur et calculatrice, mais Casio a décidé de tronquer les messages pour permettre de taper du texte ???
Ce qui résulte en une magnifique tilde et 5 espaces blancs.
Hum.
5 espaces de perdus.
Impossibilité d'ajouter une ligne.
Ils ont fait ma journée
Vous pouvez le voir avec ce simple code :
# Utiliser print("."*20, end="");input() ne résoud pas le problème
Je suis assez déçu, j'ai passé deux heures à coder ça bien, le programme fonctionne mais pas pour eux
https://gitea.planet-casio.com/KikooDX/Locate2.py
Citer : Posté le 06/11/2019 19:16 | #
Je voulais dire un exemple de programme Python utilisant Locate.py
Hmm, c'est surtout pour se garder une place à l'écran le temps de la saisie. Une fois tapé, les 20 points reviennent. Est-ce vraiment un problème ? C'est plutôt mieux au contraire que le shell se charge de faire scroller la saisie.
Citer : Posté le 06/11/2019 22:33 | #
Je voulais dire un exemple de programme Python utilisant Locate.py
Hmm, c'est surtout pour se garder une place à l'écran le temps de la saisie. Une fois tapé, les 20 points reviennent. Est-ce vraiment un problème ? C'est plutôt mieux au contraire que le shell se charge de faire scroller la saisie.
Ah ! Il y a les jeux de Shadow et mon Sokoban, je mettrai les liens demain (si j'y pense).
Perdre autant de place est assez gênant, le rendu apparaîtrait "presque" comme un plein écran si seulement la case en bas à gauche était utilisée par le input, là c'est une perte d'espace assez conséquente.
Dans d'autres situations, oui c'est plutôt utile.