FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» I Love You
par papydall Aujourd'hui à 2:58

» MARK_ON déclenche un événement ON_CLICK à la place de ...
par Jean Claude Hier à 18:08

» mise a jour calculatrice
par joeeee2017 Hier à 15:57

» [solved] 3D_LINE How to ?
par Jicehel Hier à 11:01

» Convertisseur de base 10 de 2 à 36
par gigi75 Mar 17 Oct 2017 - 18:49

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» Calculatrice
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Sujet en OR

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Froggy One

avatar

Nombre de messages : 391
Date d'inscription : 06/01/2012

MessageSujet: Sujet en OR   Lun 24 Juin 2013 - 20:11

Very Happy 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 24 Juin 2013 - 21: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_if

Edit : ton dernier code a été mangé par le forum...Laughing ( les on_click à partir de 72 ) et un petit fichier d' aide
ne serait pas de trop...Twisted Evil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 391
Date d'inscription : 06/01/2012

MessageSujet: Re   Mar 25 Juin 2013 - 9:45

Merci, j'y pense, si tout va bien, j'y travaillerai ce matin et je le webdaverai ( ;)alerte correction !!!) ensuite.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
RMont



Nombre de messages : 168
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: Sujet en OR   Mar 25 Juin 2013 - 19: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 25 Juin 2013 - 19:57

C' est ce que je disais...Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Sujet en OR   Mar 25 Juin 2013 - 20: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 7994
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 25 Juin 2013 - 21: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.Twisted Evil
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5858
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Sujet en OR   Mar 25 Juin 2013 - 22:15

curieux
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 391
Date d'inscription : 06/01/2012

MessageSujet: Re   Mar 25 Juin 2013 - 23: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

' ##################################################




 Sleep Bonne soirée !!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
RMont



Nombre de messages : 168
Age : 75
Localisation : charente maritime
Date d'inscription : 29/12/2008

MessageSujet: Re: Sujet en OR   Mer 26 Juin 2013 - 19: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 ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Froggy One

avatar

Nombre de messages : 391
Date d'inscription : 06/01/2012

MessageSujet: Re   Mer 26 Juin 2013 - 20:49

Oui, j'ai compris, bon sang,  affraid 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gaeldwest.wordpress.com
Contenu sponsorisé




MessageSujet: Re: Sujet en OR   

Revenir en haut Aller en bas
 
Sujet en OR
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» pourquoi nous ne pouvons pas répondre au sujet
» Le sujet SQL
» Sujet d'examen de fin de cycle primaire 28.5.2013
» Sujet A lire
» Sujet d'examen

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les inutilitaires-
Sauter vers: