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
» PANORAMIC V 1
Jeu Puzzle Emptypar Klaus Aujourd'hui à 9:53

» Je teste PANORAMIC V 1 beta 1
Jeu Puzzle Emptypar Klaus Aujourd'hui à 9:52

» bouton dans autre form que 0
Jeu Puzzle Emptypar leclode Hier à 13:59

» KGF_dll - nouvelles versions
Jeu Puzzle Emptypar Klaus Hier à 11:41

» Gestion d'un système client-serveur.
Jeu Puzzle Emptypar Klaus Hier à 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Jeu Puzzle Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Jeu Puzzle Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
Jeu Puzzle Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Jeu Puzzle Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Jeu Puzzle Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Jeu Puzzle Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Jeu Puzzle Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Jeu Puzzle Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Jeu Puzzle Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Jeu Puzzle Emptypar jjn4 Lun 22 Avr 2024 - 13:43

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

 

 Jeu Puzzle

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Yannick




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

Jeu Puzzle Empty
MessageSujet: Jeu Puzzle   Jeu Puzzle EmptyVen 3 Aoû 2012 - 13:52

Voilà voilà,

j'ai remis ici le sujet sur le de puzzle...
Pour rappel, ce jeu est mon défi panoramic depuis que j'ai commencé avec ce langage.
Il existe déjà en divers langage mais de trop petite taille à mon goût et je voulais le réaliser
moi même avec panoramic.

Il est encore en cours de programmation et d'autres fonctions risquent de ce greffer dessus
certaines sont en cours d'autres attendent patiemment dans mon petit cerveau... Laughing

je vous livre le code actuel du *.bas
Code:
' ******************************************************************************
dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$
dim Langue$,def$(100),jeu%
dim M%
dim N%,T%,L%,T1%,L1%
dim x%,x$,joueur$
dim img%,img$,Doss_img_select$,view$
dim mess%
dim Table%(4,4),R%,C%,a%,b%,z%,cpte%,i%,gagne%,G%,H%,VS$,sep%
dim heure%,minute%,secd%,Tps%,heure$,minute$,secd$,Chrono$,Donnee$
' ------------------------------------------------------------------------------
label Init,Init_Dossier,Init_List,Init_Param,Init_Langue,Init_Bdd
label Change_Langue,New_Langue
label Menu,Jouer,Arreter,APp,Aide
label Select_Joueur,choix_joueur,Ajout_Joueur,Valid_Joueur
label Select_Img,Preview,Choix,Creation,Placement,Verif,Selection
label Action_G,Action_D,Action_H,Action_B
label Create_Solution,Verif_Solution,Chrono,Close_Jeu,Continu_Jeu
label Visu_Score,Remp_Grid,Quit_Score
label Quitter
' ******************************************************************************
caption 0,"Mon Puzzle":width 0,516:height 0,558:color 0,240,240,150
top 0,(screen_y-558)/2:left 0,(screen_x-516)/2
font_name 0,"Times new roman":font_size 0,10
main_menu 1
 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer"
 sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue"
 sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos"
 sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
 sub_menu 801:parent 801,1:on_click 801,Visu_Score
 sub_menu 800:parent 800,1
 Chrono$="00 : 00 : 00"
 caption 800,Chrono$
 inactive 5
 button 802:top 802,470:left 802,420:cursor_point 802:on_click 802,Quitter
dlist 6 :' Liste des peramètres
dlist 7 :' Liste des langues dispo
dlist 8 :' Contenu de la langue choisie
dlist 9 :' Liste des Images
dlist 400 :' Solution
dlist 402 :' Liste des scores
timer 401:timer_off 401
gosub Init
end
' ******************************************************************************
Init:
  gosub Init_Dossier
  gosub Init_List
  gosub Init_Param
  gosub Init_Bdd
  gosub Create_Solution
return
' ------------------------------------------------------------------------------
Init_Dossier:
  Dossier$=Dir_Current$
  Doss_Sprite$=Dossier$+"\Sprites"
  Doss_Fond$=Dossier$+"\Fonds"
  Doss_Langue$=Dossier$+"\Langue"
return
' ------------------------------------------------------------------------------
Init_List:
  ' langues disponibles
  dir_change Doss_Langue$
  x$=file_find_first$
  if x$<>"_" then item_add 7,x$
  x$=file_find_next$
  while x$<>"_"
      if x$<>"_" then item_add 7,x$
      x$=file_find_next$
  end_while
  file_find_close
  ' liste des images
  dir_change Doss_Fond$
  x$=file_find_first$
  if x$<>"_" then item_add 9,x$
  x$=file_find_next$
  while x$<>"_"
      if x$<>"_" then item_add 9,x$
      x$=file_find_next$
  end_while
  file_find_close
return
' ------------------------------------------------------------------------------
Init_Param:
  if file_exists(Dossier$+"\Param.inf")=1
      file_load 6,Dossier$+"\Param.inf"
      gosub Init_Langue
  else
      gosub Change_Langue
  end_if
return
' ------------------------------------------------------------------------------
Init_Langue:
  clear 8
  if count(6)>0
      Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt"
      file_load 8,Langue$
      for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x%
      for x%=2 to 5:caption x%,def$(x%-1):next x%
      caption 801,def$(9)
      caption 802,def$(19)
      if jeu%=1 then caption 2,def$(5)
  end_if
return
' ------------------------------------------------------------------------------
Change_Langue:
  if object_exists(100)=1
      show 100
  else
      form 100
      width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2
      caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10
      command_target_is 100
      alpha 101:top 101,10:left 101,10:caption 101,"Langue :"
      combo 102:top 102,30:left 102,10
      for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x%
      on_change 102,New_Langue
  end_if
return
'-------------------------------------------------------------------------------
New_Langue:
  If count(6)>0 and Text$(102)<>""
      item_delete 6,1
      item_insert 6,1,Text$(102)
  else
      if Text$(102)<>"" then item_insert 6,1,Text$(102)
  end_if
  file_save 6,Dossier$+"\Param.inf"
  gosub Init_Langue
  hide 100
return
'-------------------------------------------------------------------------------
Init_Bdd:
  if file_exists(Dossier$+"\Score.Bdd")=1
      file_load 402,Dossier$+"\Score.Bdd"
  end_if
return
' ------------------------------------------------------------------------------
Menu:
  for x%=2 to 5
      if clicked(x%)=1 then M%=x%
  next x%
  select M%
  case 2
      jeu%=jeu%+1
      if jeu%=1
        caption 2,def$(5)
        gosub Jouer
      else
        jeu%=0
        caption 2,def$(1)
        gagne%=0
        gosub Arreter
      end_if
  case 3
      gosub Change_Langue
  case 4
      gosub APp
  case 5
      gosub Aide
  end_select
return
' ------------------------------------------------------------------------------
Jouer:
  gosub Select_Joueur
return
' ------------------------------------------------------------------------------
Select_Joueur:
  Joueur$="Joueur inconnu"
  if object_exists(500)=1
      show 500
  else
      form 500:width 500,360:height 500,205:top 500,(screen_y-205)/2:left 500,(screen_x-360)/2
      caption 500,def$(10):font_name 500,"Times new roman":font_size 500,10
      command_target_is 500
      list 501:height 501,160:sort_on 501
      if file_exists(Dossier$+"\Joueur.Bdd")=1 then file_load 501,Dossier$+"\Joueur.Bdd"
      cursor_point 501:hint 501,def$(11):on_click 501,choix_joueur
      edit 502:text 502,"":top 502,20:left 502,140
      button 503:top 503,20:left 503,265:width 503,20:height 503,20:caption 503,"..."
      cursor_point 503:on_click 503,Ajout_Joueur:hint 503,def$(12)
      button 504:top 504,140:left 504,265:caption 504,def$(8)
      cursor_point 504:on_click 504,Valid_Joueur
  end_if
return
' ------------------------------------------------------------------------------
Choix_Joueur:
  text 502,item_index$(501)
return
' ------------------------------------------------------------------------------
Ajout_Joueur:
  a%=0
  if text$(502)<>""
      for x%=1 to count(501)
        if text$(502)=item_read$(501,x%) then a%=a%+1
      next x%
  end_if
  if a%=0
      item_add 501,text$(502)
      file_save 501,Dossier$+"\Joueur.Bdd"
  end_if
return
' ------------------------------------------------------------------------------
Valid_Joueur:
 if text$(502)<>"" then  Joueur$=text$(502)
 hide 500
 gosub Select_img
return
' ------------------------------------------------------------------------------
Select_img:
  if object_exists(200)=1
      show 200
  else
      form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2
      caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10
      command_target_is 200
      alpha 201:top 201,10:left 201,5:caption 201,def$(7)
      list 202 :top 202,30:left 202,5:width 202,170:height 202,230:cursor_point 202
      for x%=1 to count(9):item_add 202,item_read$(9,x%):next x%
      on_click 202,Preview
      picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203
      button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204
      inactive 204:on_click 204,Choix
  end_if
return
' ------------------------------------------------------------------------------
Preview:
  view$=Doss_Fond$+"\"+item_index$(202)
  file_load 203,view$
  active 204
return
' ------------------------------------------------------------------------------
Choix:
  img$=item_index$(202)
  Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4)
  hide 200
  command_target_is 0
  inactive 802
  hide 802
  gosub Creation
return
' ------------------------------------------------------------------------------
Creation:
  for x%=1 to 24
      img%=10+x%
      picture img%
      width img%,100 :height img%,100:cursor_point img%
      stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp"
      on_click img%,Selection
  next x%
  gosub Placement
  Tps%=0
  timer_on 401
  on_timer 401,Chrono
  active 5
return
' ------------------------------------------------------------------------------
Placement:
  Table%(4,4)=1
  for img%=11 to 34
      repeat
        R%=int(rnd(5))
        C%=int(rnd(5))
      until Table%(R%,C%)=0
      Table%(R%,C%)=img%
      left img%,R%*100
      top img%,C%*100
  next img%
  Table%(4,4)=0
return
' ------------------------------------------------------------------------------
Selection:
  for x%=1 to 24:off_click x%+10:next x%
  N%=number_click
  T%=Top(N%)
  L%=Left(N%)
  gosub Verif
  gosub Verif_Solution
return
' ------------------------------------------------------------------------------
Verif:
  T1%=T%/100
  L1%=L%/100
  ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2
  if L1%>0
      if Table%(L1%-1,T1%)=0
        gosub Action_G
        Table%(L1%-1,T1%)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4
  if L1%<4
      if Table%(L1%+1,T1%)=0
        gosub Action_D
        Table%(L1%+1,T1%)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2
  if T1%>0
      if Table%(L1%,T1%-1)=0
        gosub Action_H
        Table%(L1%,T1%-1)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4
  if T1%<4
      if Table%(L1%,T1%+1)=0
        gosub Action_B
        Table%(L1%,T1%+1)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  for x%=1 to 24:on_click x%+10,Selection :next x%
return
' ------------------------------------------------------------------------------
Action_G:
  if L%>=100
      for x%=L% to L%-100 step -5:top N%,T% :left N%,x% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_D:
  if L%<400
      for x%=L% to L%+100 step 5:top N%,T% :left N%,x% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_H:
  if T%>=100
      for x%=T% to T%-100 step -5:top N%,x% :left N%,L% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_B:
  if T%<400
      for x%=T% to T%+100 step 5:top N%,x% :left N%,L% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Arreter:
  Timer_off 401
  if gagne%=0
      if message_confirmation_yes_no("Etes vous sûr de vouloir abandonner ?")=1
        gosub Close_Jeu
      else
        gosub continu_Jeu
      end_if
  else
      if gagne%=1
        message "Bravo !!!"+chr$(13)+"Vous avez résolu le puzzle en :"+chr$(13)+Chrono$
        item_add 402,Date$+";"+Time$+";"+Joueur$+";"+view$+";"+Chrono$
        file_save 402,Dossier$+"\Score.Bdd"
        gosub Close_Jeu
      end_if
  end_if
return
' ------------------------------------------------------------------------------
Close_Jeu:
  for img%=11 to 34 : delete img% : next img%
  for R%=0 to 4: for C%=0 to 4 : Table%(R%,C%)=0 : next C%: next R%
  Tps%=0
  Chrono$="00 : 00 : 00"
  caption 800,Chrono$
  show 802
  active 802
return
' ------------------------------------------------------------------------------
Continu_Jeu:
  jeu%=1
  caption 2,def$(5)
  Timer_on 401
return
' ------------------------------------------------------------------------------
APp:
return
' ------------------------------------------------------------------------------
Aide:
  if object_exists(300)=1
      show 300
  else
      form 300:height 300,328:width 300,306:caption 300,def$(4)
      top 300,top(0):left 300,left(0)+520
      command_target_is 300
      picture 301:height 301,290:width 301,290:file_load 301,view$
  end_if
  pause 5000
  hide 300
return
' ------------------------------------------------------------------------------
Create_Solution:
  H%=-100
  repeat
      G%=-100
      H%=H%+100
      for x%=1 to 5
        G%=G%+100
        item_add 400,str$(G%)+"|"+str$(H%)
      next x%
  until H%=400
return
' ------------------------------------------------------------------------------
Verif_Solution:
  cpte%=0
  for x%=11 to 34
  VS$=item_read$(400,x%-10)
  sep%=instr(VS$,"|")
  G%=val(left$(VS$,sep%-1))
  H%=val(right$(VS$,len(VS$)-sep%))
      if top(x%)=H% and left(x%)=G%
        cpte%=cpte%+1
      end_if
  next x%
  if cpte%=24
      gagne%=1
      gosub arreter
  end_if
return
' ------------------------------------------------------------------------------
Chrono:
  Tps%=Tps%+1
  heure%=int(Tps%/3600)
  minute%=int(Tps%/60)-(heure%*60)
  secd%=Tps% -((heure%*3600)+(minute%*60))
    if len(str$(heure%))<2
    heure$="0"+str$(heure%)
  else
    heure$=str$(heure%)
  end_if
  if len(str$(minute%))<2
    minute$="0"+str$(minute%)
  else
    minute$=str$(minute%)
  end_if
  if len(str$(secd%))<2
    secd$="0"+str$(secd%)
  else
    secd$=str$(secd%)
  end_if
  Chrono$=heure$+" : "+minute$+" : "+secd$
  caption 800,Chrono$
return
' ------------------------------------------------------------------------------
Visu_Score:
  if object_exists(600)=1
    show 600
    caption 600,def$(9):caption 602,def$(13)
    for x%=1 to 5:grid_write 601,1,x% ,def$(x%+13):next x%
  else
    form 600:width 600,425:height 600,210:caption 600,def$(9)
    font_name 600,"Times new roman":font_size 600,10
    command_target_is 600
    grid 601:top 601,15:left 601,5:width 601,398
    grid_column 601,5:grid_row 601,2:grid_row_height 601,20
    grid_one_column_width 601,3,80
    grid_one_column_width 601,4,100
    for x%=1 to 5:grid_write 601,1,x% ,def$(x%+13):next x%
    button 602:top 602,140:left 602,327:caption 602,def$(13):cursor_point 602
    on_click 602,Quit_Score
  end_if
  gosub Remp_Grid
return
' ------------------------------------------------------------------------------
Remp_Grid:
  if count(402)>0
      grid_row 601,count(402)+2
      for x%=1 to count(402)
        Donnee$=item_read$(402,x%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,1,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,2,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,3,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,4,file_extract_name$(left$(Donnee$,sep%-1))
        grid_write 601,x%+1,5,right$(Donnee$,len(Donnee$)-sep%)
      next x%
  end_if
return
' ------------------------------------------------------------------------------
Quit_Score:
  Hide 600
return
' ------------------------------------------------------------------------------
Quitter:
terminate

le dossier complet est disponible sur mon webdav :

http://www.mydrive.ch/

Login : panoramicien@ygeronimi_panoramic
MdP : panoramic123
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyVen 3 Aoû 2012 - 14:14

Super comme jeu, mais très difficile

Pour le moment je n'ai pas réussi a reconstruire le cheval (pauvre bête), mais je n'ai pas eu de bug....

bravo, A+
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyVen 3 Aoû 2012 - 14:48

@ Jean Claude

dans le dernier Zip tu as une image avec des chiffres,
c'est moins usant pour les yeux... Laughing
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: évolution   Jeu Puzzle EmptyVen 3 Aoû 2012 - 21:39

Une petite évolution dans le menu score,

un double click sur l'entête de colonne "Joueur" et hop le tri se fait... Laughing

Code:
' ******************************************************************************
dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$
dim Langue$,def$(100),jeu%
dim M%
dim N%,T%,L%,T1%,L1%
dim x%,x$,joueur$
dim img%,img$,Doss_img_select$,view$
dim mess%
dim Table%(4,4),R%,C%,a%,b%,z%,cpte%,i%,gagne%,G%,H%,VS$,sep%
dim heure%,minute%,secd%,Tps%,heure$,minute$,secd$,Chrono$,Donnee$,Donnee%
dim hnd%,mode%,res%,res2%,hnd2%
dim pos_x%,pos_y%,lign_sel%,col_sel%
dim Nom$,List_Nom$(100),Num%,Tri$(5),v$(3),v%(3),v_record%,v_ligne%,z1%,v_record_Lign%
' ------------------------------------------------------------------------------
label Init,Init_Dossier,Init_List,Init_Param,Init_Langue,Init_Bdd
label Change_Langue,New_Langue
label Menu,Jouer,Arreter,APp,Aide
label Select_Joueur,choix_joueur,Ajout_Joueur,Valid_Joueur
label Select_Img,Preview,Choix,Creation,Placement,Verif,Selection
label Action_G,Action_D,Action_H,Action_B
label Create_Solution,Verif_Solution,Chrono,Close_Jeu,Continu_Jeu
label Visu_Score,Remp_Grid,Quit_Score
label Selection_Cellule,Tri_Grid_Joueur,Tri_Grid_Record,Tri_Grid_Image,Remp_Grid2
label Quitter
' ******************************************************************************
caption 0,"Mon Puzzle":width 0,516:height 0,558:color 0,240,240,150
top 0,(screen_y-558)/2:left 0,(screen_x-516)/2
font_name 0,"Times new roman":font_size 0,10
main_menu 1
 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer"
 sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue"
 sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos"
 sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
 sub_menu 801:parent 801,1:on_click 801,Visu_Score
 sub_menu 800:parent 800,1
 Chrono$="00 : 00 : 00"
 caption 800,Chrono$
 inactive 5
 button 802:top 802,470:left 802,420:cursor_point 802:on_click 802,Quitter
dlist 6 :' Liste des peramètres
dlist 7 :' Liste des langues dispo
dlist 8 :' Contenu de la langue choisie
dlist 9 :' Liste des Images
dlist 400 :' Solution
dlist 402 :' Liste des scores
dlist 403 :' liste temporaire pour les tris
dlist 404 :' liste temporaire pour les tris
timer 401:timer_off 401
gosub Init
end
' ******************************************************************************
Init:
  gosub Init_Dossier
  gosub Init_List
  gosub Init_Param
  gosub Init_Bdd
  gosub Create_Solution
return
' ------------------------------------------------------------------------------
Init_Dossier:
  Dossier$=Dir_Current$
  Doss_Sprite$=Dossier$+"\Sprites"
  Doss_Fond$=Dossier$+"\Fonds"
  Doss_Langue$=Dossier$+"\Langue"
return
' ------------------------------------------------------------------------------
Init_List:
  ' langues disponibles
  dir_change Doss_Langue$
  x$=file_find_first$
  if x$<>"_" then item_add 7,x$
  x$=file_find_next$
  while x$<>"_"
      if x$<>"_" then item_add 7,x$
      x$=file_find_next$
  end_while
  file_find_close
  ' liste des images
  dir_change Doss_Fond$
  x$=file_find_first$
  if x$<>"_" then item_add 9,x$
  x$=file_find_next$
  while x$<>"_"
      if x$<>"_" then item_add 9,x$
      x$=file_find_next$
  end_while
  file_find_close
return
' ------------------------------------------------------------------------------
Init_Param:
  if file_exists(Dossier$+"\Param.inf")=1
      file_load 6,Dossier$+"\Param.inf"
      gosub Init_Langue
  else
      gosub Change_Langue
  end_if
return
' ------------------------------------------------------------------------------
Init_Langue:
  clear 8
  if count(6)>0
      Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt"
      file_load 8,Langue$
      for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x%
      for x%=2 to 5:caption x%,def$(x%-1):next x%
      caption 801,def$(9)
      caption 802,def$(19)
      if jeu%=1 then caption 2,def$(5)
  end_if
return
' ------------------------------------------------------------------------------
Change_Langue:
  if object_exists(100)=1
      show 100
  else
      form 100
      width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2
      caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10
      command_target_is 100
      alpha 101:top 101,10:left 101,10:caption 101,"Langue :"
      combo 102:top 102,30:left 102,10
      for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x%
      on_change 102,New_Langue
  end_if
return
'-------------------------------------------------------------------------------
New_Langue:
  If count(6)>0 and Text$(102)<>""
      item_delete 6,1
      item_insert 6,1,Text$(102)
  else
      if Text$(102)<>"" then item_insert 6,1,Text$(102)
  end_if
  file_save 6,Dossier$+"\Param.inf"
  gosub Init_Langue
  hide 100
return
'-------------------------------------------------------------------------------
Init_Bdd:
  if file_exists(Dossier$+"\Score.Bdd")=1
      file_load 402,Dossier$+"\Score.Bdd"
  end_if
return
' ------------------------------------------------------------------------------
Menu:
  for x%=2 to 5
      if clicked(x%)=1 then M%=x%
  next x%
  select M%
  case 2
      jeu%=jeu%+1
      if jeu%=1
        caption 2,def$(5)
        gosub Jouer
      else
        jeu%=0
        caption 2,def$(1)
        gagne%=0
        gosub Arreter
      end_if
  case 3
      gosub Change_Langue
  case 4
      gosub APp
  case 5
      gosub Aide
  end_select
return
' ------------------------------------------------------------------------------
Jouer:
  gosub Select_Joueur
return
' ------------------------------------------------------------------------------
Select_Joueur:
  dll_on Dossier$+"\form.dll"
  Joueur$="Joueur inconnu"
  if object_exists(500)=1
      show 500
  else
      form 500:width 500,360:height 500,205:top 500,(screen_y-205)/2:left 500,(screen_x-360)/2
      caption 500,def$(10):font_name 500,"Times new roman":font_size 500,10:border_small 500
      command_target_is 500
      hnd%=handle(500)
      Mode%=0
      res%=dll_call2("SetCaption",hnd%,mode%)
      list 501:height 501,160:sort_on 501
      if file_exists(Dossier$+"\Joueur.Bdd")=1 then file_load 501,Dossier$+"\Joueur.Bdd"
      cursor_point 501:hint 501,def$(11):on_click 501,choix_joueur
      edit 502:text 502,"":top 502,20:left 502,140
      button 503:top 503,20:left 503,265:width 503,20:height 503,20:caption 503,"..."
      cursor_point 503:on_click 503,Ajout_Joueur:hint 503,def$(12)
      button 504:top 504,140:left 504,265:caption 504,def$(8)
      cursor_point 504:on_click 504,Valid_Joueur
  end_if
return
' ------------------------------------------------------------------------------
Choix_Joueur:
  text 502,item_index$(501)
return
' ------------------------------------------------------------------------------
Ajout_Joueur:
  a%=0
  if text$(502)<>""
      for x%=1 to count(501)
        if text$(502)=item_read$(501,x%) then a%=a%+1
      next x%
  end_if
  if a%=0
      item_add 501,text$(502)
      file_save 501,Dossier$+"\Joueur.Bdd"
  end_if
return
' ------------------------------------------------------------------------------
Valid_Joueur:
 if text$(502)<>"" then  Joueur$=text$(502)
 dll_off
 hide 500
 gosub Select_img
return
' ------------------------------------------------------------------------------
Select_img:
  dll_on Dossier$+"\form.dll"
  if object_exists(200)=1
      show 200
  else
      form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2
      caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10:border_small 200
      command_target_is 200
      hnd2%=handle(200)
      res2%=dll_call2("SetCaption",hnd2%,0)
      alpha 201:top 201,10:left 201,5:caption 201,def$(7)
      list 202 :top 202,30:left 202,5:width 202,170:height 202,230:cursor_point 202
      for x%=1 to count(9):item_add 202,item_read$(9,x%):next x%
      on_click 202,Preview
      picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203
      button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204
      inactive 204:on_click 204,Choix
  end_if
return
' ------------------------------------------------------------------------------
Preview:
  view$=Doss_Fond$+"\"+item_index$(202)
  file_load 203,view$
  active 204
return
' ------------------------------------------------------------------------------
Choix:
  img$=item_index$(202)
  Doss_img_select$=Doss_Sprite$+"\"+left$(img$,len(img$)-4)
  dll_off
  hide 200
  command_target_is 0
  inactive 802
  hide 802
  gosub Creation
return
' ------------------------------------------------------------------------------
Creation:
  for x%=1 to 24
      img%=10+x%
      picture img%
      width img%,100 :height img%,100:cursor_point img%
      stretch_on img% :file_load img%,Doss_img_select$+"\"+str$(img%)+".bmp"
      on_click img%,Selection
  next x%
  gosub Placement
  Tps%=0
  timer_on 401
  on_timer 401,Chrono
  active 5
return
' ------------------------------------------------------------------------------
Placement:
  Table%(4,4)=1
  for img%=11 to 34
      repeat
        R%=int(rnd(5))
        C%=int(rnd(5))
      until Table%(R%,C%)=0
      Table%(R%,C%)=img%
      left img%,R%*100
      top img%,C%*100
  next img%
  Table%(4,4)=0
return
' ------------------------------------------------------------------------------
Selection:
  for x%=1 to 24:off_click x%+10:next x%
  N%=number_click
  T%=Top(N%)
  L%=Left(N%)
  gosub Verif
  gosub Verif_Solution
return
' ------------------------------------------------------------------------------
Verif:
  T1%=T%/100
  L1%=L%/100
  ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2
  if L1%>0
      if Table%(L1%-1,T1%)=0
        gosub Action_G
        Table%(L1%-1,T1%)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4
  if L1%<4
      if Table%(L1%+1,T1%)=0
        gosub Action_D
        Table%(L1%+1,T1%)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2
  if T1%>0
      if Table%(L1%,T1%-1)=0
        gosub Action_H
        Table%(L1%,T1%-1)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4
  if T1%<4
      if Table%(L1%,T1%+1)=0
        gosub Action_B
        Table%(L1%,T1%+1)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  for x%=1 to 24:on_click x%+10,Selection :next x%
return
' ------------------------------------------------------------------------------
Action_G:
  if L%>=100
      for x%=L% to L%-100 step -5:top N%,T% :left N%,x% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_D:
  if L%<400
      for x%=L% to L%+100 step 5:top N%,T% :left N%,x% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_H:
  if T%>=100
      for x%=T% to T%-100 step -5:top N%,x% :left N%,L% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_B:
  if T%<400
      for x%=T% to T%+100 step 5:top N%,x% :left N%,L% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Arreter:
  Timer_off 401
  if gagne%=0
      if message_confirmation_yes_no("Etes vous sûr de vouloir abandonner ?")=1
        gosub Close_Jeu
      else
        gosub continu_Jeu
      end_if
  else
      if gagne%=1
        message "Bravo !!!"+chr$(13)+"Vous avez résolu le puzzle en :"+chr$(13)+Chrono$
        item_add 402,Date$+";"+Time$+";"+Joueur$+";"+view$+";"+Chrono$
        file_save 402,Dossier$+"\Score.Bdd"
        gosub Close_Jeu
      end_if
  end_if
return
' ------------------------------------------------------------------------------
Close_Jeu:
  for img%=11 to 34 : delete img% : next img%
  for R%=0 to 4: for C%=0 to 4 : Table%(R%,C%)=0 : next C%: next R%
  Tps%=0
  Chrono$="00 : 00 : 00"
  caption 800,Chrono$
  show 802
  active 802
return
' ------------------------------------------------------------------------------
Continu_Jeu:
  jeu%=1
  caption 2,def$(5)
  Timer_on 401
return
' ------------------------------------------------------------------------------
APp:
return
' ------------------------------------------------------------------------------
Aide:
  if object_exists(300)=1
      show 300
  else
      form 300:height 300,328:width 300,306:caption 300,def$(4)
      top 300,top(0):left 300,left(0)+520
      command_target_is 300
      picture 301:height 301,290:width 301,290:file_load 301,view$
  end_if
  pause 5000
  hide 300
return
' ------------------------------------------------------------------------------
Create_Solution:
  H%=-100
  repeat
      G%=-100
      H%=H%+100
      for x%=1 to 5
        G%=G%+100
        item_add 400,str$(G%)+"|"+str$(H%)
      next x%
  until H%=400
return
' ------------------------------------------------------------------------------
Verif_Solution:
  cpte%=0
  for x%=11 to 34
  VS$=item_read$(400,x%-10)
  sep%=instr(VS$,"|")
  G%=val(left$(VS$,sep%-1))
  H%=val(right$(VS$,len(VS$)-sep%))
      if top(x%)=H% and left(x%)=G%
        cpte%=cpte%+1
      end_if
  next x%
  if cpte%=24
      gagne%=1
      gosub arreter
  end_if
return
' ------------------------------------------------------------------------------
Chrono:
  Tps%=Tps%+1
  heure%=int(Tps%/3600)
  minute%=int(Tps%/60)-(heure%*60)
  secd%=Tps% -((heure%*3600)+(minute%*60))
    if len(str$(heure%))<2
    heure$="0"+str$(heure%)
  else
    heure$=str$(heure%)
  end_if
  if len(str$(minute%))<2
    minute$="0"+str$(minute%)
  else
    minute$=str$(minute%)
  end_if
  if len(str$(secd%))<2
    secd$="0"+str$(secd%)
  else
    secd$=str$(secd%)
  end_if
  Chrono$=heure$+" : "+minute$+" : "+secd$
  caption 800,Chrono$
return
' ------------------------------------------------------------------------------
Visu_Score:
  if object_exists(600)=1
    show 600
    caption 600,def$(9):caption 602,def$(13)
    for x%=1 to 5:grid_write 601,1,x% ,def$(x%+13):next x%
  else
    form 600:width 600,425:height 600,210:caption 600,def$(9)
    font_name 600,"Times new roman":font_size 600,10
    command_target_is 600
    grid 601:top 601,15:left 601,5:width 601,398
    grid_column 601,5:grid_row 601,2:grid_row_height 601,20
    grid_one_column_width 601,3,80
    grid_one_column_width 601,4,100
    for x%=1 to 5:grid_write 601,1,x% ,def$(x%+13):next x%
    button 602:top 602,140:left 602,327:caption 602,def$(13):cursor_point 602
    on_double_click 601,Selection_Cellule
    on_click 602,Quit_Score
  end_if
  gosub Remp_Grid
return
' ------------------------------------------------------------------------------
Remp_Grid:
  if count(402)>0
      grid_row 601,count(402)+2
      for x%=1 to count(402)
        Donnee$=item_read$(402,x%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,1,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,2,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,3,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,4,file_extract_name$(left$(Donnee$,sep%-1))
        grid_write 601,x%+1,5,right$(Donnee$,len(Donnee$)-sep%)
      next x%
  end_if
return
' ------------------------------------------------------------------------------
Selection_Cellule:
  pos_y%=mouse_y_left_down(601):pos_x%=mouse_x_left_down(601)
  lign_sel%=GRID_Y_TO_ROW(601,pos_y%):col_sel%=GRID_X_TO_COLUMN(601,pos_x%)
  if lign_sel%=1 and col_sel%=3 then gosub Tri_Grid_Joueur
  if lign_sel%=1 and col_sel%=4 then gosub Tri_Grid_Image
  if lign_sel%=1 and col_sel%=5 then gosub Tri_Grid_record
return
' ------------------------------------------------------------------------------
Tri_Grid_Joueur:
  for x%=0 to 100:List_Nom$(x%)="":next x%
  clear 404:clear 403
  if file_exists(Dossier$+"\Joueur.Bdd")=1
      file_load 403,Dossier$+"\Joueur.Bdd"
      for x%=1 to count(403)
        Nom$=item_read$(403,x%)
        List_Nom$(x%)=Nom$
      next x%
      if count(402)>0
        Num%=0
        repeat
            Num%=Num%+1
            for x%=1 to count(402)
              Donnee$=item_read$(402,x%)
              sep%=instr(Donnee$,";")
              Tri$(1)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(2)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(3)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(4)=file_extract_name$(left$(Donnee$,sep%-1))
              Tri$(5)=right$(Donnee$,len(Donnee$)-sep%)
              if List_Nom$(Num%)=Tri$(3)
              item_add 404,Tri$(1)+";"+Tri$(2)+";"+Tri$(3)+";"+Tri$(4)+";"+Tri$(5)
              end_if
            next x%
        until Num%=count(403)
      else
        message "Il n'y a pas assez de données pour faire un tri !"
      end_if
  else
      message "La liste des joueurs n'est pas créée !"
  end_if
  gosub Remp_Grid2
return
' ------------------------------------------------------------------------------
Tri_Grid_Record:
  for x%=0 to 100:List_Nom$(x%)="":next x%
  clear 404:clear 403
  if count(402)>0
      for x%=1 to count(402)
        Donnee$=item_read$(402,x%)
        Donnee$=right$(Donnee$,12)
        sep%=instr(Donnee$,":")
        v%(1)=val(left$(trim$(Donnee$),sep%-1))*3600
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,":")
        v%(2)=val(trim$(left$(Donnee$,sep%-1)))*60
        v%(3)=val(trim$(right$(Donnee$,len(Donnee$)-sep%)))
        Donnee%=v%(1)+v%(2)+v%(3)
        Donnee$=str$(Donnee%)
        item_add 403,Donnee$
      next x%
      for x%=1 to count(403)
      v_record%=86400
        for z1%=1 to count(403)
            v_ligne%=item_read$(403,z1%)
            if v_ligne% < v_record%
              v_record% = v_ligne%
              v_record_Lign% = z1%
            end_if
        next z1%
        item_add 404,item_read$(402,v_record_Lign%)
        item_delete 403,v_record_Lign%
        item_insert 403,v_record_Lign%,"86400"
      next x%
  end_if
  gosub Remp_Grid2
return
' ------------------------------------------------------------------------------
Tri_Grid_Image:
  for x%=0 to 100:List_Nom$(x%)="":next x%
  clear 404:clear 403
  if count(9)>0
      for x%=1 to count(9)
        Nom$=item_read$(9,x%)
        List_Nom$(x%)=Nom$
      next x%
      if count(402)>0
        Num%=0
        repeat
            Num%=Num%+1
            for x%=1 to count(402)
              Donnee$=item_read$(402,x%)
              sep%=instr(Donnee$,";")
              Tri$(1)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(2)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(3)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(4)=file_extract_name$(left$(Donnee$,sep%-1))
              Tri$(5)=right$(Donnee$,len(Donnee$)-sep%)
              if List_Nom$(Num%)=Tri$(4)
              item_add 404,Tri$(1)+";"+Tri$(2)+";"+Tri$(3)+";"+Tri$(4)+";"+Tri$(5)
              end_if
            next x%
        until Num%=count(9)
      else
        message "Il n'y a pas assez de données pour faire un tri !"
      end_if
  else
      message "La liste des joueurs n'est pas créée !"
  end_if
  gosub Remp_Grid2
return
' ------------------------------------------------------------------------------
Remp_Grid2:
  if count(404)>0
      grid_row 601,count(404)+2
      for x%=1 to count(404)
        Donnee$=item_read$(404,x%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,1,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,2,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,3,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,4,file_extract_name$(left$(Donnee$,sep%-1))
        grid_write 601,x%+1,5,right$(Donnee$,len(Donnee$)-sep%)
      next x%
  end_if
return
' ------------------------------------------------------------------------------
Quit_Score:
  Hide 600
return
' ------------------------------------------------------------------------------
Quitter:
terminate

Pour les tests et afin de vous éconimiser du temps
les fichiers :

"Joueur.Bdd"
Code:
Yannick
Gilbert
Edouard
Roger
"Score.Bdd"
Code:
03/08/2012;06:16:01;Yannick;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 05 : 06
04/08/2012;08:10:02;Gilbert;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 04 : 06
10/08/2012;08:15:02;Edouard;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 06 : 06
10/08/2012;08:20:02;Gilbert;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 04 : 56
11/08/2012;08:30:02;Roger;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 06 : 06
11/08/2012;08:35:02;Gilbert;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 03 : 26
12/08/2012;08:20:02;Roger;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 04 : 46
12/08/2012;08:24:02;Yannick;C:\Users\Yannick\Desktop\Puzzle\Fonds\Numerique.bmp;00 : 05 : 16

les deux fichiers sont là pour remplacer ceux du zip précédent qui sont plus courts

Zut ! j'oubliais, le nouveau *.bas utilise la dll "form.dll" de Nardo26 disponible sur son webdav
ou vous téléchargez le zip complet dispo d'ici quelques minutes... Laughing

Edit : Le zip est dispo sur mon webdav,
pour ceux qui téléchargeront, l'image "Buck Danny" n'est pas encore fini


Dernière édition par ygeronimi le Sam 4 Aoû 2012 - 1:03, édité 1 fois (Raison : mise à jours du programme avec option de tri des scores sur Nom,Image,Temps)
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: évolution   Jeu Puzzle EmptySam 4 Aoû 2012 - 1:09

Je viens de mettre à jour le *.bas, post ci dessus, en ajoutant la possibilté de trier les scores
soit par nom soit par image, soit par temps de résolution.

Là, je suis entrain de finir la troisième image (Buck Danny.Bmp) enfin ses "pseudo sprites"
Le zip sera remis à jours après la fin de ce dessin.

aller !, Jicehel regardes le ... je sais que tu en meurs d'envie....Laughing
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 1:33

Voilà ,

c'est la suite , j'essaie donc d'intégrer la découpe d'image et j'ai un souci.
mais bon à force de regarder mes lignes de code, j'y vois plus rien si quelqu'un peu jeter un zoeil
et me dire si il voit ce qui cloche... Suspect

Code:
' ******************************************************************************
dim Dossier$,Doss_Sprite$,Doss_Fond$,Doss_Langue$
dim Langue$,def$(100),jeu%
dim M%
dim N%,T%,L%,T1%,L1%,x0%,y0%,x1%,y1%,T2%,T3%,L2%,L3%,e%,f%,j%
dim x%,x$,joueur$
dim img%,img$,Doss_img_select$,view$
dim mess%
dim Table%(4,4),R%,C%,a%,b%,z%,cpte%,i%,gagne%,G%,H%,VS$,sep%
dim heure%,minute%,secd%,Tps%,heure$,minute$,secd$,Chrono$,Donnee$,Donnee%
dim hnd%,mode%,res%,res2%,hnd2%,res_dll2%
dim pos_x%,pos_y%,lign_sel%,col_sel%
dim Nom$,List_Nom$(100),Num%,Tri$(5),v$(3),v%(3),v_record%,v_ligne%,z1%,v_record_Lign%
dim PB%,etat%
' ------------------------------------------------------------------------------
label Init,Init_Dossier,Init_List,Init_Param,Init_Langue,Init_Bdd
label Change_Langue,New_Langue
label Menu,Jouer,Arreter,APp,Aide
label Select_Joueur,choix_joueur,Ajout_Joueur,Valid_Joueur
label Select_Img,Preview,Choix,Sous_Creation,Creation,Placement,Verif,Selection
label Messager
label Action_G,Action_D,Action_H,Action_B
label Create_Solution,Verif_Solution,Chrono,Close_Jeu,Continu_Jeu
label Visu_Score,Remp_Grid,Quit_Score
label Selection_Cellule,Tri_Grid_Joueur,Tri_Grid_Record,Tri_Grid_Image,Remp_Grid2
label Quitter
' ******************************************************************************
caption 0,"Mon Puzzle":width 0,516:height 0,558:color 0,240,240,150
top 0,(screen_y-558)/2:left 0,(screen_x-516)/2
font_name 0,"Times new roman":font_size 0,10
main_menu 1
 sub_menu 2:parent 2,1:on_click 2,Menu:caption 2,"Jouer"
 sub_menu 3:parent 3,1:on_click 3,Menu:caption 3,"Langue"
 sub_menu 4:parent 4,1:on_click 4,Menu:caption 4,"A Propos"
 sub_menu 5:parent 5,1:on_click 5,Menu:caption 5,"Aide"
 sub_menu 801:parent 801,1:on_click 801,Visu_Score
 sub_menu 800:parent 800,1
 Chrono$="00 : 00 : 00"
 caption 800,Chrono$
 inactive 5
 button 802:top 802,470:left 802,420:cursor_point 802:on_click 802,Quitter
dlist 6 :' Liste des peramètres
dlist 7 :' Liste des langues dispo
dlist 8 :' Contenu de la langue choisie
dlist 9 :' Liste des Images
dlist 400 :' Solution
dlist 402 :' Liste des scores
dlist 403 :' liste temporaire pour les tris
dlist 404 :' liste temporaire pour les tris
timer 401:timer_off 401
gosub Init
end
' ******************************************************************************
Init:
  gosub Init_Dossier
  gosub Init_List
  gosub Init_Param
  gosub Init_Bdd
  gosub Create_Solution
return
' ------------------------------------------------------------------------------
Init_Dossier:
  Dossier$=Dir_Current$
  Doss_Sprite$=Dossier$+"\Sprites"
  Doss_Fond$=Dossier$+"\Fonds"
  Doss_Langue$=Dossier$+"\Langue"
return
' ------------------------------------------------------------------------------
Init_List:
  ' langues disponibles
  dir_change Doss_Langue$
  x$=file_find_first$
  if x$<>"_" then item_add 7,x$
  x$=file_find_next$
  while x$<>"_"
      if x$<>"_" then item_add 7,x$
      x$=file_find_next$
  end_while
  file_find_close
  ' liste des images
  dir_change Doss_Fond$
  x$=file_find_first$
  if x$<>"_" then item_add 9,x$
  x$=file_find_next$
  while x$<>"_"
      if x$<>"_" then item_add 9,x$
      x$=file_find_next$
  end_while
  file_find_close
return
' ------------------------------------------------------------------------------
Init_Param:
  if file_exists(Dossier$+"\Param.inf")=1
      file_load 6,Dossier$+"\Param.inf"
      gosub Init_Langue
  else
      gosub Change_Langue
  end_if
return
' ------------------------------------------------------------------------------
Init_Langue:
  clear 8
  if count(6)>0
      Langue$=Doss_Langue$+"\"+item_read$(6,1)+".txt"
      file_load 8,Langue$
      for x%=1 to count(8):def$(x%)=item_read$(8,x%):next x%
      for x%=2 to 5:caption x%,def$(x%-1):next x%
      caption 801,def$(9)
      caption 802,def$(19)
      if jeu%=1 then caption 2,def$(5)
  end_if
return
' ------------------------------------------------------------------------------
Change_Langue:
  if object_exists(100)=1
      show 100
  else
      form 100
      width 100,200:height 100,130:top 100,(screen_y-130)/2:left 100,(screen_x-200)/2
      caption 100,"Paramètres":font_name 100,"Times new roman":font_size 100,10
      command_target_is 100
      alpha 101:top 101,10:left 101,10:caption 101,"Langue :"
      combo 102:top 102,30:left 102,10
      for x%=1 to count(7):item_add 102,left$(item_read$(7,x%),len(item_read$(7,x%))-4):next x%
      on_change 102,New_Langue
  end_if
return
'-------------------------------------------------------------------------------
New_Langue:
  If count(6)>0 and Text$(102)<>""
      item_delete 6,1
      item_insert 6,1,Text$(102)
  else
      if Text$(102)<>"" then item_insert 6,1,Text$(102)
  end_if
  file_save 6,Dossier$+"\Param.inf"
  gosub Init_Langue
  hide 100
return
'-------------------------------------------------------------------------------
Init_Bdd:
  if file_exists(Dossier$+"\Score.Bdd")=1
      file_load 402,Dossier$+"\Score.Bdd"
  end_if
return
' ------------------------------------------------------------------------------
Menu:
  for x%=2 to 5
      if clicked(x%)=1 then M%=x%
  next x%
  select M%
  case 2
      jeu%=jeu%+1
      if jeu%=1
        caption 2,def$(5)
        gosub Jouer
      else
        jeu%=0
        caption 2,def$(1)
        gagne%=0
        gosub Arreter
      end_if
  case 3
      gosub Change_Langue
  case 4
      gosub APp
  case 5
      gosub Aide
  end_select
return
' ------------------------------------------------------------------------------
Jouer:
  gosub Select_Joueur
return
' ------------------------------------------------------------------------------
Select_Joueur:
  dll_on Dossier$+"\form.dll"
  Joueur$="Joueur inconnu"
  if object_exists(500)=1
      show 500
  else
      form 500:width 500,360:height 500,205:top 500,(screen_y-205)/2:left 500,(screen_x-360)/2
      caption 500,def$(10):font_name 500,"Times new roman":font_size 500,10:border_small 500
      command_target_is 500
      hnd%=handle(500)
      Mode%=0
      res%=dll_call2("SetCaption",hnd%,mode%)
      list 501:height 501,160:sort_on 501
      if file_exists(Dossier$+"\Joueur.Bdd")=1 then file_load 501,Dossier$+"\Joueur.Bdd"
      cursor_point 501:hint 501,def$(11):on_click 501,choix_joueur
      edit 502:text 502,"":top 502,20:left 502,140
      button 503:top 503,20:left 503,265:width 503,20:height 503,20:caption 503,"..."
      cursor_point 503:on_click 503,Ajout_Joueur:hint 503,def$(12)
      button 504:top 504,140:left 504,265:caption 504,def$(8)
      cursor_point 504:on_click 504,Valid_Joueur
  end_if
return
' ------------------------------------------------------------------------------
Choix_Joueur:
  text 502,item_index$(501)
return
' ------------------------------------------------------------------------------
Ajout_Joueur:
  a%=0
  if text$(502)<>""
      for x%=1 to count(501)
        if text$(502)=item_read$(501,x%) then a%=a%+1
      next x%
  end_if
  if a%=0
      item_add 501,text$(502)
      file_save 501,Dossier$+"\Joueur.Bdd"
  end_if
return
' ------------------------------------------------------------------------------
Valid_Joueur:
 if text$(502)<>"" then  Joueur$=text$(502)
 dll_off
 hide 500
 gosub Select_img
return
' ------------------------------------------------------------------------------
Select_img:
  dll_on Dossier$+"\form.dll"
  if object_exists(200)=1
      show 200
  else
      form 200:width 200,500:height 200,350:top 200,(screen_y-350)/2:left 200,(screen_x-500)/2
      caption 200,def$(6):font_name 200,"Times new roman":font_size 200,10:border_small 200
      command_target_is 200
      hnd2%=handle(200)
      res2%=dll_call2("SetCaption",hnd2%,0)
      alpha 201:top 201,10:left 201,5:caption 201,def$(7)
      list 202 :top 202,30:left 202,5:width 202,170:height 202,230:cursor_point 202
      for x%=1 to count(9):item_add 202,item_read$(9,x%):next x%
      on_click 202,Preview
      picture 203:top 203,5:left 203,180:width 203,290:height 203,290:stretch_on 203
      button 204 :top 204,270:left 204,50:caption 204,def$(8):cursor_point 204
      inactive 204:on_click 204,Choix
  end_if
return
' ------------------------------------------------------------------------------
Preview:
  view$=Doss_Fond$+"\"+item_index$(202)
  file_load 203,view$
  active 204
return
' ------------------------------------------------------------------------------
Choix:
  img$=item_index$(202)
  dll_off
  hide 200
  gosub Messager
  gosub Sous_Creation
  command_target_is 0
  inactive 802
  hide 802

return
' ------------------------------------------------------------------------------
Sous_Creation:
  for x%=11 to 35
      if file_exists(Doss_Sprite$+"\"+str$(x%)+".bmp")=1
        delete Doss_Sprite$+"\"+str$(x%)+".bmp"
      end_if
  next x%
  form 600:hide 600:width 600,307:height 600,335
  command_target_is 600
  dll_on Dossier$+"\PrintScreen.dll"
  picture 606:width 606,290:height 606,290
  j%=0
  for x%=1 to 5
      if x%=1
        e%=0:f%=5:T2%=0:T3%=57
      else
        if x%=2
        e%=5:f%=10:T2%=58:T3%=115
        else
            if x%=3
            e%=10:f%=15:T2%=116:T3%=173
            else
              if x%=4
              e%=15:f%=20:T2%=174:T3%=231
              else
              e%=20:f%=25:T2%=232:T3%=289
              end_if
            end_if
        end_if
      end_if
      repeat
        e%=e%+1
        j%=j%+1
        file_load 606,view$
        clipboard_copy 606
        pause 500
        res_dll2% = dll_call0("LoadPicture")
        if e%=((x%-1)*5)+1
            L2%=0
            L3%=57
        else
            if e%=((x%-1)*5)+2
              L2%=58
              L3%=115
            else
              if e%=((x%-1)*5)+3
                  L2%=116
                  L3%=173
              else
                  if e%=((x%-1)*5)+4
                    L2%=174
                    L3%=231
                  else
                    if e%=((x%-1)*5)+5
                        L2%=232
                        L3%=289
                    end_if
                  end_if
              end_if
            end_if
        end_if
        x0% = L2%
        y0% = T2%
        x1% = L3%
        y1% = T3%
        res_dll2% = dll_call4("ExtractRectangleFromPicture",x0%,y0%,x1%,y1%)
        pause 400
        res_dll2%=dll_call0("SavePicture")
        clipboard_paste 606
        file_save 606,Doss_Sprite$+"\"+str$(e%+10)+".bmp"
        pause 400
        etat%=j%*8
        for PB%=1 to etat%
            position 701,PB%
        next PB%
      until e%=f%
      next x%
  dll_off
return
' ------------------------------------------------------------------------------
Messager:
  form 700:height 700,130:width 700,250:top 700,(screen_y-130)/2:left 700,(screen_x-250)/2
  caption 700,def$(20)
  command_target_is 700
      progress_bar 701:top 701,10:left 701,10:width 701,200
     
      if j%=25 then gosub Creation
return
' ------------------------------------------------------------------------------
Creation:
  delete 600
  delete 700
  for x%=1 to 24
      img%=10+x%
      picture img%
      width img%,100 :height img%,100:cursor_point img%
      stretch_on img% :file_load img%,Doss_Sprite$+"\"+str$(img%)+".bmp"
      on_click img%,Selection
  next x%
  gosub Placement
  Tps%=0
  timer_on 401
  on_timer 401,Chrono
  active 5
return
' ------------------------------------------------------------------------------
Placement:
  Table%(4,4)=1
  for img%=11 to 34
      repeat
        R%=int(rnd(5))
        C%=int(rnd(5))
      until Table%(R%,C%)=0
      Table%(R%,C%)=img%
      left img%,R%*100
      top img%,C%*100
  next img%
  Table%(4,4)=0
return
' ------------------------------------------------------------------------------
Selection:
  for x%=1 to 24:off_click x%+10:next x%
  N%=number_click
  T%=Top(N%)
  L%=Left(N%)
  gosub Verif
  gosub Verif_Solution
return
' ------------------------------------------------------------------------------
Verif:
  T1%=T%/100
  L1%=L%/100
  ' pour se deplacer vers la gauche il faut au minimum etre dans la colonne 2
  if L1%>0
      if Table%(L1%-1,T1%)=0
        gosub Action_G
        Table%(L1%-1,T1%)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour ce deplacer vers la droite il faut au maximum etre dans la colonne 4
  if L1%<4
      if Table%(L1%+1,T1%)=0
        gosub Action_D
        Table%(L1%+1,T1%)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour ce deplacer vers le haut il faut etre au minimum sur la ligne 2
  if T1%>0
      if Table%(L1%,T1%-1)=0
        gosub Action_H
        Table%(L1%,T1%-1)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  ' pour se deplacer vers le bas il faut au maximum etre sur la ligne 4
  if T1%<4
      if Table%(L1%,T1%+1)=0
        gosub Action_B
        Table%(L1%,T1%+1)=Table%(L1%,T1%)
        Table%(L1%,T1%)=0
      end_if
  end_if
  for x%=1 to 24:on_click x%+10,Selection :next x%
return
' ------------------------------------------------------------------------------
Action_G:
  if L%>=100
      for x%=L% to L%-100 step -5:top N%,T% :left N%,x% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_D:
  if L%<400
      for x%=L% to L%+100 step 5:top N%,T% :left N%,x% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_H:
  if T%>=100
      for x%=T% to T%-100 step -5:top N%,x% :left N%,L% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Action_B:
  if T%<400
      for x%=T% to T%+100 step 5:top N%,x% :left N%,L% :wait 5 :next x%
  end_if
return
' ------------------------------------------------------------------------------
Arreter:
  Timer_off 401
  if gagne%=0
      if message_confirmation_yes_no("Etes vous sûr de vouloir abandonner ?")=1
        gosub Close_Jeu
      else
        gosub continu_Jeu
      end_if
  else
      if gagne%=1
        message "Bravo !!!"+chr$(13)+"Vous avez résolu le puzzle en :"+chr$(13)+Chrono$
        item_add 402,Date$+";"+Time$+";"+Joueur$+";"+view$+";"+Chrono$
        file_save 402,Dossier$+"\Score.Bdd"
        gosub Close_Jeu
      end_if
  end_if
return
' ------------------------------------------------------------------------------
Close_Jeu:
  for img%=11 to 34 : delete img% : next img%
  for R%=0 to 4: for C%=0 to 4 : Table%(R%,C%)=0 : next C%: next R%
  Tps%=0
  Chrono$="00 : 00 : 00"
  caption 800,Chrono$
  show 802
  active 802
return
' ------------------------------------------------------------------------------
Continu_Jeu:
  jeu%=1
  caption 2,def$(5)
  Timer_on 401
return
' ------------------------------------------------------------------------------
APp:
return
' ------------------------------------------------------------------------------
Aide:
  if object_exists(300)=1
      show 300
  else
      form 300:height 300,328:width 300,306:caption 300,def$(4)
      top 300,top(0):left 300,left(0)+520
      command_target_is 300
      picture 301:height 301,290:width 301,290:file_load 301,view$
  end_if
  pause 5000
  hide 300
return
' ------------------------------------------------------------------------------
Create_Solution:
  H%=-100
  repeat
      G%=-100
      H%=H%+100
      for x%=1 to 5
        G%=G%+100
        item_add 400,str$(G%)+"|"+str$(H%)
      next x%
  until H%=400
return
' ------------------------------------------------------------------------------
Verif_Solution:
  cpte%=0
  for x%=11 to 34
  VS$=item_read$(400,x%-10)
  sep%=instr(VS$,"|")
  G%=val(left$(VS$,sep%-1))
  H%=val(right$(VS$,len(VS$)-sep%))
      if top(x%)=H% and left(x%)=G%
        cpte%=cpte%+1
      end_if
  next x%
  if cpte%=24
      gagne%=1
      gosub arreter
  end_if
return
' ------------------------------------------------------------------------------
Chrono:
  Tps%=Tps%+1
  heure%=int(Tps%/3600)
  minute%=int(Tps%/60)-(heure%*60)
  secd%=Tps% -((heure%*3600)+(minute%*60))
    if len(str$(heure%))<2
    heure$="0"+str$(heure%)
  else
    heure$=str$(heure%)
  end_if
  if len(str$(minute%))<2
    minute$="0"+str$(minute%)
  else
    minute$=str$(minute%)
  end_if
  if len(str$(secd%))<2
    secd$="0"+str$(secd%)
  else
    secd$=str$(secd%)
  end_if
  Chrono$=heure$+" : "+minute$+" : "+secd$
  caption 800,Chrono$
return
' ------------------------------------------------------------------------------
Visu_Score:
  if object_exists(600)=1
    show 600
    caption 600,def$(9):caption 602,def$(13)
    for x%=1 to 5:grid_write 601,1,x% ,def$(x%+13):next x%
  else
    form 600:width 600,425:height 600,210:caption 600,def$(9)
    font_name 600,"Times new roman":font_size 600,10
    command_target_is 600
    grid 601:top 601,15:left 601,5:width 601,398
    grid_column 601,5:grid_row 601,2:grid_row_height 601,20
    grid_one_column_width 601,3,80
    grid_one_column_width 601,4,100
    for x%=1 to 5:grid_write 601,1,x% ,def$(x%+13):next x%
    button 602:top 602,140:left 602,327:caption 602,def$(13):cursor_point 602
    on_double_click 601,Selection_Cellule
    on_click 602,Quit_Score
  end_if
  gosub Remp_Grid
return
' ------------------------------------------------------------------------------
Remp_Grid:
  if count(402)>0
      grid_row 601,count(402)+2
      for x%=1 to count(402)
        Donnee$=item_read$(402,x%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,1,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,2,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,3,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,4,file_extract_name$(left$(Donnee$,sep%-1))
        grid_write 601,x%+1,5,right$(Donnee$,len(Donnee$)-sep%)
      next x%
  end_if
return
' ------------------------------------------------------------------------------
Selection_Cellule:
  pos_y%=mouse_y_left_down(601):pos_x%=mouse_x_left_down(601)
  lign_sel%=GRID_Y_TO_ROW(601,pos_y%):col_sel%=GRID_X_TO_COLUMN(601,pos_x%)
  if lign_sel%=1 and col_sel%=3 then gosub Tri_Grid_Joueur
  if lign_sel%=1 and col_sel%=4 then gosub Tri_Grid_Image
  if lign_sel%=1 and col_sel%=5 then gosub Tri_Grid_record
return
' ------------------------------------------------------------------------------
Tri_Grid_Joueur:
  for x%=0 to 100:List_Nom$(x%)="":next x%
  clear 404:clear 403
  if file_exists(Dossier$+"\Joueur.Bdd")=1
      file_load 403,Dossier$+"\Joueur.Bdd"
      for x%=1 to count(403)
        Nom$=item_read$(403,x%)
        List_Nom$(x%)=Nom$
      next x%
      if count(402)>0
        Num%=0
        repeat
            Num%=Num%+1
            for x%=1 to count(402)
              Donnee$=item_read$(402,x%)
              sep%=instr(Donnee$,";")
              Tri$(1)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(2)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(3)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(4)=file_extract_name$(left$(Donnee$,sep%-1))
              Tri$(5)=right$(Donnee$,len(Donnee$)-sep%)
              if List_Nom$(Num%)=Tri$(3)
              item_add 404,Tri$(1)+";"+Tri$(2)+";"+Tri$(3)+";"+Tri$(4)+";"+Tri$(5)
              end_if
            next x%
        until Num%=count(403)
      else
        message "Il n'y a pas assez de données pour faire un tri !"
      end_if
  else
      message "La liste des joueurs n'est pas créée !"
  end_if
  gosub Remp_Grid2
return
' ------------------------------------------------------------------------------
Tri_Grid_Record:
  for x%=0 to 100:List_Nom$(x%)="":next x%
  clear 404:clear 403
  if count(402)>0
      for x%=1 to count(402)
        Donnee$=item_read$(402,x%)
        Donnee$=right$(Donnee$,12)
        sep%=instr(Donnee$,":")
        v%(1)=val(left$(trim$(Donnee$),sep%-1))*3600
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,":")
        v%(2)=val(trim$(left$(Donnee$,sep%-1)))*60
        v%(3)=val(trim$(right$(Donnee$,len(Donnee$)-sep%)))
        Donnee%=v%(1)+v%(2)+v%(3)
        Donnee$=str$(Donnee%)
        item_add 403,Donnee$
      next x%
      for x%=1 to count(403)
      v_record%=86400
        for z1%=1 to count(403)
            v_ligne%=item_read$(403,z1%)
            if v_ligne% < v_record%
              v_record% = v_ligne%
              v_record_Lign% = z1%
            end_if
        next z1%
        item_add 404,item_read$(402,v_record_Lign%)
        item_delete 403,v_record_Lign%
        item_insert 403,v_record_Lign%,"86400"
      next x%
  end_if
  gosub Remp_Grid2
return
' ------------------------------------------------------------------------------
Tri_Grid_Image:
  for x%=0 to 100:List_Nom$(x%)="":next x%
  clear 404:clear 403
  if count(9)>0
      for x%=1 to count(9)
        Nom$=item_read$(9,x%)
        List_Nom$(x%)=Nom$
      next x%
      if count(402)>0
        Num%=0
        repeat
            Num%=Num%+1
            for x%=1 to count(402)
              Donnee$=item_read$(402,x%)
              sep%=instr(Donnee$,";")
              Tri$(1)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(2)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(3)=left$(Donnee$,sep%-1)
              Donnee$=right$(Donnee$,len(Donnee$)-sep%)
              sep%=instr(Donnee$,";")
              Tri$(4)=file_extract_name$(left$(Donnee$,sep%-1))
              Tri$(5)=right$(Donnee$,len(Donnee$)-sep%)
              if List_Nom$(Num%)=Tri$(4)
              item_add 404,Tri$(1)+";"+Tri$(2)+";"+Tri$(3)+";"+Tri$(4)+";"+Tri$(5)
              end_if
            next x%
        until Num%=count(9)
      else
        message "Il n'y a pas assez de données pour faire un tri !"
      end_if
  else
      message "La liste des joueurs n'est pas créée !"
  end_if
  gosub Remp_Grid2
return
' ------------------------------------------------------------------------------
Remp_Grid2:
  if count(404)>0
      grid_row 601,count(404)+2
      for x%=1 to count(404)
        Donnee$=item_read$(404,x%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,1,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,2,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,3,left$(Donnee$,sep%-1)
        Donnee$=right$(Donnee$,len(Donnee$)-sep%)
        sep%=instr(Donnee$,";")
        grid_write 601,x%+1,4,file_extract_name$(left$(Donnee$,sep%-1))
        grid_write 601,x%+1,5,right$(Donnee$,len(Donnee$)-sep%)
      next x%
  end_if
return
' ------------------------------------------------------------------------------
Quit_Score:
  Hide 600
return
' ------------------------------------------------------------------------------
Quitter:
terminate
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 8:12

C EST FINI !!!!!
flower flower bounce bounce cheers cheers cheers cheers bounce bounce flower flower

Merci à tous pour vôtre soutien, vôtre aide, vos commentaires...

le jeu est sur mon webdav

http://www.mydrive.ch/
panoramicien@ygeronimi_panoramic
panoramic123


Dossier : "Programmes en cours"
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 9:33

Bravo Ygernimi Wink

Par contre comme la construction du puzzle se refait à chaque fois et que je ne suis pas patient, j'ai modifié un peu le sous programme: Sous_Creatio et là j'attends beaucoup moins longtemps ...
Code:
Sous_Creation:
  for x%=11 to 35
      if file_exists(Doss_Sprite$+"\"+str$(x%)+".bmp")=1
        file_delete Doss_Sprite$+"\"+str$(x%)+".bmp"
      end_if
  next x%
  form 600:hide 600:width 600,307:height 600,335
  command_target_is 600
  dll_on Dossier$+"\PrintScreen.dll"
  picture 606:width 606,290:height 606,290
  j%=0
  for x%=1 to 5
      if x%=1
        e%=0:f%=5:T2%=0:T3%=57
      else
        if x%=2
        e%=5:f%=10:T2%=58:T3%=115
        else
            if x%=3
            e%=10:f%=15:T2%=116:T3%=173
            else
              if x%=4
              e%=15:f%=20:T2%=174:T3%=231
              else
              e%=20:f%=25:T2%=232:T3%=289
              end_if
            end_if
        end_if
      end_if
      repeat
        e%=e%+1
        j%=j%+1
        position 701,(j% *4)
        caption 702,str$(j%*4)+" %"
        file_load 606,view$
        clipboard_copy 606
        pause 20
        res_dll2% = dll_call0("LoadPicture")
        if e%=((x%-1)*5)+1
            L2%=0
            L3%=57
        else
            if e%=((x%-1)*5)+2
              L2%=58
              L3%=115
            else
              if e%=((x%-1)*5)+3
                  L2%=116
                  L3%=173
              else
                  if e%=((x%-1)*5)+4
                    L2%=174
                    L3%=231
                  else
                    if e%=((x%-1)*5)+5
                        L2%=232
                        L3%=289
                    end_if
                  end_if
              end_if
            end_if
        end_if
        x0% = L2%
        y0% = T2%
        x1% = L3%
        y1% = T3%
        res_dll2% = dll_call4("ExtractRectangleFromPicture",x0%,y0%,x1%,y1%)
        pause 20
        res_dll2%=dll_call0("SavePicture")
        clipboard_paste 606
        file_save 606,Doss_Sprite$+"\"+str$(e%+10)+".bmp"
        pause 20
      until e%=f%
      next x%
  dll_off
if j%=25 then gosub Creation
return
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 9:48

ha!, ces gens pressés..... Laughing


j'avais gardé les pauses de l'exemple de Klaus pour éviter un bug et éviter la surcharge.
seul la "pause" avant le "until" est de moi...

Si tu n'as pas de problème comme çà, pourquoi pas... Wink
Le source est dispo, chacun est libre de mettre à sa sauce,
Je suis même sur qu'on peut (avec plus de maîtrise de la prog que moi )
faire plus court mais bon, je me bats avec mes armes... Laughing

Heu...faudrait voir à prendre le temps de vivre quand même, monsieur Jicehel... Laughing
sinon tu vas finir comme nos autres comparses du forum alien bounce affraid rendeer jocolor king flower tongue Evil or Very Mad

puis ne te presse pas trop, la fin arrive toujours à l'heure et c'est elle qui nous rattrape... Laughing

Revenir en haut Aller en bas
Jicehel

Jicehel


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

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 9:55

philosophe dès le matin Wink
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 9:59

Une faute de frappe s'est glissé à la ligne 485

il faut remplacer "delete" par "file_delete"


Edit : Zip corrigé en ligne


Dernière édition par ygeronimi le Dim 5 Aoû 2012 - 10:05, édité 1 fois (Raison : correction)
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 10:00

On se croise,

j'ai pas encore dormi, c'est pour çà... Laughing
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 10:12

Va te coucher, ce n'est pas sérieux ça Wink A tout à l'heure après ta nuit (sieste ?)
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 10:17

Citation :
Heu...faudrait voir à prendre le temps de vivre quand même, monsieur Jicehel...

Bin oui ! surtout un dimanche matin !! LOL ! Laughing
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 10:39

à cette heure là! je verrai çà la nuit prochaine... Laughing

Là , il fallait que j'aboutisse, ce jeu commençait à m' énerver.
Puis si je m'arrête, je ne sais plus où j'en suis ...
quand je reprends, il me faut une heure pour retrouver le fil de mes idées... Laughing

Edit :

ceci dit ...vous en pensez quoi de mon jeu ?!

Y a t il des options qui manquent, ou autre ?...

Je serai curieux de voir la réaction de klaus, si il voit ce que j'ai avec sa dll...
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 11:20

Bravo Ygeronimi !

Ta réalisation est superbe.

Juste au niveau des scores (mais c'est un choix personnel !), il aurai était simpa de pouvoir choisir le hauteur du tableau afin de voir plus de resultats de joueurs.

sinon super. j'aime bcp la barre d'avancement sur de la generation des sprites.

Apres plusieurs essais, je me trouve confronté a l'inversion des 2 derniers morceaux d'images (HHARGGFFF !!!!)
Impossible de trouver la solutions !!! confused
Mais c'est pas grave, ce n'ai qu'un jeu... Very Happy
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 11:40

Avec le recul de quelques heures, je me dis que j'aurai pu mettre une possibilité
de re mélanger les images mais bon ...çà serait un peu vicieux, non?... Twisted Evil

Pour la fenêtre des scores il est possible de faire une fenêtre dynamique mais,
même si cela n'a aucune incidence, j'ai toujours une fenêtre " Acces violation"
qui apparait au premier agrandissement et j'aime pas, çà me pourrit mon boulot...

tu as vu que tu peux trier les scores ( par image, par nom de joueur ou par temps de résolution)
en double cliquant sur l'entête de colonne.


Edit :

La barre d'avancement... ...c'est pour faire style "PRO"... Laughing Laughing Laughing

Pour se faire ses propres fichiers "Score.Bdd" et "Joueur.Bdd", il suffit de supprimer
les fichiers de ce nom que j'ai mis dans le zip ( ce sont des fichiers test )

Pour ajouter des image, taille 290 x 290, format *.bmp .
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 13:57

Avec les chiffres c'est plus simple, Bravo Ygeronimi.

Un conseil tout de même: va dormir Sleep

Un deal pour les collègues: Faites plus rapide que moi ! bounce Very Happy bounce geek

Jeu Puzzle Puzzle10

Et je veux des preuves ! lol!
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 17:53

record battu !!
Jeu Puzzle Puzzle12
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 18:31

Ben çà alors Embarassed
Revenir en haut Aller en bas
Jicehel

Jicehel


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

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 18:35

oui, mais il ne dit pas que c'était à la 937eme tentative Very Happy
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 18:39

tiens, tiens, minibug est passé au trombinoscope !!!
cheers cheers cheers cheers
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 19:02

Les posts se croisent,
Jeu Puzzle Captur14

Au réveil !...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle EmptyDim 5 Aoû 2012 - 19:03

Je m'incline....
Revenir en haut Aller en bas
Yannick




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

Jeu Puzzle Empty
MessageSujet: re   Jeu Puzzle EmptyDim 5 Aoû 2012 - 19:34

Non,non ! on ne s'incline pas !
on relève la tête, on se redresse...
...et on remet le métier à l'ouvrage !!!

lol! lol! lol!
Revenir en haut Aller en bas
Contenu sponsorisé





Jeu Puzzle Empty
MessageSujet: Re: Jeu Puzzle   Jeu Puzzle Empty

Revenir en haut Aller en bas
 
Jeu Puzzle
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Puzzle
» Puzzle 2
» Scrabble puzzle
» Construire et résoudre un puzzle
» Résoudre un puzzle créé par Puzzeliser

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: