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 |
|
|
| Sujet en OR | |
| | Auteur | Message |
---|
Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Sujet en OR Lun 24 Juin 2013 - 19:11 | |
| Bonjour à tous ! le code qui suit concerne un émulateur de mots cachés. Il n'est certes pas terminé mais il fonctionne. Je le poste car les lignes 86 (entre autres) sont assez tarabiscotées. En effet j'ai dû mettre deux IF pour deux conditions activant toutes deux le même flag : si le mot dépasse de la grille à droite ou en bas, afficher un message d'erreur. J'avais auparavant essayé : - Code:
-
if (len(mot$)+xgrid-1>nbc) or (len(mot$)+ygrid-1>nbl) then message "trop long" Il me semble que la syntaxe est bonne et conforme à l'exemple de l'aide PANORAMIC : - Code:
-
if (a=1) or (a=2) then print "a vaut 1 ou 2" Mais PANORAMIC renvoie toujours un code d'erreur. J'ai donc essayé ceci (avec un flag fhgbd) : - Code:
-
verifhgbd: fghgbd=0 if len(mot$)+xgrid-1>nbc then fghgbd=1 if len(mot$)+ygrid-1>nbl then fghgbd=1 if fghgbd=1 message "trop long" else goto affichehgbd return Voici le code complet du programme. Quelqu'un aurait-il une idée ? Pourquoi cet OR ne brille-t-il pas ? D'avance merci et bonne soirée. - Code:
-
caption 0,"Grille 1.1" width 0,1000:height 0,800:color 0,206,121,30 ' on initialise label blanc,choix,direction,place,cache label verif,verifgd,verifhb,verifhgbd label affichegd,affichehb,affichehgbd dim t$,mot$ dim i,j,n,axe,xgrid,ygrid,fghgbd dim nbl,nbc,nbm:nbm=7:nbl=26:nbc=26 dim fg_occup(nbl*nbc): ' flag case occupée grid 50:grid_column 50,26:grid_row 50,26 font_name 50,"arial":font_size 50,16 grid_column_width 50,24 height 50,nbc*26:width 50,nbl*26
for i=1 to nbl for j=1 to nbc grid_write 50,i,j," " next j next i
edit 60 : left 60,695:top 60,26:width 60,275:text 60,"Entre un mot" font_name 60,"arial":font_size 60,18 button 63:left 63,800:top 63,660:caption 63,"Remplir" button 66:left 66,800:top 66,680:caption 66,"Vider" button 70:left 70,800:top 70,700:caption 70,"Imprimer" button 71:left 71,800:top 71,300:caption 71,"Quel sens ?" button 72:left 72,880:top 72,300n_click 72,direction button 73:left 73,860:top 73,330n_click 73,direction button 74:left 74,800:top 74,360n_click 74,direction button 75:left 75,740:top 75,330n_click 75,direction button 76:left 76,720:top 76,300n_click 76,direction button 77:left 77,740:top 77,270n_click 77,direction button 78:left 78,800:top 78,240n_click 78,direction button 79:left 79,860:top 79,270n_click 79,direction
on_click 60,blanc on_change 60,choix on_click 50,verif
end
blanc: text 60,"" return
choix: mot$=text$(60) return
direction: axe=number_click-71 for i=72 to 79:caption i,"":next i caption number_click,"comme ça" return
verif: if mot$="" then return ygrid=grid_y_to_row(50,mouse_y_position(50)) xgrid=grid_x_to_column(50,mouse_x_position(50)) rem caption 0,"X : "+str$(xgrid)+" et Y : "+str$(ygrid) select axe case 1:goto verifgd case 2:goto verifhgbd case 3:goto verifhb end_select return
verifgd: rem message "mot : "+str$(len(mot$))+" xgrid : "+str$(xgrid)+" comp "+str$(nbc) if len(mot$)+xgrid-1>nbc message "trop long" else goto affichegd end_if return
verifhb: if len(mot$)+ygrid-1>nbl message "trop long" else goto affichehb end_if return
verifhgbd: fghgbd=0 if len(mot$)+xgrid-1>nbc then fghgbd=1 if len(mot$)+ygrid-1>nbl then fghgbd=1 if fghgbd=1 message "trop long" else goto affichehgbd return
affichegd: for i=xgrid to xgrid+len(mot$) grid_write 50,ygrid,i,mid$(mot$,1+i-xgrid,1) next i return
affichehb: for i=ygrid to ygrid+len(mot$) grid_write 50,i,xgrid,mid$(mot$,1+i-ygrid,1) next i return
affichehgbd: for i=xgrid to xgrid+len(mot$) grid_write 50,ygrid+i-xgrid,i,mid$(mot$,1+i-xgrid,1) next i end_if return
place: return
cache: return | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 24 Juin 2013 - 20:04 | |
| Sur ta première ligne, qui doit poser problème if (len(mot$)+xgrid-1>nbc) or (len(mot$)+ygrid-1>nbl) then message "trop long"essayes :if (len(mot$)+ygrid-1)>nbl or (len(mot$)+xgrid-1)>nbc : message "trop long" : end_ifEdit : ton dernier code a été mangé par le forum... ( les on_click à partir de 72 ) et un petit fichier d' aide ne serait pas de trop... | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mar 25 Juin 2013 - 8:45 | |
| Merci, j'y pense, si tout va bien, j'y travaillerai ce matin et je le webdaverai ( ;)alerte correction !!!) ensuite. | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Sujet en OR Mar 25 Juin 2013 - 18:43 | |
| bonjour a tous. a froggy One. je constate qu'il manque les 2 points avant les on_click sur les lignes 28 a 35. est-ce le meme probleme que lors de ma derniere intervention?. c'est visible directement sur le forum. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Juin 2013 - 18:57 | |
| C' est ce que je disais... | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Sujet en OR Mar 25 Juin 2013 - 19:43 | |
| pas tout à fait ygeronimi
que l'on écrive If <Condition> then <action> ou If <Condition> : <action> : end_if
Cela revient au même
Par contre il manque bien les : pour séparer les commandes pour les bouttons 72 à 79 car ce sont des commandes totalement indépendantes | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 25 Juin 2013 - 20:27 | |
| je parlais des parties manquantes sur le post et pour la condition, ce que tu dis n' est pas vrai dans toutes les situations quelque fois si tu veux que la condition fonctionne, tu es obligé de mettre le "end_if" et pas le "then" même si il n' y a pas de "else". J' en ai fait la triste expérience. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Sujet en OR Mar 25 Juin 2013 - 21:15 | |
| | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mar 25 Juin 2013 - 22:10 | |
| Merci à tous. @Rmont : désolé, je ne comprends pas... deux points avant un ON_CLICK ? En fait, je n'ai pas vraiment changé mon code, j'essaierai plus tard cette syntaxe effectivement curieuse. Le programme fonctionne, c'est-à-dire que l'on peut cliquer pour saisir un mot (en haut à droite de la fenêtre) puis choisir une direction d'affichage (avec l'espèce de rosace de boutons en dessous), puis remplir d'autres caractères afin d'avoir une grille de mots cachés. Le problème que j'ai maintenant, c'est que si je remplis puis vide la grille, je peux à nouveau y inscrire des mots, mais je ne peux plus remplir la grille une seconde fois ! Pourtant, a priori, le ON_CLICK devrait permettre autant de clics que possible !?! Pour ceux que ça intéresserait, j'ai mis le code (un peu plus détaillé) sur le webdav (dossier Utilitaires), sinon je le copie ci-dessous : - Code:
-
caption 0,"Émulateur de mots cachés 1.0" width 0,1000:height 0,800:color 0,206,121,30 ' ################################################## ' on initialise ' ################################################## label blanc,choix,direction,vider,remplir,debut,quitter label verif,verifgd,verifhb,verifhgbd,verifdg,verifhdbg label verifbdhg,verifbh,verifbghd label affichegd,affichehb,affichehgbd,affichedg,affichehdbg label affichebdhg,affichebh,affichebghd dim t$,mot$,c$ t$="--aaaàâbbccçddeeeéêèëffgghhijkllmmnnoppqrstuuùvwxyz" dim i,j,n,axe,xgrid,ygrid dim fghgbd,fghdbg,fgbdhg,fgbghd dim nbl,nbc,nbm:nbm=7:nbl=26:nbc=26 dim fg_occup(nbl*nbc): ' flag case occupée ' ################################################## ' On affiche une grille ' ################################################## grid 50:grid_column 50,26:grid_row 50,26 font_name 50,"arial":font_size 50,16 grid_column_width 50,24 height 50,nbc*26:width 50,nbl*26
for i=1 to nbl for j=1 to nbc grid_write 50,i,j," " next j next i
' ################################################## ' On met des boutons ' ################################################## edit 60 : left 60,695:top 60,26:width 60,275:text 60,"Tape un mot" font_name 60,"arial":font_size 60,18 button 63:left 63,800:top 63,660:caption 63,"Remplir" button 66:left 66,800:top 66,680:caption 66,"Vider" button 70:left 70,800:top 70,700:caption 70,"Imprimer" button 71:left 71,800:top 71,300:caption 71,"Quel sens ?" button 72:left 72,880:top 72,300n_click 72,direction button 73:left 73,860:top 73,330n_click 73,direction button 74:left 74,800:top 74,360n_click 74,direction button 75:left 75,740:top 75,330n_click 75,direction button 76:left 76,720:top 76,300n_click 76,direction button 77:left 77,740:top 77,270n_click 77,direction button 78:left 78,800:top 78,240n_click 78,direction button 79:left 79,860:top 79,270n_click 79,direction button 80:left 80,880:top 80,680:caption 80,"FIN"n_click 80,quitter ' ################################################## ' Le programme : ' ################################################## debut: on_click 60,blanc : ' gommer l'EDIT on_change 60,choix : ' saisir un mot on_click 50,verif : ' vérifier qu'il tient dans la grille on_click 66,vider : ' on gomme toute la grille on_click 63,remplir : ' on REMPLIT la grille avec des lettres
end ' ################################################## ' Les ss-progs ' ##################################################
vider: grid_clear 50,nbl,nbc goto debut
remplir: for j=2 to nbc for i=2 to nbl if grid_read$(50,i,j)=" " c$=mid$(t$,int(1+rnd(len(t$))),1) grid_write 50,i,j,c$ end_if next i next j return
quitter: terminate
blanc: text 60,"" return
choix: mot$=text$(60) return
direction: axe=number_click-71 for i=72 to 79:caption i,"":next i caption number_click,"comme ça" return
verif: if mot$="" then return ygrid=grid_y_to_row(50,mouse_y_position(50)) xgrid=grid_x_to_column(50,mouse_x_position(50)) ' On va VÉRIFIER que le mot tient dans la grille ' On branche sur la routine en fonction du sens de l'affichage select axe case 1:goto verifgd case 2:goto verifhgbd case 3:goto verifhb case 4:goto verifhdbg case 5:goto verifdg case 6:goto verifbdhg case 7:goto verifbh case 8:goto verifbghd end_select return
' ################################################## ' ROUTINES de VÉRIFICATION ' ##################################################
verifgd: rem message "mot : "+str$(len(mot$))+" xgrid : "+str$(xgrid)+" comp "+str$(nbc) if len(mot$)+xgrid-1>nbc message "Ce mot dépasse à droite." else goto affichegd end_if return
verifhb: if len(mot$)+ygrid-1>nbl message "Le mot dépasse en bas." else goto affichehb end_if return
verifhgbd: fghgbd=0 if len(mot$)+xgrid-1>nbc then fghgbd=1 if len(mot$)+ygrid-1>nbl then fghgbd=1 if fghgbd=1 message "Ça va dépasser..." else goto affichehgbd return
verifdg: if xgrid-(1+len(mot$))<0 message "Ce mot dépasse à gauche." else goto affichedg end_if return
verifhdbg: fghdbg=0 if xgrid-(1+len(mot$))<0 then fghdbg=1 if len(mot$)+ygrid-1>nbl then fghdbg=1 if fghdbg=1 message "Ça va dépasser !" else goto affichehdbg end_if return
verifbdhg: fgbdhg=0 if xgrid-(1+len(mot$))<0 then fgbdhg=1 if ygrid-(1+len(mot$))<0 then fgbdhg=1 if fgbdhg=1 message "Ça va dépasser !" else goto affichebdhg end_if return
verifbh: if ygrid-(1+len(mot$))<0 message "Le mot dépasse en haut." else goto affichebh end_if return
verifbghd: fgbghd=0 if len(mot$)+xgrid-1>nbc then fgbghd=1 if ygrid-(1+len(mot$))<0 then fgbghd=1 if fgbghd=1 message "Ça va dépasser !" else goto affichebghd end_if return
' ################################################## ' ROUTINES d'AFFICHAGE ' ##################################################
affichegd: for i=xgrid to xgrid+len(mot$) grid_write 50,ygrid,i,mid$(mot$,1+i-xgrid,1) next i return
affichehb: for i=ygrid to ygrid+len(mot$) grid_write 50,i,xgrid,mid$(mot$,1+i-ygrid,1) next i return
affichehgbd: for i=xgrid to xgrid+len(mot$) grid_write 50,ygrid+i-xgrid,i,mid$(mot$,1+i-xgrid,1) next i end_if return
affichedg: for i=xgrid-len(mot$) to xgrid-1 grid_write 50,ygrid,1+i,mid$(mot$,1+len(mot$)-(1+i-(xgrid-len(mot$))),1) next i return
affichehdbg: for i=xgrid-len(mot$) to xgrid-1 grid_write 50,ygrid+xgrid-(i+1),1+i,mid$(mot$,1+len(mot$)-(1+i-(xgrid-len(mot$))),1) next i return
affichebdhg: for i=xgrid-len(mot$) to xgrid-1 grid_write 50,ygrid+1+i-xgrid,1+i,mid$(mot$,1+len(mot$)-(1+i-(xgrid-len(mot$))),1) next i return
affichebh: for i=xgrid-len(mot$) to xgrid-1 grid_write 50,ygrid+1+i-xgrid,xgrid,mid$(mot$,1+len(mot$)-(1+i-(xgrid-len(mot$))),1) next i return
affichebghd: for i=xgrid to xgrid+len(mot$) grid_write 50,ygrid-(i-xgrid),i,mid$(mot$,1+i-xgrid,1) next i return
' ##################################################
Bonne soirée !!! | |
| | | RMont
Nombre de messages : 233 Age : 82 Localisation : charente maritime Date d'inscription : 29/12/2008
| Sujet: Re: Sujet en OR Mer 26 Juin 2013 - 18:40 | |
| bonjour a tous. a Froggy One. en réponse sur ton post de 21h30 d'hier. ou j'ai la berlue , ou ???. ce que je voudrai te dire est visible sur le forum. sur les lignes correspondante a BUTTON 72 et suivantes jusqu'a BUTTON 80 ,regardes bien , et tu constateras qu'il manque quelque chose button 72 : left 72,880 : top 72,300n_click 72,direction apres correction button 72 : left 72,880 : top 72,300 : on_click 72,direction il manque bien les 2 points et le debut du on_click c'est a dire le o. c'est porquoi je posais la question suivante :est -ce le même probleme qu'est survenu a jl35. apres correction , j'ai rentré un mot tres long et que faut-il faire ensuite ? | |
| | | Froggy One
Nombre de messages : 598 Date d'inscription : 06/01/2012
| Sujet: Re Mer 26 Juin 2013 - 19:49 | |
| Oui, j'ai compris, bon sang, ce phénomène affecte toutes les lignes !!! Mais j'ignorais que JL35 ait connu la même mésaventure. Merci de m'en informer RMont. | |
| | | Contenu sponsorisé
| Sujet: Re: Sujet en OR | |
| |
| | | | Sujet en OR | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |