Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| La surprise du jour | |
|
+4silverman Jicehel bignono Parpaiun 8 participants | |
Auteur | Message |
---|
Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La surprise du jour Sam 9 Mai 2015 - 21:06 | |
| Salut les panoramiciens ! Voici ma surprise du jour que j'ai mis une bonne semaine à préparer ! J'espère qu'elle vous intéressera (plus fort que moi tu meurs !). Faites un peu de pub, de poésie, allez -y sans crainte. Mais gare aux tontons qui se prennent l'envie de faire des modifs dans mon programme ! - Code:
-
rem =======================================================================
rem Bande-annonce
rem ======================================================================= rem Auteur: Parpaiun rem Date-version: 09/05/2015 rem ======================================================================= rem Dans les années 1980, une grande bande-annonce, apposée sur un immeuble rem ou sur un panneau à un carrefour, faisait défiler des annonces à rem caractère publicitaire sous les yeux des passants. rem L auteur s est souvenu de ça et a eu l idée géniale de faire ce programme. rem Ouvrez donc bien vos mirettes ! ' ' Pour stopper le défilement après lancement, appuyez sur "Echap" ou "Escape" rem ======================================================================= dim c$,d%,e$,i%,j%,n%,nvc%,pc%,r%,s%,texte$,u%,x%,y% dim bande%(80,8),code%(31,5),masque%(6,8) label reprise,debcar,initmask,debmask rem ======================================================================= ' Codage des majuscules Data 62,80,144,80,62 :' A Data 254,146,146,146,108 :' B Data 124,130,130,130,68 :' C Data 254,130,130,130,124 :' D Data 254,146,146,146,130 :' E Data 254,144,144,144,128 :' F Data 124,130,146,146,94 :' G Data 254,16,16,16,254 :' H Data 0,130,254,130,0 :' I Data 4,2,2,2,252 :' J Data 254,16,40,68,130 :' K Data 254,2,2,2,2 :' L Data 254,64,48,64,254 :' M Data 254,64,32,16,254 :' N Data 124,130,130,130,124 :' O Data 126,144,144,144,96 :' P Data 124,130,138,132,122 :' Q Data 254,144,152,148,98 :' R Data 116,146,154,146,76 :' S Data 128,128,254,128,128 :' T Data 252,2,2,2,252 :' U Data 248,4,2,4,248 :' V Data 254,4,24,4,254 :' W Data 198,40,16,40,198 :' X Data 224,16,14,16,224 :' Y Data 134,138,146,162,194 :' Z Data 0,0,0,0,0 :' blanc Data 0,16,16,16,0 :' Trait d'union Data 0,0,250,0,0 :' Point d'exclamation Data 64,128,138,144,96 :' Point d'interrogation Data 0,0,2,0,0,0 :' point ' rem Enregistrement des données en mémoire for i%=1 to 31 for j%=1 to 5 : read code%(i%,j%) : next j% next i% rem ======================================================================= rem Constantes nvc% = 8 :' Nombre vertical de cercles sur la bande pc% = 10 :' Ecart entre 2 centres de cercles rem Ne pas modifier ce qui suit, contrôle de caractères ! e$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -!?." rem ============================ =========================================== rem Mise en forme de la fenêtre bande-annonce caption 0,"BANDE-ANNONCE" height 0,150 : width 0,870 rem ======================================================================= rem Affichage de la bande-annonce vierge For x% = 1 To 80 For y% = 1 To nvc% 2d_Circle 22 + x% * pc%, 10 + y% * pc%, 5 Next y% Next x% rem ======================================================================== ' Mettez ICI votre texte en MAJUSCULES à faire défiler (maximum = 255 caractères) texte$="ABCDEFGHIJKLMNOPQRSTUVWXYZ -?!." texte$ = texte$ + string$(14," ") rem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rem TRAITEMENT
rem ======================================================================= reprise: d%=1 debcar: c$=mid$(texte$,d%,1) rem ======================================================================= rem Contrôle du caractère lu for r%=1 to len(e$) if c$ = mid$(e$,r%,1) then goto initmask next r% message "Caractère non trouvé dans e$ !" END
initmask: rem Initialisation du masque à chaque nouveau caractère for i% = 1 to 6 for j% = 1 to 8 : masque%(i%,j%) = 0 : next j% next i% rem ====================================================================== rem Conversion des codes en points mis dans le masque For i% = 1 To 5 n% = code%(r%, i%) If n% > 127 Then masque%(i%, 1) = 1 : n% = n% - 128 If n% > 63 Then masque%(i%, 2) = 1 : n% = n% -64 If n% > 31 Then masque%(i%, 3) = 1 : n% = n% -32 If n% > 15 Then masque%(i%, 4) = 1 : n% = n% -16 If n% > 7 Then masque%(i%, 5) = 1 : n% = n% -8 If n% > 3 Then masque%(i%, 6) = 1 : n% = n% -4 If n% > 1 Then masque%(i%, 7) = 1 : n% = n% -2 If n% > 0 Then masque%(i%, = 1 Next i% rem ======================================================================== u% = 1 debmask: if scancode = 27 then END rem Installation des points verticaux du caractère à l extrême droite de rem la bande. For j% = 1 To 8 : bande%(80, j%) = masque%(u%, j%) Next j% rem ======================================================================== rem Déplacement progressif des caractères de la droite vers la gauche de rem la bande For i% = 1 To 79 For j% = 1 To 8 bande%(i%, j%) = bande%(i% + 1, j%) Next j% Next i% rem ======================================================================== rem Affichage des caractères sur la bande For i% = 1 To 80 For j% = 1 To 8 2d_fill_color 255,255,255 If bande%(i%, j%) = 1 then 2d_fill_color 0,0,0 2d_Circle 22 + i% * pc%, 10 + j% * pc%, 4 Next j% Next i% rem ======================================================================== rem Retour en début de traitement u% = u% + 1 : If u% < 7 then GoTo debmask d% = d% + 1 : If d% < Len(texte$) then GoTo debcar GoTo reprise
Je trouve que le défilé de caractères n'est pas assez rapide, une solution ? J'attends volontiers vos critiques , merci ! de ParpaiuN
Dernière édition par Parpaiun le Sam 9 Mai 2015 - 21:34, édité 2 fois | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La surprise du jour Sam 9 Mai 2015 - 21:19 | |
| Suite avec mes excuses pour ce petit, oh mais tout petit bug ! Dans la variable e$ ajoutez un blanc entre le Z et le trait-d'union et le texte bouclera sans problème ! Merci pour votre peine De Parpaiun | |
| | | Invité Invité
| Sujet: Re: La surprise du jour Sam 9 Mai 2015 - 23:06 | |
| Bonsoir Parpaium! Je viens d'essayer ton programme, et chez moi ça ne fonctionne pas. J'ai pas tellement le temps de regarder pourquoi, mais pour avoir une meilleurs vision, j'ai refait l'indentation des lignes avec un programme que j'ai déjà fait, pour mieux comprendre. Je ne veux pas tellement polémiquer, mais certaines choses ne me satisfait pas, et si je le dis, ce n'est pas pour faire des remarques, mais pour que tu essayes de réfléchir à la façon de reprendre ton programme. Même si les goto(s) ne m'effraient pas, je pense que dans ton cas, tu peux facilement les éviter. A toi de voir, et vu les programmes que tu fais, je sais que tu en ais capable. Je remets ton code avec une indentation plus compréhensible, mais sans rien changer: - Code:
-
rem =======================================================================
rem Bande-annonce
rem ======================================================================= rem Auteur: Parpaiun rem Date-version: 09/05/2015 rem ======================================================================= rem Dans les années 1980, une grande bande-annonce, apposée sur un immeuble rem ou sur un panneau à un carrefour, faisait défiler des annonces à rem caractère publicitaire sous les yeux des passants. rem L auteur s est souvenu de ça et a eu l idée géniale de faire ce programme. rem Ouvrez donc bien vos mirettes ! ' ' Pour stopper le défilement après lancement, appuyez sur "Echap" ou "Escape" rem ======================================================================= dim c$,d%,e$,i%,j%,n%,nvc%,pc%,r%,s%,texte$,u%,x%,y% dim bande%(80,8),code%(31,5),masque%(6,8) label reprise,debcar,initmask,debmask rem ======================================================================= ' Codage des majuscules Data 62,80,144,80,62 :' A Data 254,146,146,146,108 :' B Data 124,130,130,130,68 :' C Data 254,130,130,130,124 :' D Data 254,146,146,146,130 :' E Data 254,144,144,144,128 :' F Data 124,130,146,146,94 :' G Data 254,16,16,16,254 :' H Data 0,130,254,130,0 :' I Data 4,2,2,2,252 :' J Data 254,16,40,68,130 :' K Data 254,2,2,2,2 :' L Data 254,64,48,64,254 :' M Data 254,64,32,16,254 :' N Data 124,130,130,130,124 :' O Data 126,144,144,144,96 :' P Data 124,130,138,132,122 :' Q Data 254,144,152,148,98 :' R Data 116,146,154,146,76 :' S Data 128,128,254,128,128 :' T Data 252,2,2,2,252 :' U Data 248,4,2,4,248 :' V Data 254,4,24,4,254 :' W Data 198,40,16,40,198 :' X Data 224,16,14,16,224 :' Y Data 134,138,146,162,194 :' Z Data 0,0,0,0,0 :' blanc Data 0,16,16,16,0 :' Trait d'union Data 0,0,250,0,0 :' Point d'exclamation Data 64,128,138,144,96 :' Point d'interrogation Data 0,0,2,0,0,0 :' point ' rem Enregistrement des données en mémoire for i%=1 to 31 for j%=1 to 5 : read code%(i%,j%) : next j% next i% rem ======================================================================= rem Constantes nvc% = 8 :' Nombre vertical de cercles sur la bande pc% = 10 :' Ecart entre 2 centres de cercles rem Ne pas modifier ce qui suit, contrôle de caractères ! e$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ -!?." rem ============================ =========================================== rem Mise en forme de la fenêtre bande-annonce caption 0,"BANDE-ANNONCE" height 0,150 : width 0,870 rem ======================================================================= rem Affichage de la bande-annonce vierge For x% = 1 To 80 For y% = 1 To nvc% 2d_Circle 22 + x% * pc%, 10 + y% * pc%, 5 Next y% Next x% rem ======================================================================== ' Mettez ICI votre texte en MAJUSCULES à faire défiler (maximum = 255 caractères) texte$="ABCDEFGHIJKLMNOPQRSTUVWXYZ -?!." texte$ = texte$ + string$(14," ") rem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
rem TRAITEMENT
rem ======================================================================= reprise: d%=1 debcar: c$=mid$(texte$,d%,1) rem ======================================================================= rem Contrôle du caractère lu for r%=1 to len(e$) if c$ = mid$(e$,r%,1) then goto initmask next r% message "Caractère non trouvé dans e$ !" END
initmask: rem Initialisation du masque à chaque nouveau caractère for i% = 1 to 6 for j% = 1 to 8 : masque%(i%,j%) = 0 : next j% next i% rem ====================================================================== rem Conversion des codes en points mis dans le masque For i% = 1 To 5 n% = code%(r%, i%) If n% > 127 Then masque%(i%, 1) = 1 : n% = n% - 128 If n% > 63 Then masque%(i%, 2) = 1 : n% = n% -64 If n% > 31 Then masque%(i%, 3) = 1 : n% = n% -32 If n% > 15 Then masque%(i%, 4) = 1 : n% = n% -16 If n% > 7 Then masque%(i%, 5) = 1 : n% = n% -8 If n% > 3 Then masque%(i%, 6) = 1 : n% = n% -4 If n% > 1 Then masque%(i%, 7) = 1 : n% = n% -2 If n% > 0 Then masque%(i%, = 1 Next i% rem ======================================================================== u% = 1 debmask: if scancode = 27 then END rem Installation des points verticaux du caractère à l extrême droite de rem la bande. For j% = 1 To 8 : bande%(80, j%) = masque%(u%, j%) Next j% rem ======================================================================== rem Déplacement progressif des caractères de la droite vers la gauche de rem la bande For i% = 1 To 79 For j% = 1 To 8 bande%(i%, j%) = bande%(i% + 1, j%) Next j% Next i% rem ======================================================================== rem Affichage des caractères sur la bande For i% = 1 To 80 For j% = 1 To 8 2d_fill_color 255,255,255 If bande%(i%, j%) = 1 then 2d_fill_color 0,0,0 2d_Circle 22 + i% * pc%, 10 + j% * pc%, 4 Next j% Next i%
Et pour la peine, je mets aussi mon programme d'indentation des lignes. Il est sur le forum, et je viens de voir les commentaires que j'y ai mis, ma foie, j'aurai pu mieux faire, aussi je le remet ici. - Spoiler:
- Code:
-
' modifier l'incrémentation des lignes dim a%,b%,a$,b$ , x% , a1$ ,flag% ,d% dim fo%(20),wh%(20),re%(20),se%(20),ca%(20), if%(20) ,th$ ,n% ,g% dim for%,whi%,rep%,sel%,cas%,fi% th$="THEN " : d%=2 ' le mieux est de remplacer les mots clés par des variables, car la lecture du programme, le texte est pris en compte dim for$,while$,repeat$,select$,case$,if$,then$,end_if$,end_while$,until$,end_select$,next$ ,else$ ,return$ for$="FOR " while$ = "WHILE " repeat$="REPEAT" select$="SELECT " case$="CASE " if$="IF " then$="THEN " end_if$="END_IF" next$="NEXT " end_while$="END_WHILE" until$="UNTIL " end_select$="END_SELECT" else$="ELSE" return$="RETURN"
label traitement , marque , next1 ,copie , coller full_space 0 memo 1:bar_both 1 :width 1,width(0)-30:height 1,height(0)-80:top 1,20:left 1,5 :font_name 1,"Courier New" button 2:width 2,70:height 2,20:caption 2,"coller" : on_click 2,copie button 3:width 3,70:height 3,20:caption 3,"go":left 3,100: on_click 3,traitement edit 4:width 4,70:height 4,20:text 4,4 :left 4,200 button 5:width 5,70:height 5,20:caption 5,"copier":left 5,300:on_click 5,coller end ' =================================== copie: clipboard_paste 1 return
coller: if count(1)>0 b%=0 for a%=1 to count(1): b%=b%+len(item_read$(1,a%))+2 : next a% select_text 1,1,b% a$=select_read$(1) clipboard_string_copy a$ end_if return
traitement: d%=text$(4) x%=1 for a%=1 to count(1) caption 0,a% a$=trim$(item_read$(1,a%)) : a1$=upper$(a$) ' ----------------------------------------- if left$(a1$,3)= if$ if%(fi%) = x% :fi%=fi%+1:gosub marque :n%=instr(a1$,then$):g%=instr(a1$,chr$(34)+then$) if n% > 0 and g% =0 then fi%=fi%-1:x% = if%(fi%) :else : x%=x%+d% goto next1 end_if
if left$(a1$,4)= for$ fo%(for%) = x% :for%=for%+1 :gosub marque if instr(a1$,next$) > 0 then for%=for%-1: x%=fo%(for%) :else:x%=x%+d% goto next1 end_if
if left$(a1$,6)= while$ wh%(whi%) = x% : whi%=whi%+1 :gosub marque if instr(a1$,END_WHILE$) > 0 then whi%=whi%-1 : x%=wh%(whi%) :else :x%=x%+d% goto next1 end_if
if left$(a1$,6)= REPEAT$ re%(rep%) = x% :rep%=rep%+1 :gosub marque if instr(a1$,UNTIL$) > 0 then rep%=rep%-1 : x%=re%(rep%):else :x%=x%+d% goto next1 end_if
if left$(a1$,7)= SELECT$ se%(sel%) =x% : sel%=sel%+1:gosub marque if instr(a1$,END_SELECT$) > 0 then sel%=sel%-1: x%=se%(sel%) :else:x%=x%+d% goto next1 end_if
if left$(a1$,5)=CASE$ gosub marque : goto next1 end_if
if left$(a1$,6)= END_IF$ then fi%=fi%-1:x%=if%(fi%):gosub marque:goto next1 if left$(a1$,4)=ELSE$ then x%=if%(fi%-1):gosub marque: x%=x%+d% :goto next1 if left$(a1$,9)=END_WHILE$ then whi%=whi%-1: x%=wh%(whi%):gosub marque:goto next1 if left$(a1$,6)=UNTIL$ then rep%=rep%-1: x%=re%(rep%):gosub marque:goto next1 if left$(a1$,5)=NEXT$ then for%=for%-1: x%=fo%(for%):gosub marque:goto next1 if left$(a1$,10)=END_SELECT$ then sel%=sel%-1:x%=se%(sel%):gosub marque:goto next1 if left$(a1$,6)=RETURN$ then x%=0:gosub marque:goto next1 if right$(a$,1)=":" gosub marque if x%=0 then x%=3 goto next1 end_if if x%>0 item_delete 1,a%:item_insert 1,a%,string$(x%," ")+a$ else item_delete 1,a%:item_insert 1,a%,a$ end_if next1: next a% return
marque: if x%>0 item_delete 1,a%:item_insert 1,a%,string$(x%," ")+a$ else item_delete 1,a%:item_insert 1,a%,a$ end_if return
J'espère que des caractères ne sont pas bouffés par le forum, car il fonctionne chez moi. Tu copies le programme, et tu le colles. Tu appuies sur "GO" puis tu le copies de nouveau pour le mettre à la place de l'autre.
J'ai regardé pour modifier comme tu l'as dit, mais je ne vois pas de différence. Moi je suis sur un programme qui m'intéresse, et j'y retourne. Bonne programmation. EDIT: Voila, en voyant ton programme sans avoir voulu l'analyser, il y a des gotos dans des boucles for/next, et là c'est une erreur. Pour sortir d'une boucle for/next, il y a EXIT_FOREnsuite, lorsqu'il y a plein de teste à la suite, le mieux est de se servir de SELECT, CASE, END_SELECT, mais là ta méthode est correcte, celà me parrait seulement plus judicieux. C'est simplement pour avoir conscience d'autres possibilités.... Ton programme n'est pas événementielle, mais dans ce cas c'est pas vraiment utile. J'ai pas fait l'analyse pour savoir pourquoi il ne fonctionne pas. |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La surprise du jour Dim 10 Mai 2015 - 5:03 | |
| Merci COSMOS70 pour ta réponse ! Tous d'abord je me surnomme parpaiuN, j'insiste absolument sur le N final, car "Parpaium" se prononce "parpaillomme" à la latine, quel horrible mot, foi d'Obélix ! Bon, ceci dit PARPAIUN veut gentiment dire papillon en patois, voilà ! A propos de l'indentation, je suis parfaitement au courant de ça car j'ai l'expérience de programmation Basic acquise depuis déjà 43 ans. Je suppose que tu n'as pas bien regardé comment je fais mes indentations, si minimes soient ils. Sur ta remarque à propos de GOTO à l'intérieur d'une boucle For ... Next, j'ai nettement l'impression que tu as suivi la leçon de Papydall qui déteste les GOTO et préfère qu'on utilise les GOSUB. Je trouve que, comme lui, tu n'a pas tort. Ça va me perturber un peu dans mes projets, pourquoi ? Eh bien parce que je ne suis pas encore tout à fait habitué à ça et ça se comprend ! Donc je fais ce qui me plait en faisant vite et quand ça marche lors de l'exécution du programme en langage Panoramic, alors je le transmets tel quel. Et puis, vu mon âge, 75 ans bien sonnés, j'ai tellement à faire comme réalisations personnelles de programmes à traduire ou en projet, disons plus d'une cinquantaine, sans blaguer, avant que je devienne peut être Alzheimer... De toutes façons, à l'avenir, je ferai un effort pour calmer ceux que j'appelle désormais les puristes en programmation Panoramic. Et puis, je te félicite pour ton programme de correction de programmes. Çà ne m'intéresse pas trop, je dois le dire, parce que je ne fais pas de hacking, ni de piratage. En somme, par expérience, j'évite de farfouiller à l'intérieur des systèmes, de quelque façon que ce soit. Je reste bien sage comme une image et ça se voit ! Bien amicalement de ParpaiuN | |
| | | Invité Invité
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 8:26 | |
| Bonjour Papaorhum euh Parpaiun. Pour le nom, je ne sais pas, je croyais avoir mis un n à la fin. Désolé! Contrairement à ce que tu crois, je ne me considère pas comme un puriste, et plus d'une fois je sors des sentiers battus sur ce forum, ce qui me vaut quelques problèmes parfois. Pour l'indentation, c'est plutôt pour relire le programme d'un autre, et faciliter la lecture sur ce que l'on ne connait pas. Moi si j'ai répondu, ce qui devient rare, c'est parce que ton programme ne fonctionnait pas, et on dirait qu'il manque des lignes. - Code:
-
reprise: d%=1 debcar: c$=mid$(texte$,d%,1) rem ================= Il y a un label, et un c$ qui n'est lu qu'une fois, bizarre. Pour ce qui est du goto, ce n'est certainement de cette façon qu'il faut sortir d'une boucle. Tu mets autant de goto que tu veux, moi ça ne me dérange pas, mais mets les bien. C'est même curieux que Panoramic ne réagit pas, car à cette emplacement c'est une grosse erreur. A moins que que comme je le fais pour toi, les autres pensent le contraire sur ce que je dis Pour ce qui est de ton âge, là je ne te donne pas d'excuse. Tu montres une vivacité d'esprit, et tu as l'expérience, et on ne parle pas de l'âge qu'on a, mais de celui qu'on pense avoir. Moi j'en ai 66 pour l'instant, mais je me représente comme en ayant 35. Çà aide! Voici l'image qui reste bloquée. A toi de voir pourquoi!: |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 10:08 | |
| Bonjour à tous! J'aime bien ce programme. J'avais fait un truc similaire, mais je ne le retrouve plus dans mes fichiers. @ Cosmos Pour que cela fonctionne bien, j'ai ajouté un display à la ligne 136: - Code:
-
2d_Circle 22 + i% * pc%, 10 + j% * pc%, 4:display
Merci Parpaiun! A + | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 10:28 | |
| Il y a une autre solution pour le faire: Dessiner les cercles vides Pas besoin de mémoriser la grille et de tout recopier à chaque fois dans la case d'avant, il suffit de copier le picture depuis la colonne numero 2 jusqu'à la case 80 sur les cases 1 à 79 puis de redessiner les 8 leds de la derniere colonne puis de recommencer. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 10:50 | |
| Bonjour à tous, @Parpaiun Pas mal! L'avantage de la programmation évènementielle c'est de pouvoir cliquer/déplacer la fenêtre du programme pendant que celui-ci s'exécute, c'est dans ce but que Panoramic a été conçu. Ton code code n'a besoin que de très très peu de modifs pour obtenir cela. Pour augmenter la vitesse de défilement, il serait préférable de faire comme le suggère jicehel à mon avis. Panoramic n'est pas un foudre de guerre avec la 2D. Au bout d'un moment, ton programme plante; ça vient de là: sortir d'une boucle avec un GOTO rend le programme instable, il vaut mieux faire comme cela: - Code:
-
rem Contrôle du caractère lu for r%=1 to len(e$) if c$ = mid$(e$,r%,1) then exit_for next r% if r%>len(e$) then message "Caractère non trouvé dans e$ !" : END
| |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La surprise du jour Dim 10 Mai 2015 - 11:29 | |
| Grand merci à Cosmos70, Jicehel, Bignono et Silverman pour vos réponses qui m'encouragent à continuer dans l'amélioration de mon programme "Bande-annonce". Je vous rappelle à tous que toute modification autre que celle de la variable "texte$" risque d'entrainer des problèmes, mon programme se révélant un peu hermétique pour ne pas dire très ! A cosmos70, je vois ton problème qui peut être la cause soit de la suppression d'un caractère dans la variable "e$", ce qui est interdit quand on n'a pas fait l'expérience, soit dans la modification d'un GOTO ou d'un branchement, ce qui n'est pas possible pour de petits aventuriers tels que toi. A Jicehel, je trouve ta proposition de solution pour dessiner les cercles vides bien intéressante et je vais l'essayer sur le tard. A Bignono, je n'avais pas pensé à la fonction "Display" et je vais l'appliquer lors de mon prochain essai. Merci ! A Silverman, il est effectivement regrettable que "Panoramic n'est pas un foudre de guerre" (jolie expression !) comme tu l'as écrit, ce qui est dommage. Je n'ai aucune expérience, ni compétence en matière de langage machine et par conséquent de langage assembleur pour que cette "foudre de guerre" devienne réalité ... Il est vrai que la plupart des langages Basic ont parfois recours au langage Assembleur pour accélérer les choses. Qu'en est il avec le langage Panoramic, je vous le demande ? Pour ce qui est de cliquer, sois assuré que j'ai toujours les cinq doigts de ma main droite très actifs sur la souris (golotte, qu'elle s'appelle !) grâce à mes ordinateurs de bureau et portable. J'ai horreur de la tablette tactile sur cette dernière, bien entendu ! Mais de là à cliquer, je n'y pense que très rarement et je vais m'essayer à ce nouveau sport en me disant :"Prends tes clics et tes claques pour te secouer un p'tit peu, boudiou !" Je vais à nouveau reconsidérer mon programme "Bande-annonce" que je vous exposerai plus tard. Merci, Silverman ! Et bon dimanche à tous, de la part de ParpaiuN <- Faites attention là ou je vous flanque une grosse baffe foi d'Obélix ! | |
| | | Invité Invité
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 13:03 | |
| J'ai compris pourquoi cela ne fonctionnait pas: La dernière ligne: goto reprise n'était pas copié depuis le forum.
A+ |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 10 Mai 2015 - 13:52 | |
| Perso j' ai les yeux qui ont du mal avec les ronds vides. Comme ce n' est pas mon programme et que je ne veux pas m' attirer les foudres de Parpaiun, je ne le modifierai pas moi même. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 15:25 | |
| Moi, non plus! | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La surprise du jour Dim 10 Mai 2015 - 17:10 | |
| Bonjour Papydall, on me demande trop souvent de respecter manuellement les indentations dans mes programmes. Je suis bien d'accord. Mais pourquoi diable ne sont ils pas faits automatiquement par le package Panoramic comme le fait souvent le GFA Basic auquel je reste encore lié ? Cela libérerait les programmeurs de cette contrainte. Et suite à mon programme "Bande-annonce", on me répète une fois de plus de ne plus y utiliser GOTO. D'accord, mais qu'est ce que ça vient faire dans cette galère si ça se lit toujours dans la liste des fonctions Panoramic ? Alors je me suis dit: lions le GOTO au poteau d'exécution, tirons un coup de feu, PAN! et n'en parlons plus ! D'autre part, je suis désolé et déçu de constater le désintérêt de la majeure partie des panoramiciens pour mon programme "Bande-annonce" que j'avais pourtant préparé avec soin en tant que débutant une semaine durant. Force est de constater que le succès n'est pas au rendez-vous. Je ne suis pas du tout de nature à jeter les foudres (comme l'a prétendu ygeronimi) pour ensuite voir les autres se débiner ! S'il vous plait, ne brusquez pas les choses en peu de mots en ce qui concerne mes programmes. J'ai à mon actif une bonne cinquantaine de programmes GFA-Basic qui ne demandent qu'à être traduits gratuitement par mes soins si vous voulez bien que je reste dans votre club. Soyez gentil et restons bons amis, s'il vous plait, c'est tout ce que je demande. Snifff... de la part de ParpaiuN | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 17:54 | |
| Pas de soucis Parpaiun. Si tu est plus à l'aise en utilisant les goto, continues à le faire. Ce n'est pas facile pour nous d'aider à "mieux" programmer (je mets meiux entre guillemets car c'est un mieux qui nous est personnel) sans gâcher le plaisir de programmer. On ne veut surtout gacher to plaisir de programmer ni nous priver de tes créations, mais comme il nous semble que certaines choses pourraient être optimisées ou modifiées pour plus correspondre avec notre façon de faire, nous faisons des remarque dont tu peux ou non tenire compte. Ne pense pas que ta bande annonce n'ait pas eu le succès escompté. Nous l'avons tous testé. Seulement comme tu dis dans ton message que tu déconseilles les modifications, nous n'en avons pas fait et avons juste testé. Comme tu demandes également des idées pour accélérer l'affichage, nous t'avons donnés des pistes sans faire le programme ou modifier le tient afin de te laisser le faire selon ta méthode. C'est aussi pour ça que certains te conseilles d'éviter les goto ou de mettre en place une indentation. Ce sont des conseils et non des reproches. A toi d'en tenir compte ou non. C'est le rôle du forum: partager ces créations et recevoir les critiques et conseils. Cela ne remet en aucun cas en en cause ta participation à notre petit club ou la qualité de tes programmes. C'est juste un échange entre personne qui aiment toutes programmer. Le goto est autorisé et si tu regardes les conseils de Cosmos, ce n'est pas par rapport à l'usage des goto mais à la façon de les utiliser entre autre pour sortir des boucles for ... next où il vaut mieux sortir par un exit_for puis faire le goto. Les 2 fonctionnent, mais la solution de Cosmos permet mieux de savoir où l'on en ait avant de faire le goto. Ce n'est pas un point capital, mais un conseil sur la méthode. Surtout pour quand tu feras des programmes encore plus complexes. | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 18:03 | |
| Bonjour Parpaiun, - Citation :
- D'autre part, je suis désolé et déçu de constater le désintérêt de la majeure partie des panoramiciens pour mon programme "Bande-annonce"
Il faut savoir que ce n'est pas parce que l'on ne répond pas que l'on se désintéresse forcement d'un sujet ! Pour ma part, je consulte régulièrement le forum (presque tous les jours), mais c'est vrai que ce n'est pas pour autant que je glisse un message sur tous les sujets. Parfois, je n'ai rien a ajouter ou du moins rien de concret, donc autant se taire. C'est ma philosophie pour la plupart des cas. Il n'en reste pas moins que ce programme est intéressant, même si je pense qu'il peut être amélioré. Quant à la manière de programmer, chacun de nous a sa façon de travailler. Cela dit, si l'on connais le mot 'optimiser', il prends tout son sens sur notre forum, ou effectivement chacun apport sa touche a un code et permet l'amélioration. Lorsque plusieurs personnes penchent pour un certain type de programmation ou certains fonctionnement, on peut penser qu'ils ont globalement raison et que cela permet la progression dans l'utilisation optimale de Panoramic. Mainteant, c'est a l'auteur du programme d'apprécier si tel ou tel amélioration est bonne pour son code. A chacun de voir... Bonne fin de soirée à tous... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 10 Mai 2015 - 18:28 | |
| @ Parpaiun, Lorsque je parle de "foudres" ou de "courroux" c' est à prendre au 150e degrès... | |
| | | Invité Invité
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 19:11 | |
| Bon Papaorum (histoire de me faire remettre en place ). Non respect: papaiun, sauf qu'il faut aussi s'habituer au nom, et bien souvent il faut ré-afficher la page pour savoir comment c'est écrit. Pour moi pas de problème: Cosmos Con Cosmopolite... je sais faire avec (je mets con, car j'ai déjà eu le mot, mais je me traite ainsi régulièrement, je me retrouve ) Pour les goto, Je suis déjà intervenu sur ce sujet, il y a 2 ou 3 ans pour répliquer à un sujet où Jack voulais faire plusieurs sorte de LABEL selon le type d'appel. Tout le monde applaudissait, sauf moi, où je n'étais pas vraiment d'accord. Un goto ne me dérange pas dans la mesure où on ne sait pas faire autrement. Cela arrive rarement, et il y a longtemps que je ne l'ai pas utilisé. Maintenant je suis intervenu pour répondre à ton programme car j'avais un problème: chez moi cela ne fonctionnait pas, et pour cause, la dernière ligne n'avait pas été copié par moi, et c'était justement un goto. Tu te plains de n'avoir pas eu beaucoup de réponse. Normalement je ne répond plus, vu que rarement il y a de retour sur ce que je fais. Tu vois beaucoup de gens sont dans ce cas là, et pour moi c'est très régulier. Tu n'es pas le seul a avoir fait du GFA basic. J'ai encore le livre. Le dernier programme que j'ai fait avait plus de 22.000 lignes, et mon atari a fini par cramer. C'était en 1999. Cela dit: 22000lignes, il n'y avait qu'une seule instruction par ligne. Pour certains programmes que je fais aujourd'hui, vu que bien souvent je condense au maxi, je ne sais pas combien de lignes cela pourrait faire. Tu programmes comme tu veux. Je t'ai fait un retour, et je l'ai indenté à ma (notre?) façon pour avoir une meilleure vue de celui-ci en regardant en gros d'où pouvait venir le problème. Le le partage se fait pour que la communauté aussi comprenne. N'étant pas programmeur, il ne m'appartient pas de donner des conseils. As t-on age (Tu m'en as fait la remarque), tu fais comme tu veux, et tu partages aussi pour ton plaisir. Mais tout le monde n'a pas le temps de tester, ou de répondre. La majorité des programmes je ne les teste pas, surtout si il faut faire une installation pour voir le résultat, et comme tu vois j'ai testé le tien. Aussi n'oublie pas que certains font le pont! (les pauvres) et ne voyent pas le forum en ce moment. Salutation Cosmos |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: La surprise du jour Dim 10 Mai 2015 - 20:26 | |
| @Parpaiun, Tu aurais bien un foutu caractère... et c'est très bien ainsi. Si tu suis le forum régulièrement et que tu analyses, tu verras que tu n'est pas seul dans le cas de non réponse à tes sujets. Regarde l'exemple de Klaus, qui certes, a beaucoup de réponses, mais quelquefois il envoi ses nouveautés, sans se préoccuper de savoir si cela intéresse sur le coup (il y a souvent un temps de réaction). Je me suis plaint, une fois, de ne pas avoir de réponses à mes interventions. Maintenant je ne m'en préoccupe plus car finalement c'était mon ego qui prenait le dessus et je comprends que l'on ait pas toujours envie de participer. Nous avons, pour la plupart, une vie à coté de Panoramic.... Sache que j'ai testé ton programme, et je n'ai pas réagit: Pourquoi ? Ben j'en sait rien. On ne peut pas répondre à tous les sujets, et je comprends que cela puisse d'agacer: C'est ainsi... Alors, ne te fais pas de bile, tu es, comme tous, bienvenue sur le forum. A+ | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: La surprise du jour Lun 11 Mai 2015 - 1:17 | |
| @parpaiun toujours dans l'idée de rendre l'affichage plus rapide, tu peux utiliser la technique de jicehel, mais pas besoin des pictures puisque tu travailles directement dans le form. Donc dans ce cas, ces commandes devrait te servir: 2D_image_copy et 2D_image_paste. Et aussi, pour embellir la démo, essaye de simuler ton afficheur d'annonce avec des led colorés pour voir ce que ça donne. | |
| | | Parpaiun
Nombre de messages : 192 Age : 85 Localisation : HERAULT Date d'inscription : 15/04/2015
| Sujet: La surprise du jour Lun 11 Mai 2015 - 10:29 | |
| Merci Minibug, ygeronimi, cosmos70, jean Claude et silverman pour vos réponses et encouragements. Je traverse un moment de petite déprime ce qui explique mon saut d'humeur qui, fort heureusement, n'a rien à voir avec vos bons messages. Je dois décidément me garder de faire du sentiment pour ne pas vous déranger dans votre travail. J'ai bien failli abandonner Panoramic à cause de ses faiblesses en moins grande proportion que ses forces. Jugez en après mon analyse: - Absence d'indentation automatique - un GOTO jugé peu ou pas du tout fiable selon certains d'entre vous - En cas de message d'erreur, absence d'orientation vers la ligne où se situe cette erreur; ou mieux, vers la fonction ou la variable en cause. - Absence de liste de messages d'erreurs avec leurs explications (chacun d'entre vous n'utilise pas toujours le même système !) et peut-être encore d'autres... Je constate d'après vos messages que chacun d'entre vous a toujours raison, je le dis en toute sincérité. Bravo et merci ! Mes 43 ans d'expérience en programmation vous disent: - Construisez, construisez, vous apporterez ainsi la pierre à l'édifice. - Pour être un bon programmeur, il faut garder l'esprit disponible. - Soyez créatifs au plus profond de votre être. - Imaginez sans crainte tout ce que vous pouvez à travers votre propre monde. - Profitez pleinement de vos connaissances apprises lors de vos études à l'école. - Si possible, puisez dans toutes les sources (dans les bouquins ou par Internet, par exemple) pour trouver de quoi vous inspirer et réaliser vos programmes. - Explorez toujours et régulièrement Internet (sans payer pour les plus astucieux) pour découvrir d'autres domaines, d'autres passions, d'autres mondes. - Ne tirez pas sur le programmeur, il fait ce qu'il peut et il peut peu ! Voilà, j'en ai assez dit. Je me retire un bon moment pour continuer à potasser mes programmes. A un de ces jours, cordialement votre PARPAIUN | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: La surprise du jour Lun 11 Mai 2015 - 18:19 | |
| Bonjour a tous Grace a petite sub de Jicehel voici une version personnelle de BANDE ANNONCE - Code:
-
LEFT 0,650 : TOP 0,800 : HEIGHT 0,150 : WIDTH 0,1000 : caption 0,"BANDE-ANNONCE" 2D_TARGET_IS 0 : IMAGE 1
DIM t$ , x% , y% , n% , tab%(500,30) , a$ t$="Bonjour et bienvenue sur le programme Panoramic BANDE ANNONCE ... " : FONT_COLOR 0,0,0,0 : PRINT t$
FOR x%=0 TO TEXT_WIDTH(t$,0) FOR y%=0 TO TEXT_HEIGHT(t$,0) IF COLOR_PIXEL_BLUE(0,x%,y%)=0 AND COLOR_PIXEL_GREEN(0,x%,y%)=0 AND COLOR_PIXEL_RED(0,x%,y%)=0 tab%(x%,y%)=1 END_IF NEXT y% NEXT x%
2D_CLEAR
REPEAT FOR x%=0 TO TEXT_WIDTH(t$,0) FOR y%=0 TO TEXT_HEIGHT(t$,0) IF tab%(x%,y%)=1 LED(950,y%*7,4) END_IF NEXT y% 2D_IMAGE_COPY 1,10,1,970,149 FOR n%=10 TO 4 STEP -2 2D_IMAGE_PASTE 1,n%,1 PAUSE 10 NEXT n% a$=INKEY$ IF a$<>"" THEN EXIT_FOR NEXT x% UNTIL a$<>""
TERMINATE
SUB LED(x%,y%,r) 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 0,0,190 : 2D_CIRCLE x%+r,y%+r,r 2D_PEN_COLOR 30,30,220 : 2D_FILL_COLOR 30,30,220 : 2D_CIRCLE x%+r,y%+r,(0.8 * r) 2D_PEN_COLOR 60,60,250 : 2D_FILL_COLOR 60,60,250 : 2D_CIRCLE x%+0.66*r,y%+0.66*r,r/3 2D_PEN_COLOR 255,255,255 : 2D_FILL_COLOR 255,255,255 : 2D_CIRCLE x%+0.66*r,y%+0.66*r,r/8 END_SUB Bonne soirée a tous. Petite précision : On appuie sur n'importe quelle touche pour quitter | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: La surprise du jour Lun 11 Mai 2015 - 18:57 | |
| @Minibug Il semble que tu disposes d’un écran géant, or tout le monde n'est pas aussi veinard que toi. Trêve de blablabla, j’ai mis mon grain de sel et de poivre et voici ce que ça donne - Code:
-
HEIGHT 0,150 : WIDTH 0,1000 ' Centrage de la fenêtre left 0 ,(screen_x - width(0)) /2 : top 0, (screen_y - height(0))/2 caption 0,"BANDE-ANNONCE <CLICK> n'importe où pour terminer" 2D_TARGET_IS 0 : IMAGE 1
DIM t$ , x% , y% , n% , tab%(800,30) t$="Bonjour et bienvenue sur le programme Panoramic BANDE ANNONCE ... " : FONT_COLOR 0,0,0,0 ' Passage en majuscules t$ = upper$(t$) + string$(50," ") : PRINT t$ FOR x%=0 TO TEXT_WIDTH(t$,0) FOR y%=0 TO TEXT_HEIGHT(t$,0) IF COLOR_PIXEL_BLUE(0,x%,y%)=0 AND COLOR_PIXEL_GREEN(0,x%,y%)=0 AND COLOR_PIXEL_RED(0,x%,y%)=0 tab%(x%,y%)=1 END_IF NEXT y% NEXT x%
2D_CLEAR
REPEAT FOR x%=0 TO TEXT_WIDTH(t$,0) FOR y%=0 TO TEXT_HEIGHT(t$,0) IF tab%(x%,y%)=1 LED(950,y%*7,4) END_IF NEXT y% 2D_IMAGE_COPY 1,10,1,970,149 FOR n%=10 TO 4 STEP -2 2D_IMAGE_PASTE 1,n%,1 PAUSE 2 NEXT n% ' a$=INKEY$ ' IF a$<>"" THEN EXIT_FOR if scancode <> 0 then terminate NEXT x% UNTIL scancode <> 0
TERMINATE
SUB LED(x%,y%,r) 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 0,0,190 : 2D_CIRCLE x%+r,y%+r,r 2D_PEN_COLOR 30,30,220 : 2D_FILL_COLOR 30,30,220 : 2D_CIRCLE x%+r,y%+r,(0.8 * r) 2D_PEN_COLOR 60,60,250 : 2D_FILL_COLOR 60,60,250 : 2D_CIRCLE x%+0.66*r,y%+0.66*r,r/3 2D_PEN_COLOR 255,255,255 : 2D_FILL_COLOR 255,255,255 : 2D_CIRCLE x%+0.66*r,y%+0.66*r,r/8 END_SUB
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: La surprise du jour Lun 11 Mai 2015 - 18:58 | |
| J'aime beaucoup cette version Du coup je l'ai rendu un peu plus paramétrable et j'ai mis les leds en rouge de façon plus traditionnel, mais bon, on peut changer la couleur facilement ou en faire un paramètre d'appel si on veut. Ma version de ta version, donnerait: - Code:
-
LEFT 0,10 : TOP 0,10 : HEIGHT 0,300 : WIDTH 0,1300 : caption 0,"BANDE-ANNONCE" 2D_TARGET_IS 0 : IMAGE 1
DIM t$ , x% , y% , n% , tab%(500,30) , a$, r_led% t$="Bonjour et bienvenue sur le programme Panoramic BANDE ANNONCE ... " : FONT_COLOR 0,0,0,0 : PRINT t$
r_led% = 10 : HEIGHT 0,r_led% * 36
FOR x%=0 TO TEXT_WIDTH(t$,0) FOR y%=0 TO TEXT_HEIGHT(t$,0) IF COLOR_PIXEL_BLUE(0,x%,y%)=0 AND COLOR_PIXEL_GREEN(0,x%,y%)=0 AND COLOR_PIXEL_RED(0,x%,y%)=0 tab%(x%,y%)=1 END_IF NEXT y% NEXT x%
2D_CLEAR
REPEAT FOR x%=0 TO TEXT_WIDTH(t$,0) FOR y%=0 TO TEXT_HEIGHT(t$,0) IF tab%(x%,y%)=1 LED(WIDTH(0)-(5*(r_led%*2)),y%*(2*r_led%),r_led%) END_IF NEXT y% 2D_IMAGE_COPY 1,r_led%*2,1,WIDTH(0)-(3*(r_led%*2 )),HEIGHT(0) FOR n%=10 TO 4 STEP -2 2D_IMAGE_PASTE 1,n%,1 PAUSE 10 NEXT n% a$=INKEY$ IF a$<>"" THEN EXIT_FOR NEXT x% UNTIL a$<>""
TERMINATE
SUB LED(x%,y%,r) 2D_PEN_COLOR 0,0,0 : 2D_FILL_COLOR 0,0,190 : 2D_CIRCLE x%+r,y%+r,r 2D_PEN_COLOR 250,30,30 : 2D_FILL_COLOR 250,30,30 : 2D_CIRCLE x%+r,y%+r,(0.8 * r) 2D_PEN_COLOR 250,60,60 : 2D_FILL_COLOR 250,60,60 : 2D_CIRCLE x%+0.66*r,y%+0.66*r,r/3 2D_PEN_COLOR 255,255,255 : 2D_FILL_COLOR 255,255,255 : 2D_CIRCLE x%+0.66*r,y%+0.66*r,r/8 END_SUB | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: La surprise du jour Lun 11 Mai 2015 - 19:03 | |
| Passer en majuscules c’est plus esthétique. Voir ma version postée avant la tienne. Pour une fois, je suis plus rapide que toi : ça se fête ça! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 11 Mai 2015 - 19:07 | |
| Je vote pour un mix des deux. L' affichage de Papydall et la répétition de Jicehel... | |
| | | Contenu sponsorisé
| Sujet: Re: La surprise du jour | |
| |
| | | | La surprise du jour | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |