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 |
|
|
| Une grille en caractères graphiques | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Une grille en caractères graphiques Jeu 5 Mar 2015 - 22:13 | |
| Pour les nostalgiques du QBasic, s'il en reste, une grille en caractères graphiques comme on faisait autrefois: - Code:
-
DIM p%,a$,nc%,nr%,wc%,hr%,lh$,le$,lt$,lb$,hc%,i%,j%,x%,y%,c%,r%,xc%,yc%
nc% = 4: nr% = 5: ' nombre de colonnes, rangées wc% = 12: hr% = 1: ' largeur et hauteur d'une case (en caractères) x% = 60: y% = 40: ' coordonnées de la grille (coin supérieur gauche) p% = 1: PICTURE p%: FULL_SPACE p% Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
c% = 3: r% = 4 Gridpos(p%,x%,y%,wc%,hr%,c%,r%) FONT_NAME p%,"Arial": FONT_SIZE p%,12: PRINT_TARGET_IS p% PRINT_LOCATE xc%,yc%: PRINT "Abcdef" END
SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%) ' Création d'une grille en caractères graphiques sur l'objet p% (picture) ' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères) DIM_LOCAL i%,j%,lh$,le$,lt$,lb$ PRINT_TARGET_IS p%: FONT_NAME p%,"BatangChe": FONT_SIZE p%,12 hc% = TEXT_HEIGHT(CHR$(5),p%) a$ = STRING$(wc%,CHR$(6)) lh$ = CHR$(1) FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(22): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(2) le$ = CHR$(5) FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(5): NEXT i% lt$ = CHR$(25) FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(16): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(23) lb$ = CHR$(3) FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(21): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(4) PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc% FOR i%=1 TO nr% FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j% IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc% NEXT i% PRINT_LOCATE x%,y%: PRINT lb$ END_SUB
SUB Gridpos(p%,x%,y%,wc%,hr%,c%,r%) ' Coordonnées de la cellule c%/r% de la grille décrite (c% et r% = 1 à n), en pixels DIM_LOCAL lc%,hc% FONT_NAME p%,"BatangChe": FONT_SIZE p%,12 lc% = TEXT_WIDTH(CHR$(16),p%): hc% = TEXT_HEIGHT(CHR$(16),p%) xc% = 1+(wc%+1)*(c%-1): ' en caractères xc% = x%+xc%*lc%: ' absolu en pixels, dans p% yc% = 1+(hr%+1)*(r%-1): ' en caractères yc% = y%+yc%*hc%: ' absolu en pixels, dans p% END_SUB 6/3 ajout positionnement dans la grille
Dernière édition par JL35 le Ven 6 Mar 2015 - 11:13, édité 2 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une grille en caractères graphiques Jeu 5 Mar 2015 - 22:55 | |
| Décidément, on revient toujours à ses premières amours ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une grille en caractères graphiques Jeu 5 Mar 2015 - 23:12 | |
| Eh oui papydall, comme dit la chanson: Je vous parle d'un temps Que les moins de 20 60 ans Ne peuvent pas connaître... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 0:03 | |
| Tant que nous y sommes - Code:
-
DIM p%,a$,nc%,nr%,wc%,hr%,lh$,le$,lt$,lb$,hc%,i%,j%,x%,y% width 0,800 nc% = 4: nr% = 5: ' nombre de colonnes, rangées wc% = 12: hr% = 1: ' largeur et hauteur d'une case (en caractères) x% = 60: y% = 40: ' coordonnées de la grille (coin supérieur gauche) p% = 1: PICTURE p%: FULL_SPACE p% Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%) END
SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%) ' Création d'une grille en caractères graphiques sur l'objet p% (picture) ' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères) DIM_LOCAL i%,j%,lh$,le$,lt$,lb$ PRINT_TARGET_IS p%: FONT_NAME p%,"Terminal": FONT_SIZE p%,12 hc% = TEXT_HEIGHT(CHR$(186),p%) a$ = STRING$(wc%,CHR$(205)) lh$ = CHR$(201) FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(203): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(187) le$ = CHR$(186) FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(186): NEXT i% lt$ = CHR$(204) FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(206): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(185) lb$ = CHR$(200) FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(202): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(188) PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc% FOR i%=1 TO nr% FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j% IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc% NEXT i% PRINT_LOCATE x%,y%: PRINT lb$ END_SUB
| |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 1:12 | |
| Je m'insurge, les quarantenaire ont pu connaitre. A 12 ans je manipulais ces choses et je saisissait les page de mon mag préféré de l'époque: hebdogiciel... | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 8:03 | |
| @Jicehel, la programmation, t'es tombé dedans à la naissance ? Nous "les vieux" ont a dû attendre les premiers ordinateurs familiale ! Je ne parle pas "des ancêtres" qui jouaient avec des cartes perforées @JL35, Tu m'as fait couler une larme de nostalgie, je me suis souvenu de la fierté que j'ai eu la première fois que j'ai réussi à programmer une grille similaire. c'était dans les années 85/86. Merci pour la SUB, ça peut toujours servir. A+ | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 8:15 | |
| Mon Hector a été mon cadeau de communion, je révais d'avoir un ordi depuis au moins 3 ans ... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 10:16 | |
| Jicehel, le Mozart de l'informatique... les enfants de maintenant sont pareils, sauf qu'ils n'ont aucun mérite, ils baignent dedans en permanence. J'ai dit 60 ans, disons dans les 45/50 ans, au moins (sauf pour les surdoués de naissance... suivez mon regard). Comme tu dis Jean Claude, c'était le bon temps, on découvrait en permanence et les quelques revues étaient pleines de programmes à essayer... J'ai joué (enfin, si on peut dire) avec les cartes perforées, c'était pas de la tarte, des piles de plusieurs dizaines de centimètres pour un programme, quand tu répandais ça par terre devant le lecteur ! (j'ai même fait du télégraphe en morse, ça devait être au moyen âge, ou un peu après).
Pour la grille, on doit pouvoir faire une sub qui donne les coordonnées d'une case en fonction de colonne/rangée, pour écrire dedans. D'ailleurs, c'est fait. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 11:20 | |
| Ca combiné à quelques procédures existantes de mise en forme, ça commence à être sympa. Comme amélioration, je proposerais donc le centrage du texte, l'alignement à droite ou à gauche, centré verticalement, aligné en haut ou en bas de la cellule et le troncage du texte au nombre de caractères pouvant être affichées dans une case. Ca fait déjà un beau petit challenge, non ? (Défit à relever ou non selon vos envies, bien sûr) | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 11:44 | |
| Oui , JL35 réinvente le GRID, avec quelques avantages sur celui de Panoramic, c'est qu'on peut gérer les attributs du texte par cellule. Un exemple j'ai ajouté une petite procédure pour effacer le contenu de la cellule. - Code:
-
DIM p%,a$,nc%,nr%,wc%,hr%,lh$,le$,lt$,lb$,hc%,i%,j%,x%,y%,c%,r%,xc%,yc%,cc$
nc% = 4: nr% = 5: ' nombre de colonnes, rangées wc% = 15: hr% = 1: ' largeur et hauteur d'une case (en caractères) x% = 60: y% = 40: ' coordonnées de la grille (coin supérieur gauche) p% = 1: PICTURE p%: FULL_SPACE p% Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%)
c% = 3: r% = 4: cc$="patientez 3 Sec" Gridpos(p%,x%,y%,wc%,hr%,c%,r%) FONT_NAME p%,"Arial": FONT_SIZE p%,12: PRINT_TARGET_IS p% PRINT_LOCATE xc%,yc%: font_color p%,0,0,255 : PRINT cc$ wait 3000 GridClear(p%,xc%,yc%,wc%,hr%,c%,r%) END
SUB GridClear(p%,xx%,yx%,wc%,hr%,c%,r%) ' efface le contenu de la cellule xc%,yc% et vide la variable cc$ (cc$ pour contenu_cellule$) DIM_LOCAL lc%,hc% lc% = TEXT_WIDTH(CHR$(16),p%) cc$="" : PRINT_LOCATE xc%,yc%: PRINT string$(wc%+lc%," ") END_SUB
SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%) ' Création d'une grille en caractères graphiques sur l'objet p% (picture) ' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères) DIM_LOCAL i%,j%,lh$,le$,lt$,lb$ PRINT_TARGET_IS p%: FONT_NAME p%,"BatangChe": FONT_SIZE p%,12 hc% = TEXT_HEIGHT(CHR$(5),p%) a$ = STRING$(wc%,CHR$(6)) lh$ = CHR$(1) FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(22): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(2) le$ = CHR$(5) FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(5): NEXT i% lt$ = CHR$(25) FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(16): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(23) lb$ = CHR$(3) FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(21): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(4) PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc% FOR i%=1 TO nr% FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j% IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc% NEXT i% PRINT_LOCATE x%,y%: PRINT lb$ END_SUB
SUB Gridpos(p%,x%,y%,wc%,hr%,c%,r%) ' Coordonnées de la cellule c%/r% de la grille décrite (c% et r% = 1 à n), en pixels DIM_LOCAL lc%,hc% FONT_NAME p%,"BatangChe": FONT_SIZE p%,12 lc% = TEXT_WIDTH(CHR$(16),p%): hc% = TEXT_HEIGHT(CHR$(16),p%) xc% = 1+(wc%+1)*(c%-1): ' en caractères xc% = x%+xc%*lc%: ' absolu en pixels, dans p% yc% = 1+(hr%+1)*(r%-1): ' en caractères yc% = y%+yc%*hc%: ' absolu en pixels, dans p% END_SUB A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 12:06 | |
| J'ai changé le nom des variables pour rendre le code plus facile à lire. Bon, ça augmente la longueur des lignes, mais ça devrait éviter un télescopage de variables si on l'insère dans un autre code. - Code:
-
DIM picture_grid%,a$,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case% dim lh$,le$,lt$,lb$,hCol_Grid%,i%,j%,Left_Grid%,Top_Grid%,Col_Grid%,Rang_Grid% dim xCol_Grid%,yCol_Grid%,Contenu_cellule$
Nb_Col% = 4: Nb_Rang% = 5: ' nombre de colonnes, rangées Width_Case% = 15: Height_Case% = 1: ' largeur et hauteur d'une case (en caractères) Left_Grid% = 10: Top_Grid% = 10: ' coordonnées de la grille (coin supérieur gauche) picture_grid% = 1: PICTURE picture_grid%: FULL_SPACE picture_grid% Gridcar(picture_grid%,Left_Grid%,Top_Grid%,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%)
Col_Grid% = 3: Rang_Grid% = 4: Contenu_cellule$="patientez 3 Sec" Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%) FONT_NAME picture_grid%,"Arial": FONT_SIZE picture_grid%,12: PRINT_TARGET_IS picture_grid% PRINT_LOCATE xCol_Grid%,yCol_Grid%: font_color picture_grid%,0,0,255 : PRINT Contenu_cellule$ wait 3000 GridClear(picture_grid%,xCol_Grid%,yCol_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%) END
SUB GridClear(picture_grid%,xLeft_Grid%,yLeft_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%) ' efface le contenu de la cellule xCol_Grid%,yCol_Grid% et vide la variable Contenu_cellule$ DIM_LOCAL lCol_Grid% lCol_Grid% = TEXT_WIDTH(CHR$(16),picture_grid%) Contenu_cellule$="" : PRINT_LOCATE xCol_Grid%,yCol_Grid%: PRINT string$(Width_Case%+lCol_Grid%," ") END_SUB
SUB Gridcar(picture_grid%,Left_Grid%,Top_Grid%,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%) ' Création d'une grille en caractères graphiques sur l'objet picture_grid% (picture) ' Nb_Col% colonnes de largeur Width_Case%, Nb_Rang% rangées de hauteur Height_Case% (en caractères) DIM_LOCAL i%,j%,lh$,le$,lt$,lb$ PRINT_TARGET_IS picture_grid%: FONT_NAME picture_grid%,"BatangChe": FONT_SIZE picture_grid%,12 hCol_Grid% = TEXT_HEIGHT(CHR$(5),picture_grid%) a$ = STRING$(Width_Case%,CHR$(6)) lh$ = CHR$(1) FOR i%= 1 TO Nb_Col%: lh$ = lh$+a$+CHR$(22): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(2) le$ = CHR$(5) FOR i% = 1 TO Nb_Col%: le$=le$+STRING$(Width_Case%," ")+CHR$(5): NEXT i% lt$ = CHR$(25) FOR i% = 1 TO Nb_Col%: lt$=lt$+a$+CHR$(16): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(23) lb$ = CHR$(3) FOR i% = 1 TO Nb_Col%: lb$=lb$+a$+CHR$(21): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(4) PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT lh$: Top_Grid%=Top_Grid%+hCol_Grid% FOR i%=1 TO Nb_Rang% FOR j% = 1 TO Height_Case%: PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT le$: Top_Grid%=Top_Grid%+hCol_Grid%: NEXT j% IF i%<Nb_Rang% THEN PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT lt$: Top_Grid%=Top_Grid%+hCol_Grid% NEXT i% PRINT_LOCATE Left_Grid%,Top_Grid%: PRINT lb$ END_SUB
SUB Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%) ' Coordonnées de la cellule Col_Grid%/Rang_Grid% de la grille décrite (Col_Grid% et Rang_Grid% = 1 à n), en pixels DIM_LOCAL lCol_Grid%,hCol_Grid% FONT_NAME picture_grid%,"BatangChe": FONT_SIZE picture_grid%,12 lCol_Grid% = TEXT_WIDTH(CHR$(16),picture_grid%): hCol_Grid% = TEXT_HEIGHT(CHR$(16),picture_grid%) xCol_Grid% = 1+(Width_Case%+1)*(Col_Grid%-1): ' en caractères xCol_Grid% = Left_Grid%+xCol_Grid%*lCol_Grid%: ' absolu en pixels, dans picture_grid% yCol_Grid% = 1+(Height_Case%+1)*(Rang_Grid%-1): ' en caractères yCol_Grid% = Top_Grid%+yCol_Grid%*hCol_Grid%: ' absolu en pixels, dans picture_grid% END_SUB A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 12:23 | |
| Ouwais !! Ma grille à double ligne a passé inaperçue ! Personne ne lit entre les lignes ? | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 13:05 | |
| Ben, heu... C'est quoi le plus par rapport au code de JL35, à part avoir changé la police de caractères pour obtenir la grille double. S'il y a autre chose ça ne m'a pas frappé. Dis-nous ce qu'on a raté.
A+
PS: Si ! j'y vois un plus, l'utilisation de la grille double permet de bien isoler chaque cellule.
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 13:12 | |
| J'ai vu papydall, c'est très joli, mais ça ne change pas grand chose au principe qui était plutôt un exercice de style, avec les caractères graphiques. @Jean Claude Je ne sais pas si ça vaut le coup de poursuivre dans cette voie, il y a quand même plus simple pour maîtriser le style et la couleur dans une grille. J'ai aussi fait quelques subs qui définissent une grille à raison d'un picture par cellule avec toutes les fantaisies possibles pour les cellules: textes variés, images, etc. Mais on doit pouvoir faire plus simple avec le tout dans un seul picture, avec les mêmes possibilités. Tiens je vais regarder ça... Salut Jean Claude, on s'est croisés | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 13:32 | |
| - Code:
-
DIM picture_grid%,a$,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case% ,hc% dim lh$,le$,lt$,lb$,hCol_Grid%,i%,j%,Left_Grid%,Top_Grid%,Col_Grid%,Rang_Grid% dim xCol_Grid%,yCol_Grid%,Contenu_cellule$ width 0,1200 Nb_Col% = 4: Nb_Rang% = 8: ' nombre de colonnes, rangées Width_Case% = 23: Height_Case% = 1: ' largeur et hauteur d'une case (en caractères) Left_Grid% = 10: Top_Grid% = 10: ' coordonnées de la grille (coin supérieur gauche) picture_grid% = 1: PICTURE picture_grid%: FULL_SPACE picture_grid% Gridcar(picture_grid%,Left_Grid%,Top_Grid%,Nb_Col%,Nb_Rang%,Width_Case%,Height_Case%)
Col_Grid% = 1: Rang_Grid% = 1: Contenu_cellule$="NOM" : Au_travail() Col_Grid% = 1: Rang_Grid% = 2: Contenu_cellule$="Le Vieux" : Au_travail() Col_Grid% = 1: Rang_Grid% = 3: Contenu_cellule$="Le Nostalgique" : Au_travail() Col_Grid% = 1: Rang_Grid% = 4: Contenu_cellule$="Le Jeune" : Au_travail() Col_Grid% = 1: Rang_Grid% = 5: Contenu_cellule$="L'homme actuel" : Au_travail()
Col_Grid% = 2: Rang_Grid% = 1: Contenu_cellule$="IL REVE DE" : Au_travail() Col_Grid% = 2: Rang_Grid% = 2: Contenu_cellule$="CARTES PERFOREES" : Au_travail() Col_Grid% = 2: Rang_Grid% = 3: Contenu_cellule$="PROGRAMMER UNE GRILLE" : Au_travail() Col_Grid% = 2: Rang_Grid% = 4: Contenu_cellule$="SON CADEAU DE COMMUNION" : Au_travail() Col_Grid% = 2: Rang_Grid% = 5: Contenu_cellule$="SE CASSER LA TETE POUR PROGRAMMER UNE GRILLE EN CARACTERES GRAPHIQUES" : Au_travail() Col_Grid% = 1: Rang_Grid% = 6: Contenu_cellule$="***** ***** ***** IL Y EN A POUR TOUS LES GOUTS. MERCI PANORAMIC!!!" : Au_travail() Col_Grid% = 1: Rang_Grid% = 7: Contenu_cellule$="***** ***** ***** MEME POUR LES ADEPTES DE LA POLLUTION ***** ****** *****" : Au_travail() END rem ============================================================================
SUB Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%) ' Coordonnées de la cellule Col_Grid%/Rang_Grid% de la grille décrite (Col_Grid% et Rang_Grid% = 1 à n), en pixels DIM_LOCAL lCol_Grid%,hCol_Grid% FONT_NAME picture_grid%,"Terminal": FONT_SIZE picture_grid%,12 lCol_Grid% = TEXT_WIDTH(CHR$(16),picture_grid%): hCol_Grid% = TEXT_HEIGHT(CHR$(16),picture_grid%) xCol_Grid% = 1+(Width_Case%+1)*(Col_Grid%-1): ' en caractères xCol_Grid% = Left_Grid%+xCol_Grid%*lCol_Grid%: ' absolu en pixels, dans picture_grid% yCol_Grid% = 1+(Height_Case%+1)*(Rang_Grid%-1): ' en caractères yCol_Grid% = Top_Grid%+yCol_Grid%*hCol_Grid%: ' absolu en pixels, dans picture_grid% END_SUB
rem ============================================================================ SUB Gridcar(p%,x%,y%,nc%,nr%,wc%,hr%) ' Création d'une grille en caractères graphiques sur l'objet p% (picture) ' nc% colonnes de largeur wc%, nr% rangées de hauteur hr% (en caractères) DIM_LOCAL i%,j%,lh$,le$,lt$,lb$ PRINT_TARGET_IS p%: FONT_NAME p%,"Terminal": FONT_SIZE p%,12 hc% = TEXT_HEIGHT(CHR$(186),p%) a$ = STRING$(wc%,CHR$(205)) lh$ = CHR$(201) FOR i%= 1 TO nc%: lh$ = lh$+a$+CHR$(203): NEXT i%: lh$=LEFT$(lh$,LEN(lh$)-1)+CHR$(187) le$ = CHR$(186) FOR i% = 1 TO nc%: le$=le$+STRING$(wc%," ")+CHR$(186): NEXT i% lt$ = CHR$(204) FOR i% = 1 TO nc%: lt$=lt$+a$+CHR$(206): NEXT i%: lt$=LEFT$(lt$,LEN(lt$)-1)+CHR$(185) lb$ = CHR$(200) FOR i% = 1 TO nc%: lb$=lb$+a$+CHR$(202): NEXT i%: lb$=LEFT$(lb$,LEN(lb$)-1)+CHR$(188) PRINT_LOCATE x%,y%: PRINT lh$: y%=y%+hc% FOR i%=1 TO nr% FOR j% = 1 TO hr%: PRINT_LOCATE x%,y%: PRINT le$: y%=y%+hc%: NEXT j% IF i%<nr% THEN PRINT_LOCATE x%,y%: PRINT lt$: y%=y%+hc% NEXT i% PRINT_LOCATE x%,y%: PRINT lb$ END_SUB rem ============================================================================ SUB Au_travail() Gridpos(picture_grid%,Left_Grid%,Top_Grid%,Width_Case%,Height_Case%,Col_Grid%,Rang_Grid%) FONT_NAME picture_grid%,"Terminal": FONT_SIZE picture_grid%,12: PRINT_TARGET_IS picture_grid% PRINT_LOCATE xCol_Grid%,yCol_Grid%: font_color picture_grid%,0,0,255 : PRINT Contenu_cellule$ END_SUB rem ============================================================================
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 14:09 | |
| En bien plus facile à maîtriser, avec un picture/grille (plus de caractères spéciaux, tout est graphique): - Code:
-
LABEL Afcl DIM pg%,x%,y%,nc%,nr%,wc%,hr%,c%,r%,tx$
pg% = 1 wc% = 90: hr% = 35 nc% = 5: nr% = 5 x% = 50: y% = 30 GridPict(pg%,x%,y%,nc%,nr%,wc%,hr%) c% = 4: r% = 4 GridPictxy(pg%,wc%,hr%,c%,r%) 2D_PEN_COLOR 255,255,0: ' 2D_FILL_COLOR 255,255,0 2D_RECTANGLE x%,y%,x%+wc%-1,y%+hr%-1: ' fond jaune FONT_NAME pg%,"Arial": FONT_SIZE pg%,12 GridPictEcr(pg%,wc%,hr%,c%,r%,"Ma bibliothèque",0,1,1): ' centré H et V, tronqué 2D_FILL_COLOR 255,255,255 FONT_NAME pg%,"Bookdings": FONT_SIZE pg%,24 GridPictEcr(pg%,wc%,hr%,3,4," "+CHR$(35),0,0,0) GridPictEcr(pg%,wc%,hr%,2,2,CHR$(66),0,0,0) ON_CLICK pg%,Afcl END ' ============================================================================== Afcl: GridPictClic(pg%,wc%,hr%) MESSAGE "Rangée= "+STR$(r%)+", Colonne= "+STR$(c%) RETURN ' ============================================================================== SUB GridPict(pg%,x%,y%,nc%,nr%,wc%,hr%) ' Création d'un picture/grille npg% en x%,y%, nc%/nr% colonnes/rangées, ' wc%,hr% dimensions cellules largeur/hauteur (pixels) DIM_LOCAL i% PICTURE pg%: TOP pg%,y%: LEFT pg%,x%: WIDTH pg%,nc%*wc%+1: HEIGHT pg%,nr%*hr%+1 2D_TARGET_IS pg% FOR i% = 0 TO WIDTH(pg%) STEP wc% 2D_LINE i%,0,i%,HEIGHT(pg%) NEXT i% FOR i% = 0 TO HEIGHT(pg%) STEP hr% 2D_LINE 0,i%,WIDTH(pg%),i% NEXT i% END_SUB ' ============================================================================== SUB GridPictxy(pg%,wc%,hr%,c%,r%) ' Coordonnées de la cellule colonne c%, rangée r% -> x%,y% (picture/grille pg%) x% = (c%-1)*wc%+1 y% = (r%-1)*hr%+1 END_SUB ' ============================================================================== SUB GridPictEcr(pg%,wc%,hr%,c%,r%,tx$,ah%,av%,trnc%) ' Ecriture texte tx$ dans la cellule c%,r% de la picture/grille pg% ' (attributs courants): ah%,av% = alignement horizontal et vertical ' (0 gauche ou haut, 1 centre, 2 droite ou bas) ' trnc% = 1: troncature du texte pour ne pas dépasser la cellule DIM_LOCAL x%,y%,wt%,ht% x% = (c%-1)*wc%+3 y% = (r%-1)*hr%+1 wt% = TEXT_WIDTH(tx$,pg%): ht% = TEXT_HEIGHT(tx$,pg%) PRINT_TARGET_IS pg% IF trnc%=1 WHILE wt%>=wc%: tx$=LEFT$(tx$,LEN(tx$)-1): wt% = TEXT_WIDTH(tx$,pg%): END_WHILE END_IF IF ah% > 0 SELECT ah% CASE 1: WHILE wt%<wc%: tx$=" "+tx$+" ": wt% = TEXT_WIDTH(tx$,pg%): END_WHILE CASE 2: WHILE wt%<wc%: tx$=" "+tx$: wt% = TEXT_WIDTH(tx$,pg%): END_WHILE END_SELECT tx$ = RIGHT_POS$(tx$,2) END_IF IF av% > 0 SELECT av% CASE 1: y% = y%+(hr%-ht%)/2 CASE 2: y% = y%+ hr%-ht%-1 END_SELECT END_IF PRINT_LOCATE x%,y%: PRINT RTRIM$(tx$) END_SUB ' ============================================================================== SUB GridPictClic(pg%,wc%,hr%) ' Clic souris dans la grille -> rangée / colonne dans r%, c% DIM_LOCAL x%,y% x% = MOUSE_X_LEFT_DOWN(pg%): y% = MOUSE_Y_LEFT_DOWN(pg%) c% = 1+INT(x%/wc%): r% = 1+INT(y%/hr%) END_SUB ' ============================================================================== Très facile à améliorer, et on peut mettre ce qu'on veut dans les cases (y compris des images, ici ce sont des caractères spéciaux de la police Bookdings): PS j'ai ajouté l'alignement du texte dans les cellules (gauche, droite, centré, horizontal et vertical). + la troncature (éventuelle) si ça dépasse, plus la conversion clic souris -> rangée, colonne
Dernière édition par JL35 le Ven 6 Mar 2015 - 16:35, édité 1 fois | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 15:29 | |
| Ca a été vite. Le petit défit qui te reste maintenant c'est le paramètre d'écriture dans une cellule pour que ça tronque ou non les caractères qui "débordent" de la cellule. Après, il y a la sélection d'une case quand on clique sur le picture, mais c'est mathématiquement simple avec les coordonnées du clic et la taille des cellules. Mais bon j'arrète là, je ne sais pas si vous vouliez aller si loin avec cet objet. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 15:49 | |
| Tout ça est assez facile à faire, ça ne correspond plus (même si c'est voisin, et beaucoup plus pratique à manipuler) au titre du topic: grille en caractères graphiques. Mais bon... Au départ, c'est parti du fait que j'étais tout content d'avoir trouvé une police fixe (BatangChe) contenant tous les caractères pour faire une grille. En fait presque toutes les polices contiennent ces caractères, au même endroit (c'est surtout intéressant en fixe), SAUF le caractère 'coin supérieur gauche' code 01 qui ne figure pas dans la plupart, va savoir pourquoi. Seulement dans BatangChe et Terminal comme l'a fait remarquer papydall (dans Terminal ils sont plus loin dans les codes, et il y a les doubles, et leur emplacement est identique à l'emplacement dans les polices QBasic de l'époque: j'ai gardé mes aide-mémoire. Jean Claude, si tu as gardé tes programmes de ce temps-là ). Fastoche Jicehel: troncature ou non, conversion clic en rangée/colonne, c'est fait. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 17:38 | |
| Tel quel, ce programme peut être utile.
@JL35, J'ai tout mes programmes en QB, mais aujourd’hui ils n'offrent plus d'intérêts car la plupart sont disponibles en Panoramic (Surtout depuis l'arrivée des SUB). De plus il sont sur disquette, et il y bien longtemps que j'ai branché le lecteur.
A+ | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Une grille en caractères graphiques Ven 6 Mar 2015 - 18:12 | |
| Les miens sont depuis longtemps aux oubliettes, même ceux en FreeBasic dont j'ai fait pas mal, mais Panoramic c'est quand même autre chose, notamment visuellement, et avec la gestion des événements... J'ai encore les disquettes, et sans doute quelques cassettes de mon TRS-80 (super bécane... pour l'époque !) | |
| | | Contenu sponsorisé
| Sujet: Re: Une grille en caractères graphiques | |
| |
| | | | Une grille en caractères graphiques | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |