Programmer "SUR" Amstrad CPC
+10
Stef
drfloyd
Monos
Vortex
65c02
Ricco59_59
ichigobankai
Urbinou
Tryphon
tetsuro
14 participants
Page 3 sur 3
Page 3 sur 3 • 1, 2, 3
Re: Programmer "SUR" Amstrad CPC
@Green Beret :
Merci pour les scans ! Mais entre temps j'ai trouvé un gars qui me fiat le manuel du 6128 pour 5 €, du coup c'est plus approprié pour moi que le 464. J'ai cru un moment que tu me parlait aussi d'un autre livre en plus sur le Locomotive Basic, mais j'ai compris que tu parlais du même. Sinon j'aurais été intéressé par un livre sur le Basic. Merci encore pour ta proposition, c'est vraiment gentil.
Merci pour les scans ! Mais entre temps j'ai trouvé un gars qui me fiat le manuel du 6128 pour 5 €, du coup c'est plus approprié pour moi que le 464. J'ai cru un moment que tu me parlait aussi d'un autre livre en plus sur le Locomotive Basic, mais j'ai compris que tu parlais du même. Sinon j'aurais été intéressé par un livre sur le Basic. Merci encore pour ta proposition, c'est vraiment gentil.
tetsuro- Patient contaminé
- Nombre de messages : 593
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Salut les potes, je suis toujours sur mon apprentissage du Basic et je m’intéresse doucement aux bases de l'assembleur alors j'ai écris un petit programme de "Quizz" de conversion de chiffres Dec / Hex / Bin, pour m'aider à mieux assimiler.
Mon programme marche plutôt bien en soit car il génère un nombre aléatoire, il demande à entrer l'équivalent en binaire, le compare et dit si c'est bon ou pas.
Mais il y a un problème qui vient du fait que par défaut pour un nombre binaire l'Amstrad "retire" les "0 (zéros)" inutiles avant les "1". Donc pour comparer l'ordi attend les 8 chiffres "00000111"
Un exemple avec les captures ci-dessous, on voit que mes valeurs entrées sont bonnes mais qu'il met "Bad" car il y a 7 chiffres et non 8, car il débute par 0, "69 = 01000101".
Par contre si par chance le nombre à les 8 chiffres qui commence par 1 cela fonctionne "149 = 10010101"
J'ai cherché dans le manuel, un peu partout sur internet, mais je n'ai pas trouvé de solution...
Mon programme marche plutôt bien en soit car il génère un nombre aléatoire, il demande à entrer l'équivalent en binaire, le compare et dit si c'est bon ou pas.
Mais il y a un problème qui vient du fait que par défaut pour un nombre binaire l'Amstrad "retire" les "0 (zéros)" inutiles avant les "1". Donc pour comparer l'ordi attend les 8 chiffres "00000111"
Un exemple avec les captures ci-dessous, on voit que mes valeurs entrées sont bonnes mais qu'il met "Bad" car il y a 7 chiffres et non 8, car il débute par 0, "69 = 01000101".
Par contre si par chance le nombre à les 8 chiffres qui commence par 1 cela fonctionne "149 = 10010101"
J'ai cherché dans le manuel, un peu partout sur internet, mais je n'ai pas trouvé de solution...
Dernière édition par tetsuro le Dim 17 Déc 2017 - 14:42, édité 1 fois
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Une idéeo comme ça, transforme tes chaines en valeur numérique et compare les.
Tu as une fonction pour cela . (je ne sais plus c'est quoi vraiment peut être val().
La c'est que des chaîne de caractère si je ne me trompe pas.
Tu as une fonction pour cela . (je ne sais plus c'est quoi vraiment peut être val().
La c'est que des chaîne de caractère si je ne me trompe pas.
Re: Programmer "SUR" Amstrad CPC
Oui c'est vrais, tu as raison, je compare des chaines de caractères, d'où le problème de taille de la chaine, je vais faire ma recherche sur VAL(), j'étais tombé dessus mais je ne m'y suis pas attardé, j'ai pris la solution des $ car je n'arrive pas à faire passer un binaire sur un INPUT.
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Ou tu fais (je te laisse traduire)
Right("00000000"+tachaine binaire,8)
Right("00000000"+tachaine binaire,8)
Re: Programmer "SUR" Amstrad CPC
- Code:
10 dec=3
20 INPUT s$
30 IF s$ = BIN$(dec) THEN PRINT "Good :)"
40 IF s$ <> BIN$(dec) THEN PRINT "Bad :("
Un bon exemple, quand je tape ce programme
J'aimerais pouvoir entrer avec le input le binaire (de la décimale 3) en entier comme ceci : 00000011, hors dans ce cas le programmer attends que je rentre 11 en ignorant les 000000.
- SI je tape 00000011, il me dit BAD, alors que c'est bon en soit
- Si je met 11 il me dit GOOD, c'est bon en soit, mais j'aimerais entrer les 8 bits car j'ai une idée de programme pédagogique.
@Monos :
J'ai fait des recherches sur VAL() et j'ai un peu manipulé, il permet d'extraire une valeur numérique dans une chaine de caractères qui débute par des chiffres, c'est cool mais ça ne règle pas mon problème car il reçoit la suite de bits 10000001 comme étant le nombre décimal 10.000.001, et je ne peux pas les comparer sinon j'ai un "Type mismatch"...
La solution du programmer juste au dessus fpnctionne mais j'ai le problème des 000000 ignorés...
@Urbinou :
Merci, mais désolé je n'ai pas compris ton exemple :)
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Bon, tu vas devoir faire une sous routine pour éliminter les 0 au début de ta chaine. Cela passe par un string parser
-Il te faut manipuler les gosub
-Il te faut une variable intermédiaire.
-Utiliser la fonction lde hachage. Left$,Mid$,Right$
-Utiliser les fonction de boucle et de condition
tu regardes la première lettre de ta chaine, si c'est 0, alors tu dois la virer de ta chaine et tu repasses dans ta boucle pour tester "la 2em lettre" qui qui reste la premier lettre"
Si ce n'est pas 0 c'est que c'est bon !
Tu peux comparer au départ que tu as bien 8 lettres dans ta variable avec la fonction len$() qui renvois le nombre de "lettre" d'une chaine.
-Il te faut manipuler les gosub
-Il te faut une variable intermédiaire.
-Utiliser la fonction lde hachage. Left$,Mid$,Right$
-Utiliser les fonction de boucle et de condition
tu regardes la première lettre de ta chaine, si c'est 0, alors tu dois la virer de ta chaine et tu repasses dans ta boucle pour tester "la 2em lettre" qui qui reste la premier lettre"
Si ce n'est pas 0 c'est que c'est bon !
Tu peux comparer au départ que tu as bien 8 lettres dans ta variable avec la fonction len$() qui renvois le nombre de "lettre" d'une chaine.
Re: Programmer "SUR" Amstrad CPC
J'ai mieux.
10 dec=3
20 b$="00000000"+bin$(dec)
30 b$=right$(b$,8)
35 input a$
40 if a$=b$ then print "ok"
50 if as<>b$ then print "pas ok"
60 goto 10
je prend mon problème à l'envers, j'ajoute des 0 à gogo à dec, et avec right$(variable,nombre de lettre) je vais rechercher mes 8 lettres assurés. maintenant je peux comparer le bignouffe
10 dec=3
20 b$="00000000"+bin$(dec)
30 b$=right$(b$,8)
35 input a$
40 if a$=b$ then print "ok"
50 if as<>b$ then print "pas ok"
60 goto 10
je prend mon problème à l'envers, j'ajoute des 0 à gogo à dec, et avec right$(variable,nombre de lettre) je vais rechercher mes 8 lettres assurés. maintenant je peux comparer le bignouffe
Re: Programmer "SUR" Amstrad CPC
C'était la solution d'Urbinou.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer "SUR" Amstrad CPC
@Monos :
Merci pour tes explications, et heureusement car de toutes façons je n'avais pas le niveau pour comprendre l'explication abrégée de Urbinou . Mais là j'ai testé ton code et ça fonctionne, c'est cool merci.
Merci pour tes explications, et heureusement car de toutes façons je n'avais pas le niveau pour comprendre l'explication abrégée de Urbinou . Mais là j'ai testé ton code et ça fonctionne, c'est cool merci.
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Bon, je commence un petit "Space Invaders" et j'ai deux petites questions.
Je voudrais avoir un sprite en mode 1 de 16*16. Et je me demande quelle est la meilleure méthode selon vous, si il y en a une, car j'ai pas l'impression que faire le code suivant ne soit très optimisé :
Et l'autre question se porte sur l'instruction FRAME. Elle marche plutot pas mal sur un mouvement automatique, mais sur un mouvement avec les flèches directionnelles ça saccade...Dans le manuel ils en parlent, mais dans un contexte de déplacement avec les flèches c'est très saccadé, je n'ai peut-être pas compris quelque chose :
(Code du manuel "Chapitre 1 - page 57)
Je voudrais avoir un sprite en mode 1 de 16*16. Et je me demande quelle est la meilleure méthode selon vous, si il y en a une, car j'ai pas l'impression que faire le code suivant ne soit très optimisé :
- Code:
LOCATE x,y
PRINT chr$(32)+chr$(143)+chr$(143)+chr$(32)
LOCATE x2,y2
chr$(32)+chr$(143)+chr$(143)+chr$(32)
Et l'autre question se porte sur l'instruction FRAME. Elle marche plutot pas mal sur un mouvement automatique, mais sur un mouvement avec les flèches directionnelles ça saccade...Dans le manuel ils en parlent, mais dans un contexte de déplacement avec les flèches c'est très saccadé, je n'ai peut-être pas compris quelque chose :
(Code du manuel "Chapitre 1 - page 57)
- Code:
70 FOR n=1 TO 300:NEXT n
80 FOR x=39 TO 1 STEP -1
90 LOCATE x,20
100 FRAME
110 PRINT CHRf(251);" "
120 NEXT x
130 FOR n=1 TO 300:NEXT n
140 GOTO 20
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Bon voilà une tentative de code lol,
- Je fais défiler des étoiles aléatoires (que j'aimerais être un arrière plan permanent)
- J'essaie d'afficher un vaisseau (mais il se fait emporter par le scrolling et surtout ça saccade à mort !)
Je ne sais pas encore comment dissocier l'affichage et le mouvement du vaisseau du scrolling.
Le code (faut vraiment que j'investisse dans un Gotek pour partager le code ) :
Une magnifique vidéo :
- Je fais défiler des étoiles aléatoires (que j'aimerais être un arrière plan permanent)
- J'essaie d'afficher un vaisseau (mais il se fait emporter par le scrolling et surtout ça saccade à mort !)
Je ne sais pas encore comment dissocier l'affichage et le mouvement du vaisseau du scrolling.
Le code (faut vraiment que j'investisse dans un Gotek pour partager le code ) :
Une magnifique vidéo :
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
en pur basic tu va galerer à mort pour faire un jeu avec un scrolling
C'est trop limité en affichage et trop lent pour arriver a faire quelque chose de potable... meme si c'est l'un des basic 8bit le splus rapides qui existait.
C'est trop limité en affichage et trop lent pour arriver a faire quelque chose de potable... meme si c'est l'un des basic 8bit le splus rapides qui existait.
_______________________________________________________
Re: Programmer "SUR" Amstrad CPC
Ce genre de scrolling (dans le sens du défilement du texte) est jouable en Basic, car il est implémenté dans l'interpréteur. Même en Thomson, c'était faisable.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer "SUR" Amstrad CPC
c'est pas mal du tout !
mes souvenirs de 1987 ne sont plus tres bon, mais je crois me rapeller quil 'y avait une fonction (frame?) qui faisait comme un double buffer et evitait les clignotements et meme peut etre la disparition de ton vaisseau. ça ralentissait un peu la boucle par contre
as tu le bouquin amstrad du locomotive basic ? tout y est dedans, meme aussi pour creer ses chr$ perso. il etait génial ce basic !
en tout cas, belle démarche. programmer direct sur un vieux micro c'est vivre à fond le concept du retro-programming !
mes souvenirs de 1987 ne sont plus tres bon, mais je crois me rapeller quil 'y avait une fonction (frame?) qui faisait comme un double buffer et evitait les clignotements et meme peut etre la disparition de ton vaisseau. ça ralentissait un peu la boucle par contre
as tu le bouquin amstrad du locomotive basic ? tout y est dedans, meme aussi pour creer ses chr$ perso. il etait génial ce basic !
en tout cas, belle démarche. programmer direct sur un vieux micro c'est vivre à fond le concept du retro-programming !
Re: Programmer "SUR" Amstrad CPC
ahahahdrfloyd a écrit:en pur basic tu va galerer à mort pour faire un jeu avec un scrolling
C'est trop limité en affichage et trop lent pour arriver a faire quelque chose de potable... meme si c'est l'un des basic 8bit le splus rapides qui existait.
https://cpcrulez.fr/coding_src-list-graphic-crtc-on-screen_effects_on_the_CPC464_POPU.htm
Re: Programmer "SUR" Amstrad CPC
Vous avez JADE qui permet de créer des jeux d'aventure largement au niveau des 1ers jeux graphiques:
http://www.cpc-power.com/index.php?page=detail&num=4053
A100% avait publié qques articles dessus et même fait un concours des meilleurs jeux créés avec.
http://www.cpc-power.com/index.php?page=detail&num=4053
A100% avait publié qques articles dessus et même fait un concours des meilleurs jeux créés avec.
kawickboy- Interne
- Nombre de messages : 9884
Age : 46
Localisation : Paris / Eu - Le Tréport
Date d'inscription : 30/03/2008
Re: Programmer "SUR" Amstrad CPC
Bonne année à tous !
Je commence 2018 avec un petit problème bizarre avec les WINDOW et les tableaux.
Je créer une WINDOW#1 de 8x8 dans laquelle j'affiche un tableau de 8x8. Je LOCATE le tableau à 1,1 de la WINDOW#1, normalement la tableau doit s'afficher pile en haut à gauche de la fenêtre, mais ce n'est pas le cas, le tableau se décale de 1 sur la droite.
Si je test avec un PRINT#1,"12345678", ça s'affiche impec à 1,1.
Connaissez-vous ce petit souci ?
@kawickboy :
Merci pour l'info, super je ne connaissais pas, je testerais bien quand j'aurais un Gotek :) !
Je commence 2018 avec un petit problème bizarre avec les WINDOW et les tableaux.
Je créer une WINDOW#1 de 8x8 dans laquelle j'affiche un tableau de 8x8. Je LOCATE le tableau à 1,1 de la WINDOW#1, normalement la tableau doit s'afficher pile en haut à gauche de la fenêtre, mais ce n'est pas le cas, le tableau se décale de 1 sur la droite.
Si je test avec un PRINT#1,"12345678", ça s'affiche impec à 1,1.
Connaissez-vous ce petit souci ?
@kawickboy :
Merci pour l'info, super je ne connaissais pas, je testerais bien quand j'aurais un Gotek :) !
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
As tu ajouter le #1 a ton locate ?tetsuro a écrit:Bonne année à tous !
Je commence 2018 avec un petit problème bizarre avec les WINDOW et les tableaux.
Je créer une WINDOW#1 de 8x8 dans laquelle j'affiche un tableau de 8x8. Je LOCATE le tableau à 1,1 de la WINDOW#1, normalement la tableau doit s'afficher pile en haut à gauche de la fenêtre, mais ce n'est pas le cas, le tableau se décale de 1 sur la droite.
Si je test avec un PRINT#1,"12345678", ça s'affiche impec à 1,1.
Connaissez-vous ce petit souci ?
Si oui, vérifie que ta window est assez large pour le texte que tu lui envois.
Si tu penses que c'est bon, augmente la largeur de 1 pour voir.
Il me semble que le retour à la ligne automatique du print nique le positionnement en x quand on est dans une fenêtre (de mémoire, a vérifier).
Re: Programmer "SUR" Amstrad CPC
Oui je n'oublie aucun # je pense, la WINDOW est assez large oui.
J'ai naturellement augmenté la largueur de la WINDOW, et pour afficher un tableau de 8 je dois ajouter 1 à gauche et 1 à droite, je n'ai pas ce problème en y. Je peux trouver des solutions "système D" c'est pas le soucis, mais j'essaie de comprendre le problème pour apprendre .
J'ai pensé à TAG pour placer le texte en coordonnées graphiques, je sais qu'on peut faire un TAG#1 mais un MOVE #1,1,1 ne fonctionne pas ...
J'ai pris des photos :
Premier code, une WINDOW de 8 et un PRINT de 8, tout rentre impec :
Deuxième code, le même code mais je créer un tableau de 8, j'affiche le tableau de 8 et voilà le problème :
J'ai naturellement augmenté la largueur de la WINDOW, et pour afficher un tableau de 8 je dois ajouter 1 à gauche et 1 à droite, je n'ai pas ce problème en y. Je peux trouver des solutions "système D" c'est pas le soucis, mais j'essaie de comprendre le problème pour apprendre .
J'ai pensé à TAG pour placer le texte en coordonnées graphiques, je sais qu'on peut faire un TAG#1 mais un MOVE #1,1,1 ne fonctionne pas ...
J'ai pris des photos :
Premier code, une WINDOW de 8 et un PRINT de 8, tout rentre impec :
Deuxième code, le même code mais je créer un tableau de 8, j'affiche le tableau de 8 et voilà le problème :
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
ah ok. rien a voir avec la window.
dans ton code t(0) est une valeur et lorsque tu affiche une valeur avec un print, le basic ajoute toujours un espace devant.
essai ça et tu verras le meme effet
10 a=12
20 print a
dans ton code t(0) est une valeur et lorsque tu affiche une valeur avec un print, le basic ajoute toujours un espace devant.
essai ça et tu verras le meme effet
10 a=12
20 print a
Re: Programmer "SUR" Amstrad CPC
Et comment faire pour ne pas avoir cet espace ?
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Cette espace (c'est féminin dans ce cas), c'est certainement la position du signe : si tu affiches un nombre négatif, il y aura un - à la place de l'espace.
Peut-être que tu peux t'en sortir avec PRINT USING, sinon tu peux convertir ton entier en chaîne (STR$) puis faire un RIGHT$ après avoir testé que la valeur initiale était bien positive.
Peut-être que tu peux t'en sortir avec PRINT USING, sinon tu peux convertir ton entier en chaîne (STR$) puis faire un RIGHT$ après avoir testé que la valeur initiale était bien positive.
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer "SUR" Amstrad CPC
J'aimerais afficher un tableau, mais quand j'écris la méthode suivante les chiffres "scrollent" lol, alors que si j'affiche un caractère au lieu d'une case du tableau la suite s'affiche sans s’effacer. (D’ailleurs j'ai testé cette méthode de tableau pour faire scroller un personnage sur l'écran, sans avoir à afficher les espace " " dans PRINT pour les 4 directions Haut Bas Gauche Droite)
Une photo :
@Tryphon :
Merci pour ta réponse, je vais l'étudier car ça fait appel à pas mal de choses que je ne maitrise pas bien encore
Une photo :
@Tryphon :
Merci pour ta réponse, je vais l'étudier car ça fait appel à pas mal de choses que je ne maitrise pas bien encore
tetsuro- Patient contaminé
- Nombre de messages : 593
Age : 47
Localisation : Carcassonne
Date d'inscription : 27/12/2015
Re: Programmer "SUR" Amstrad CPC
Tryphon a écrit:Cette espace (c'est féminin dans ce cas)
Tryphon, mon monde s'écroule... !
Re: Programmer "SUR" Amstrad CPC
Ça m'a fait pareil
Tryphon- Docteur *
- Nombre de messages : 26166
Age : 47
Localisation : Un peu plus à l'Ouest
Date d'inscription : 23/07/2016
Re: Programmer "SUR" Amstrad CPC
si tes valeurs vont de 0 à 9, tu peux faire print chr$(48+l(i))tetsuro a écrit:Et comment faire pour ne pas avoir cet espace ?
car
la fonction chr$(n) affiche le caractere numéro n
le caractères 48 est le zéro
le caractère 49 est le 1 etc...
Re: Programmer "SUR" Amstrad CPC
Pour virer l'espace avant le chiffre, la méthode de 65c02 fonctionnera, ainsi que la méthode de Tryphon (print using"#";variable).
Bien vu.
Bien vu.
nemokantio- Patient contaminé
- Nombre de messages : 345
Age : 48
Localisation : Delgastan
Date d'inscription : 23/01/2013
Page 3 sur 3 • 1, 2, 3
Sujets similaires
» Programmer sur Gameboy
» [VDS] Lot double CPC 464 + CPC 6128 + Monitor Couleur + Tuner Amstrad + gun Amstrad + jeux D7
» SP8-A Programmer
» [Amstrad CPC] Missile Command, la conversion pour Amstrad !
» Programmer sur Atari ST aujourd'hui
» [VDS] Lot double CPC 464 + CPC 6128 + Monitor Couleur + Tuner Amstrad + gun Amstrad + jeux D7
» SP8-A Programmer
» [Amstrad CPC] Missile Command, la conversion pour Amstrad !
» Programmer sur Atari ST aujourd'hui
Page 3 sur 3
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum