FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Form(résolu)
Sujet en OR Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
Sujet en OR Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
Sujet en OR Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Sujet en OR Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Sujet en OR Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Sujet en OR Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Sujet en OR Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Sujet en OR Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Sujet en OR Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Sujet en OR Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Sujet en OR Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Sujet en OR Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Sujet en OR Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Sujet en OR Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Sujet en OR Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-29%
Le deal à ne pas rater :
PC portable – MEDION 15,6″ FHD Intel i7 – 16 Go / 512Go (CDAV : ...
499.99 € 699.99 €
Voir le deal

 

 Sujet en OR

Aller en bas 
4 participants
AuteurMessage
Froggy One

Froggy One


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

Sujet en OR Empty
MessageSujet: Sujet en OR   Sujet en OR EmptyLun 24 Juin 2013 - 19: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
http://gaeldwest.wordpress.com
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Sujet en OR Empty
MessageSujet: re   Sujet en OR EmptyLun 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_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
Froggy One

Froggy One


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

Sujet en OR Empty
MessageSujet: Re   Sujet en OR EmptyMar 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.
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
RMont




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

Sujet en OR Empty
MessageSujet: Re: Sujet en OR   Sujet en OR EmptyMar 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.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Sujet en OR Empty
MessageSujet: re   Sujet en OR EmptyMar 25 Juin 2013 - 18:57

C' est ce que je disais...Laughing
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Sujet en OR Empty
MessageSujet: Re: Sujet en OR   Sujet en OR EmptyMar 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
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Sujet en OR Empty
MessageSujet: re   Sujet en OR EmptyMar 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.Twisted Evil
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

Sujet en OR Empty
MessageSujet: Re: Sujet en OR   Sujet en OR EmptyMar 25 Juin 2013 - 21:15

curieux
Revenir en haut Aller en bas
Froggy One

Froggy One


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

Sujet en OR Empty
MessageSujet: Re   Sujet en OR EmptyMar 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

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




 Sleep Bonne soirée !!!
Revenir en haut Aller en bas
http://gaeldwest.wordpress.com
RMont




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

Sujet en OR Empty
MessageSujet: Re: Sujet en OR   Sujet en OR EmptyMer 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 ?
Revenir en haut Aller en bas
Froggy One

Froggy One


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

Sujet en OR Empty
MessageSujet: Re   Sujet en OR EmptyMer 26 Juin 2013 - 19: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
http://gaeldwest.wordpress.com
Contenu sponsorisé





Sujet en OR Empty
MessageSujet: Re: Sujet en OR   Sujet en OR Empty

Revenir en haut Aller en bas
 
Sujet en OR
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Au sujet des DIM
» Hic !
» Motif celte coloré
» Un coup de SIN-COS
» Rotation Algorithm

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: