Comment enever le fait de faire [enter] après un"input"en basic?

Résolu/Fermé
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 - 28 mai 2016 à 16:59
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 - 30 mai 2016 à 10:35
Bonjour/Bonsoir

Je programme en BASIC 1.0 sur Amstrad CPC 464 et quand je fais "Input ;a" ça fait :

?

et donc je peux entrer quelque chose puis pour valider je fais [ENTER]

Ma question est :
Comment faire pour ne pas avoir besoin de faire [ENTER]?
Faut il faire une autre commande?

Cordialement
A voir également:

5 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
28 mai 2016 à 17:10
Wahoo un voyageur temporel!

Plaisanterie mise à part, comment veux tu que ton programme sache si tu as finit de saisir quelque chose?
Il faut une touche qui signale la fin de saisie, et cette touche c'est enter.
1
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6
29 mai 2016 à 12:31
Ah ok! Bah écoute j'ai 13 ans et j'ai pas connu cette machine à son apogée, donc faut bien commencer quelque part! Et donc je sais pas très bien programmer!

Mais normalement tu sais dans les jeux y a bien un truc qui fait que quand on appuie sur une touche, une action s'enclenche, c'est ça la commande que je cherche!

Merci d'avance pour tes futures réponses
0
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 25 avril 2024 2 251
29 mai 2016 à 12:52
Bonjour japan123,

Je n'ai plus 13 ans, mais je programme un peu (arduino, python) et fais collection d'anciens ordinateurs (dont les Amstrad). Nous avons donc des points communs.

Pour compléter l'excellente réponse de Whismeril, je dirais comme lui qu'un programme ne peut arbitrairement d'aider que l'entrée doit se limiter à un caractère ou en attendre une vingtaine de chiffres, ou une phrase.

S'il s'agit dun jeu, on peut évaluer "o" pour oui ou "n" pour no, en réponse à la question "voulez-vous continuer par exemple. Encore faut-il prévoir que le "joueur" peut répondre "au revoir", il faut donc dans le code prévoir d'exclure tout ce qui n'est ni "o" ni "o", par exemple en bouclant vers la question tant qu'une des réponses attendues n'est pas entrée. Ce qui se fait avec les universels instructions "if....else:...."

Dans certains langages de programmation, on peut formater la variable d'entrée pour qu'elle corresponde à un type (entier, booléen, double) et donc à un nombre de caractères maxi mais je ne me rappelle plus si le basic Amstrad comprend ce type de paramètres.

Cela ne dispense pas d'appuyer sur la touche enter pour passer à l'instruction suivante.

Cordialement
0
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6
29 mai 2016 à 13:01
Bonjour georges97,
Tout d'abord merci de ta réponse.

Ensuite, j'ai remarqué qu'il y a des shoot them up sur amstrad cpc (comme 1942), et donc normalement quand on pousse le joystick vers la droite, l'avion tourne, il doit y avoir une commande pour ça, qui doit être similaire à "input", et je pensais que ça aurait été input mais sans la validation [ENTER]. Mais les jeux d'amstrad CPC on bien été codés avec l'amstrad CPC en basic 1.0 non? Peut être qu'ils utilisaient autre chose...

cordialement
0
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 25 avril 2024 2 251 > Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016
29 mai 2016 à 13:42
En général, les jeux d'action sont codés en assembleur, un langage qui accède directement aux sones mémoire et utilise les instructions du processeur, pur des raisons de rapidité (le basic est assez lent car c'est un langage dit interprété, qui utilise un programme de conversion des instructions en basic en langage machine, le seul compréhensible par l'ordinateur). De plus le joystick n'a besoin de déchiffrer que disons huit positions. Ce que j'ai appelé logique booléenne permet de n'attendre qu'un chiffre 0 ou 1 dans une zone de mémoire spécifique (on parle d'un mot sur 4 bits ou 8 bits). On n'a donc pas besoin de faire enter.

Un jeu du pendu ou de morpion ne gère pas des actions rapides comme un shoot them up. Il peut donc être conçu en basic. Le basic comporte cependant des limitations (lentuer, structure non-optimisée du programme) qui l'ont fait remplacer par des programmes comme python, sans parler du C++ ou du C pour les jeux.

A mon époque, existaient des revues qui diffusaient des listings "basic" que l'onreopiait à la main dans l'interpréteur Amstrad Basic ou d'autres et qu'on modifiait ou dont on utilisait certaines routines pour concevoir ses propres jeux.

Maintenant, on télécharge un fichier ou des bibliothèques (routines) et on les utilise pour compéter ou faire exécuter son propre code.

Les différents Basic correspondant aux machines de l'époque (Sinclair, Commodore, Atari, Apple, BBC, etc.) étaient incompatibles entre eux même si l'on retrouvait des instructions communes.

Tu peux sans doute trouver des archives indiquant d'une part comment coder certaines parties de ton programme en assembleur, d'autre part comment les appeler à partir d'un programme en basic, mais si tu débutes, il vaut mieux maîtriser complètement le basic avant de se lancer dans l'assembleur ou le Pascal, si tant est que l'on trouve encore des utilitaires de ce type.

Si ton but est de faire revivre ces ordinosaures, je ne saurai que t'encourager puisque je fais moi-même des brocantes pour en collecter.

Si par contre tu veux maîtriser un langage moderne, peut-êtr vaudrait il mieux envisager l'apprentissage d'un langage comme Arduino pou python, quitte à créer (à terme) des retro-games en émulation.
0
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6
29 mai 2016 à 17:38
"Si ton but est de faire revivre ces ordinosaures, je ne saurai que t'encourager puisque je fais moi-même des brocantes pour en collecter."

Oui bah c'est bien mon but! Je déteste les jeux récent (mis à part les jeux Mario que je trouve avoir un très bon level design) et j'aimerais en fait faire revivre comme tu dis ces vieilles machines pour un peu "dissuader" les kikoos avec leurs jeux comme "Clash Of Clans" "League Of Legends" "Minecraft" Je comprends plus, ils on plus de relations sociales, que du skype etc ><
Au moins dans le passé, on jouait ensemble, devant une 8 ou 16 bit et on pouvait se parler l'un devant l'autre! Mais vu que les jeux de l'époque commence à couter cher, j'aimerais en faire par moi même.

Je sais un tout petit peu maitriser le C, pour le VB.net je sais pas mal de choses mais il ne permet pas de coder de "vrais" jeux, et pour le basic je sais plutot bien.

En tout cas merci pour les langages dont tu m'as parlé, je vais essayer d'apprendre =)

Cordialement
0
Utilisateur anonyme > Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016
29 mai 2016 à 19:17
Bonjour Japan123,

Il y a vraiment très, très, très longtemps, j'avais eu moi aussi
un Amstrad CPC 464, et j'avais donc programmé en Basic.

Si je me rappelle bien, il y a une instruction Basic qui lit une
touche du clavier, et continue ensuite sans attendre qu'on
appuie sur la touche < Entrée > : c'est A$ = INKEY$().

Peut-être y avait-il un paramètre ? Mais je crois que non.
Ensuite, il faut bien sûr tester A$, selon ce que tu veux.

Il y avait aussi l'instruction A$ = INPUT$(1) qui demande
un seul caractère, et attend un appui sur < Entrée >.

Bonne chance pour ta programmation de jeux Basic !

Cordialement.  😊
 
0
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6 > Utilisateur anonyme
30 mai 2016 à 08:27
Bonjour albkan,

Alors j'ai essayé ceci :

A$ = INKEY$()

et j'ai :

Syntax error

j'ai ensuite fait :

a$ = input$(1)

et j'ai encore :

Syntax error

Ensuite j'ai voulu refaire mais je me suis trompé quand je tapait et j'ai écrit :

a$ = input(1)

et j'ai :

Type mismatch

Voila, je comprends pas trop, j'espère que tu pourras m'aider =)

Cordialement,
Japan123 =)
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
Modifié par Whismeril le 29/05/2016 à 18:24
pour le VB.net je sais pas mal de choses mais il ne permet pas de coder de "vrais" jeux

C'est vrai mais tu peux faire des jeux autrement plus complexe qu'en Basic 1.0, pour la simple raison que ce langage s'adresse à des ordinateurs possédant quelques milliard de fois plus de puissance de calcul, de RAM et de capacité de disque dur.

Il s'avère que parmis les quelques améliorations apparues entre Basic 1 et VB.Net, il existe maintenant des possibilités d'intercepter les messages du clavier et de faire en sorte de réagir à une combinaison prédéfinie sans touche Enter.

Mais comme le dit George, à l'époque y'avait que l'assembleur pour ça.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 259
29 mai 2016 à 19:13
Salut,
au sujet de l'obligation d'utiliser l'assembleur pour utiliser le joystick et les événements clavier sur le CPC464 : c'est faux !

Le langage Forth en est capable cf la doc sur https://cpcrulez.fr/applications_coding-abersoft_fig-forth_CA.htm

Le Forth est un super langage, absolument non conventionnel mais très puissant, c'est un langage à piles qui utilise la notation polonaise inversée. C'est indescriptible, il faut l'essayer pour y croire.
0
georges97 Messages postés 11842 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 25 avril 2024 2 251
29 mai 2016 à 19:42
Bonsoir Flachy Joe,

Personne n'a dit (ni Whismeril, ni moi) que l'assembleur était obligatoire, mais simplement qu'il était utilisé généralement pour les jeux du fait de sa rapidité et concision (du fait de la faible capacité mémoire des machines de ce temps. Il se peut que le BBC Basic ou un Basic compilé Atari intègre ce type d'instruction.

Pour ce qui est du Forth, je partage ton enthousiasme, sachant que ce langage peut être utilisé comme système d'exploitation et comme langage de programmation, comme les Basic des années 80 d'ailleurs, mais en bien plus puissant. Ce serait effectivement une belle opportunité, à condition de disposer des programmes pour l'Amstrad., ce qui semble possible grâce aux liens que tu fournis.

Mais je suis certain que ton intervention n'avait pas pour but de contester les pistes que nous suggérons, mais d'en ouvrir de nouvelles à notre jeune collègue.

Cordialement
0
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6
30 mai 2016 à 08:31
Bonjour Flachy Joe,

Mon père a fait du Forth il y a plus de 40 ans et... il a tout oublié :(

Pourrait tu me conseiller un quelconque cours de Forth?

merci d'avance =)
0
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6
30 mai 2016 à 08:33
Ah, j'ai rien dit, je vois qu'il y a un manuel d'utilisateur avec le lien que t'as envoyé.
Comme quoi faut réfléchir avant de parler... ^^

Cordialement =)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Japan123 Messages postés 94 Date d'inscription dimanche 5 avril 2015 Statut Membre Dernière intervention 1 juillet 2016 6
30 mai 2016 à 10:35
[RÉPONSE A TOUS CEUX QUI M'ONT AIDÉ]

Merci à tous, surtout à alkban, j'ai trouvé!!

La solution est de faire :

10 if inkey(55)<>0 then 10
20 print"vous venez d'appuyer sur la touche [V]
30 clear input

pour les touches du clavier en chiffres (55 pour V par exemple), c'est ici >> http://images.google.fr/...
0