Logicielsmoto.com
http://www.logicielsmoto.com/phpBB/

Question sur "LINE-(X2,Y2)" en BASIC ?
http://www.logicielsmoto.com/phpBB/viewtopic.php?f=3&t=690
Page 1 sur 1

Auteur:  Neotenien [ 08 Déc 2022, 22:11 ]
Sujet du message:  Question sur "LINE-(X2,Y2)" en BASIC ?

Bonjour

Dans le cadre d'un petit challenge proposé sur internet, il est demandé de dessiner une étoile pleine avec un algorithme le plus court possible (J'ai choisi le BASIC512 et le code tient en une seule ligne basic)

Le soucis vient de la commande "LINE -(X1,X2)". Normalement, c'est sensé reprendre du dernier point "posé"

Et pourtant, quand j'écris ce code

Code:
cls:line (4,4)-(10,10)"*":line-(16,4)"*"

Ca affiche ceci (du moins dans DCMOTO avec n'importe laquelle des ROM)
Fichier(s) joint(s):
Screenshot_Line-().png
Screenshot_Line-().png [ 9.7 Kio | Vu 5762 fois ]

Il y a un décalage du nouveau point de départ... Est ce normal docteur ? Est ce que le problème arrive sur les vraie machines ?

D'autant que si je mets
Code:
cls:line (4,4)-(10,10)"*":line(10,10)-(16,4)"*"

Ici ça s'affiche correctement!

Auteur:  Samuel Devulder [ 10 Déc 2022, 19:40 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Je ne sais pas, mais vu comme ça de loin, ca fait un peu penser à un bug du dessin de lignes en mode caractère.

Auteur:  PulkoMandy [ 13 Déc 2022, 16:11 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Je dirais que chaque affichage de caractère fait avancer le curseur vers la position suivante (vers la droite) automatiquement. Et la ligne suivante repart de cette nouvelle position.

Je ne sais pas s'il y a moyen de désactiver le déplacement du curseur lors de l'affichage de caractères?

Auteur:  jasz [ 15 Déc 2022, 16:47 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Essaye ça LINE-(17,4)"*" ;)

Auteur:  Neotenien [ 16 Déc 2022, 12:02 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Je demande juste de tester ça sur une vraie machine, je soupconne un bug dans DC Moto à ce propos

Comme indiqué dans mon message, si on fait le traçage en partant des points origines (et non pas juste le racourci) on obtient le bon traçé... C'est à doire que le point origine qui est sensé être le dernier point du dernier traçé, et ici correctement calculé.

Auteur:  Daniel Coulom [ 16 Déc 2022, 22:03 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Pourquoi soupçonner dcmoto ? As-tu des indices ou des preuves ? As-tu essayé ton programme avec d'autres émulateurs ? As-tu lu et compris la réponse de PulkoMandy ?

Auteur:  jasz [ 17 Déc 2022, 11:06 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Ce n'est pas un bug de DCMOTO ou sinon tout les ordinateurs Thomson ont le même :roll:

Le fait de faire line-(16,4)"*" fait débuter l'affichage à la position du curseur non pas en x=10 mais en x=11

[edit] Correction avec les abscisses (x) et non les ordonnées (y)

Auteur:  Neotenien [ 21 Déc 2022, 06:57 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

jasz a écrit:
Ce n'est pas un bug de DCMOTO ou sinon tout les ordinateurs Thomson ont le même :roll:

Le fait de faire line-(16,4)"*" fait débuter l'affichage à la position du curseur non pas en y=10 mais en y=11


Ok merci pour l'info

C'est pas top comme solution. Ca agit comme pour print ou putc des moniteur. Je pense qu'ils ont dû essayer de réduire au maximum le code dans les ROM.

Et pardon à Daniel d'avoir douté, c'est pourquoi j'avais demandé de vérifier avec une vraie machine.

Auteur:  Neotenien [ 21 Déc 2022, 07:06 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

PulkoMandy a écrit:
Je dirais que chaque affichage de caractère fait avancer le curseur vers la position suivante (vers la droite) automatiquement. Et la ligne suivante repart de cette nouvelle position.

Je ne sais pas s'il y a moyen de désactiver le déplacement du curseur lors de l'affichage de caractères?


Oui le problème vient de là. Ca doit être lié à l'instruction "PRINT" je pense (et à PUTC en assembleur/moniteur)

C'est quand même ennuyeux quand on s'attend à un résultat qui est documenté et qu'on obtient autre chose.

Tant pis, faudra que je pense à ne plus utiliser cette particularité en mode caractère.

Par contre, je me demande quel est le résultat sur des Basic Microsoft 1.0 sur d'autres machines (MSX, C64, Amstrad, TRS80 Coco etc), je suppose qu'on a le même résultat ?... Je viens de vérifier sur les Basic d'autres machines comme Amstrad, TRS Coco, C64... Il semble que leur Basic étaient nettement moins avancé que celle des Thomson. Il faut attendre Basic 3.5 voire 7 pour C64 afin d'avoir un basic de même niveau que celui des Thomson. Et donc, dans aucun de ces Basic, on a un "line" et "Box" utilisant les chaines de caractères.

Et donc, pour en revenir au problème initial, j'ai testé en ajoutant un "?chr$(8);" ou un "locate pos-1" avant le line -(), mais rien n'y fait. Ca ne semble pas lié aux fonction de position écran finalement.

Auteur:  jasz [ 22 Déc 2022, 16:39 ]
Sujet du message:  Re: Question sur "LINE-(X2,Y2)" en BASIC ?

Ceci fonctionne plutôt bien

Fichiers joints:
1.jpg
1.jpg [ 5.2 Kio | Vu 5581 fois ]

Page 1 sur 1 Heures au format UTC + 1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/