FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Calculatrice
par papydall Hier à 22:45

» Orbites de l’ensemble de Mandelbrot
par Minibug Hier à 21:32

» Planétarium virtuel.
par Pedro Alvarez Hier à 17:07

» Demande pour Jack concernant PanExpress
par Minibug Hier à 11:04

» EPP_V01 éditeur pour Panoramic
par Minibug Mer 19 Sep 2018 - 21:03

» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?
par Jean Claude Mer 19 Sep 2018 - 21:02

» PanExpress : l'éditeur Panoramic avec création d'objet
par Minibug Mer 19 Sep 2018 - 15:58

» Petit coucou en passant !
par Minibug Dim 16 Sep 2018 - 15:03

» bug SEVERE fnc+sub : variables globales corrompus
par silverman Dim 16 Sep 2018 - 13:38

» Verrouiller un form en avant plan
par silverman Dim 16 Sep 2018 - 12:50

» Fin de l'aventure.
par Pedro Alvarez Sam 15 Sep 2018 - 18:16

» Demande d'explications Sur File_Write & File_writeln
par Jack Sam 15 Sep 2018 - 17:26

» MEMO avec des possibilités de commande
par Oscaribout Mer 12 Sep 2018 - 1:06

» La théorie du chaos
par jean_debord Mar 11 Sep 2018 - 9:30

» Version instantanée V 0.9.29i2 du 4/09/2018
par silverman Mer 5 Sep 2018 - 10:15

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Septembre 2018
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
CalendrierCalendrier

Partagez | 
 

 Puissance 4 en 2D

Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4  Suivant
AuteurMessage
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Dim 29 Jan 2017 - 11:15

Ce code fonctionne sans bug, pour la fluidité je n'ai rien remarqué de nouveau car ta version précédente fonctionnait bien.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Puissance 4 en 2D   Dim 29 Jan 2017 - 11:40

Bon je viens de regarder Jean-Claude. Je pense que je pourrais adapter mais ça va demander un peu de boulot déjà pour que je comprenne bien ton code: tu as garder l'esprit mais tu as modifié pas mal de choses dont la gestion en matrice transformée en tableau de cases.
J'essaye de regarder, de comprendre les principes (Colonnes pleines etc...) pour adapter le plus facilement possible le même principe que dans mon programme, mais il faudra que j'adapte un peu ton code (j'essayerai de garder les même principe que toi pour que tu puisses t’approprier la solution et l'intégrer dans tes évolutions de codes)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Dim 29 Jan 2017 - 11:53

Merci Jicehel,

Je te file ma dernière tentative d'IA.

Code:
' Puissance4_JC (01/2017) Panoramic version 0.9.27i9 du 30/12/2016.

error_french : dir_change dir_current$
hide 0
width 0,716 : height 0,639 : color 0,200,200,55
      top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2)
    font_color 0,0,0,255 : font_bold 0
caption 0,"PUISSANCE 4    (Version 2D avec Panoramic - 2017)."

dim Dlist1% : Dlist1%=2 : Dlist Dlist1%

dim EtatPion%(42):' soit 0 soit Caz%
dim ColorPion$(42): ' de 1 à 24 => R , de 25 à 42 => J
dim Nbcaz% : Nbcaz%=42
dim EtatCase%(Nbcaz%):' soit EtatPion%(?) soit 0 (vide)
dim Pos_X%(Nbcaz%),Pos_Y%(Nbcaz%),Col%(Nbcaz%),Lig%(Nbcaz%)
dim a$,n%,nsp%,Caz%,ncz%,Pion%,x%,y%,cl%,tour%,niveau%

dim DerCazJ%

InitCazs()
scene2d 1 : width 1,700 : height 1,600 : top 1,0 : left 1,0 : file_load 1,"fond.bmp"
InitPions()
Label Click,niv : show 0 : OFF_MOUSE_DOWN 1
Aide() : gosub niv
END
rem ======================================================================' Aide
SUB Aide()
DIM_LOCAL a$
  APPLICATION_TITLE "Règles du jeu PUISSANCE 4"
  a$="Votre couleur de pion est jaune, les rouges sont pilotés par l'ordinateur."+chr$(13)
  a$=a$+"Le but du jeu est d'aligner 4 pions en horizontal, vertical ou diagonale."+chr$(13)+chr$(13)
  a$=a$+"Pour jouer: cliquez dans une colonne après que le pion rouge soit en place."+chr$(13)
  MESSAGE a$
END_SUB
rem ===================================================================' Niveaux
niv:
'  caption 0,"PUISSANCE 4 * Niveau "+str$(niveau%)
 ' mise en place de la grille
  nsp%=nsp%+1 : sprite nsp% : sprite_file_load nsp%,"Grille.bmp" : sprite_position nsp%,0,-611
  for n%=-611 to 0
      sprite_position nsp%,0,n%
  next n%
 ' premier tour
  DownPionInCase(1,39) : TourJaune()
RETURN
rem ================================================================' Tour Rouge
SUB TourRouge()
    dim_local i%,nv%
' priorité controle vertical
    Caz%=0: CtrlV("J")
    if Caz%<>0
      SearhFirstOpenPion("R"):' Pion% de la couleur
      DownPionInCase(pion%,Caz%)
      if tour%>6
          ControleVictoires("R")
      end_if
      TourJaune() : exit_sub
    end_if
' ensuite controle horizontal
    Caz%=0: CtrlH("J")
    if Caz%<>0
      SearhFirstOpenPion("R"):' Pion% de la couleur
      DownPionInCase(pion%,Caz%)
      if tour%>6
          ControleVictoires("R")
      end_if
      TourJaune() : exit_sub
    end_if
' jeu aléatoire
    n%=0: while n%=0 or n%>2 : n%=rnd(3) : end_while
    niveau%=n%

    if niveau%=1 then nv%=1
    if niveau%=2 then nv%=2
    if niveau%=1
      n%=1
    end_if
    if niveau%=2
      if n%=5 or n%=3 or n%=2 or n%=1 : n%=2 : else : n%=1 : end_if
    end_if
    Caz%=0
    if n%=1 then SearchFirstOpenCase(cl%):' Caz%  remarque cl% est la dernière colonne joué par l'utilisateur
    if n%=2 then RetourneCazLibreAutour():' Caz%
    if Caz%<>0
      SearhFirstOpenPion("R"):' Pion% de la couleur
      DownPionInCase(pion%,Caz%)
    else
      SearchRearFirstOpenCase()
      if Caz%=0 then message "Caz%=0" : stop : terminate
      SearhFirstOpenPion("R"):' Pion% de la couleur
      DownPionInCase(pion%,Caz%)
    end_if
    Caz%=0
    if tour%>6
      ControleVictoires("R")
    end_if
    TourJaune()
END_SUB

SUB RetourneCazLibreAutour()
    dim_local C%,dcHG%,dcHD%,dcH%,r%,co%
    Caz%=0
    dcHG%=DerCazJ%-1
    if dcHG%<1 or dcHG%=7 or dcHG%=14 or dcHG%=21 or dcHG%=28 or dcHG%=35 or dcHG%=42 then dcHG%=0
    dcHD%=DerCazJ%+1
    if dcHD%>42 or dcHD%=8 or dcHD%=15 or dcHD%=22 or dcHD%=29 or dcHD%=36 or dcHD%=43 then dcHD%=0
    dcH%=DerCazJ%-7
    if dcH%<8 then dcH%=0
    clear Dlist1%
    if dcHG%<>0
      if EtatCase%(dcHG%)=0 then item_add Dlist1%,str$(dcHG%)
    end_if
    if dcHD%<>0
      if EtatCase%(dcHD%)=0 then item_add Dlist1%,str$(dcHD%)
    end_if
    if dcH%<>0
      if EtatCase%(dcH%)=0 then item_add Dlist1%,str$(dcH%)
    end_if
    if count(Dlist1%)>0
      r%=0 : while r%=0 or r%>count(Dlist1%) : r%=rnd(count(Dlist1%)) : end_while
    else
      Caz%=0 : exit_sub
    end_if
    C%=val(item_read$(Dlist1%,r%))
    co%=Col%(C%)
    SearchFirstOpenCase(co%)
END_SUB

SUB ControleColonne(co%)
    dim_local li%,cz%
    for li%=1 to 6
        for cz%=1 to 42
            if Col%(cz%)=co% and Lig%(cz%)=li%
              if EtatCase%(cz%)=0 then Caz%=cz%
            end_if
        next cz%
    next li%
END_SUB

SUB DangerH(CouleurV$)
    dim_local c%,c1%,c2%,p1%,p2%
' for n%=1 to count(Dlist1%)
'    a$=item_read$(Dlist1%,n%) : message a$
' next n%
' verfier les cases en bout d'alignement
    c1%=0 : c2%=0 : ncz%=0 : Caz%=0
  ' case avant l'alignement
    a$=item_read$(Dlist1%,1) : c%=(val(a$)-1)
    if EtatCase%(c%)=0 then c1%=c%
  ' case après l'alignement
    a$=item_read$(Dlist1%,count(Dlist1%)) : c%=(val(a$)+1)
    if EtatCase%(c%)=0 then c2%=c%
  ' si les 2 cases en bout sont de la couleur adverse
  ' c'est que ce controle à déja été traité
    p1%=EtatCase%(c1%) : p2%=EtatCase%(c2%)
    if CouleurV$="J" : CouleurV$="R" : else : CouleurV$="J" : end_if
    if p1%<>0
      if ColorPion$(p1%)=CouleurV$ then c1%=0
    else
      if p2%<>0
          if ColorPion$(p2%)=CouleurV$ then c2%=0
      end_if
    end_if
    if c1%=0 and c2%=0 then Caz%=0 : exit_sub
    ChoisirUneCase(c1%,c2%):' ncz%
    if ncz%<>0
      SearchFirstOpenCase(Col%(ncz%)):' Caz%
      if Caz%<>ncz% then Caz%=0
    else
      Caz%=0
    end_if
END_SUB

SUB ChoisirUneCase(cz1%,cz2%)
    dim_local r%
    if cz1%<>0 and cz2%<>0
      ' tirage au sort d'une case si libre
      r%=0: while r%=0 or r%>2 : r%=rnd(3) : end_while
      if r%=1 and EtatCase%(cz1%)=0 then ncz%=cz1%
      if r%=2 and EtatCase%(cz2%)=0 then ncz%=cz2%
    else
      if cz1%<>0 and EtatCase%(cz1%)=0 then ncz%=cz1%
      if cz2%<>0 and EtatCase%(cz2%)=0 then ncz%=cz2%
    end_if
END_SUB

SUB CtrlH(Couleur$)
    ncz%=0 : clear Dlist1%
    Dim_local cz%,li%,co%,nb%
  ' 1) contrôle Horizontale
    for li%=1 to 5
        for co%=1 to 5
            RetourneCase(co%,li%):' ncz%
            if EtatCase%(ncz%)<>0
              Pion%=EtatCase%(ncz%)
              if ColorPion$(Pion%)=Couleur$
                  item_add Dlist1%,ncz%
                  for nb%=1 to 2
                      ncz%=ncz%+1
                      if EtatCase%(ncz%)<>0
                        Pion%=EtatCase%(ncz%)
                        if ColorPion$(Pion%)=Couleur$
                            item_add Dlist1%,ncz%
                        end_if
                      end_if
                    next nb%
                    if count(Dlist1%)>2
                      DangerH(Couleur$): ' Caz%
                      if Caz%<>0 then exit_sub
                    else
                      clear Dlist1% : exit_for
                    end_if
              end_if
            end_if
        next co%
    next li%
END_SUB
SUB CtrlV(Couleur$)
  ' 2) contrôle Verticale
    ncz%=0 : clear Dlist1%
    Dim_local cz%,li%,co%,nb%
    for co%=1 to 7
        for li%=1 to 4
            RetourneCase(co%,li%):' ncz%
            if EtatCase%(ncz%)<>0
              Pion%=EtatCase%(ncz%)
              if ColorPion$(Pion%)=Couleur$
                  item_add Dlist1%,ncz%
                    for nb%=1 to 2
                        ncz%=ncz%+7
                        if EtatCase%(ncz%)<>0
                          Pion%=EtatCase%(ncz%)
                          if ColorPion$(Pion%)=Couleur$
                              item_add Dlist1%,ncz%
                          end_if
                        end_if
                    next nb%
                    if count(Dlist1%)>2
                      DangerV(Couleur$): ' Caz%
                      if Caz%<>0 then exit_sub
                    else
                      clear Dlist1% : exit_for
                    end_if
              end_if
            end_if
        next li%
    next co%
END_SUB
SUB DangerV(CouleurV$)
    dim_local c1%,p1%
  ' case dessus l'alignement
    a$=item_read$(Dlist1%,1) : c1%=(val(a$)-7)
    p1%=EtatCase%(c1%)
    if CouleurV$="J" : CouleurV$="R" : else : CouleurV$="J" : end_if
    if EtatCase%(c1%)<>0
      if ColorPion$(p1%)=CouleurV$ then c1%=0
    end_if
    if c1%=0
      Caz%=0 : exit_sub
    else
      if EtatCase%(c1%)=0
          Caz%=c1%
      else
          Caz%=0
      end_if
    end_if
END_SUB

rem ================================================================' Tour Jaune
SUB TourJaune()
    caz%=0 : ON_MOUSE_DOWN 1,Click
END_SUB
rem ================================================================
Click:
    x%=mouse_x_position(1) : y%=mouse_y_position(1)
    RetourneColonne(x%,y%):' cl%
    if cl%=0 then message "Vous devez cliquez dans une colonne" : return
    OFF_MOUSE_DOWN 1
    SearchFirstOpenCase(cl%):' Caz%
    ' faire une vérif reste caz
    if Caz%=0 then message "Vous avez cliqué dans une colonne Pleine ! recommencez !" : TourJaune() : return
    SearhFirstOpenPion("J"):' Pion% de la couleur
' message "Pion="+str$(Pion%)+" EtatPion%="+str$(EtatPion%(Pion%))
    if Pion%=0 then message "Pion%=0" : stop : terminate
    DownPionInCase(pion%,Caz%):' mise à jour Etat de la case et Etat du pion
    if tour%>6
      ControleVictoires("J")
    end_if
    DerCazJ%=Caz% : Caz%=0 : TourRouge()
RETURN
rem ===============================================' ControleVictoires(Couleur$)
SUB ControleVictoires(Couleur$)
    Dim_local cz%,li%,co%,nb%
    clear Dlist1%
  ' 1) contrôle Horizontale
    for li%=1 to 6
        for co%=1 to 4
            RetourneCase(co%,li%):' ncz%
            if EtatCase%(ncz%)<>0
              Pion%=EtatCase%(ncz%)
              if ColorPion$(Pion%)=Couleur$
                  item_add Dlist1%,ncz%
                    for nb%=1 to 3
                        ncz%=ncz%+1
                        if EtatCase%(ncz%)<>0
                          Pion%=EtatCase%(ncz%)
                          if ColorPion$(Pion%)=Couleur$
                              item_add Dlist1%,ncz%
                          end_if
                        end_if
                    next nb%
                    if count(Dlist1%)>3 and Couleur$="J" then VictoireJ() : exit_sub
                    if count(Dlist1%)>3 and Couleur$="R" then VictoireR() : exit_sub
                    if count(Dlist1%)<4 then clear Dlist1% :' exit_for
              end_if
            end_if
        next co%
    next li%
    if count(Dlist1%)<4
    ' 2) contrôle Verticale
      clear Dlist1%
      for co%=1 to 7
          for li%=1 to 3
              RetourneCase(co%,li%):' ncz%
              if EtatCase%(ncz%)<>0
                  Pion%=EtatCase%(ncz%)
                  if ColorPion$(Pion%)=Couleur$
                    item_add Dlist1%,ncz%
                      for nb%=1 to 3
                          ncz%=ncz%+7
                          if EtatCase%(ncz%)<>0
                              Pion%=EtatCase%(ncz%)
                              if ColorPion$(Pion%)=Couleur$
                                item_add Dlist1%,ncz%
                              end_if
                          end_if
                      next nb%
                      if count(Dlist1%)>3 and Couleur$="J" then VictoireJ() : exit_sub
                      if count(Dlist1%)>3 and Couleur$="R" then VictoireR() : exit_sub
                      if count(Dlist1%)<4 then clear Dlist1% :' exit_for
                  end_if
              end_if
          next li%
      next co%
    end_if
    if count(Dlist1%)<4
    ' 3) contrôle Diagonale => droite
      clear Dlist1%
      for co%=1 to 4
          for li%=1 to 3
              RetourneCase(co%,li%):' ncz%
              if EtatCase%(ncz%)<>0
                  Pion%=EtatCase%(ncz%)
                  if ColorPion$(Pion%)=Couleur$
                    item_add Dlist1%,ncz%
                      for nb%=1 to 3
                          ncz%=ncz%+8
                          if EtatCase%(ncz%)<>0
                              Pion%=EtatCase%(ncz%)
                              if ColorPion$(Pion%)=Couleur$
                                item_add Dlist1%,ncz%
                              end_if
                          end_if
                      next nb%
                      if count(Dlist1%)>3 and Couleur$="J" then VictoireJ() : exit_sub
                      if count(Dlist1%)>3 and Couleur$="R" then VictoireR() : exit_sub
                      if count(Dlist1%)<4 then clear Dlist1% :' exit_for
                  end_if
              end_if
          next li%
      next co%
    end_if
    if count(Dlist1%)<4
    ' 3) contrôle Diagonale => gauche
      clear Dlist1%
      for co%=4 to 7
          for li%=1 to 3
              RetourneCase(co%,li%):' ncz%
              if EtatCase%(ncz%)<>0
                  Pion%=EtatCase%(ncz%)
                  if ColorPion$(Pion%)=Couleur$
                    item_add Dlist1%,ncz%
                      for nb%=1 to 3
                          ncz%=ncz%+6
                          if EtatCase%(ncz%)<>0
                              Pion%=EtatCase%(ncz%)
                              if ColorPion$(Pion%)=Couleur$
                                item_add Dlist1%,ncz%
                              end_if
                          end_if
                      next nb%
                      if count(Dlist1%)>3 and Couleur$="J" then VictoireJ() : exit_sub
                      if count(Dlist1%)>3 and Couleur$="R" then VictoireR() : exit_sub
                      if count(Dlist1%)<4 then clear Dlist1% :' exit_for
                  end_if
              end_if
          next li%
      next co%
    end_if
END_SUB
SUB RetourneCase(column%,line%)
    dim_local cz% : ncz%=0
    for cz%=1 to Nbcaz%
        if col%(cz%)=column% and lig%(cz%)=line% then ncz%=cz% : exit_for
    next cz%
END_SUB
rem ============================================================================
SUB DownPionInCase(Numpion%,NumCaz%)
    if Numpion%=42 then message "Match nul !" : terminate
    if EtatPion%(Numpion%)<>0 then message "Pion déjà joué" : stop : terminate
    if EtatCase%(NumCaz%)<>0 then message "Cette case n'est pas libre =>"+str$(NumCaz%)+" Etat="+str$(EtatCase%(NumCaz%)) : stop : terminate
    tour%=tour%+1
    dim_local i%,lx%,ly%
    lx%=Pos_X%(NumCaz%) : ly%=Pos_Y%(NumCaz%)
    for i%=-101 to ly% step 2
        sprite_position Numpion%,lx%,i%+1
    next i%
    EtatPion%(Numpion%)=NumCaz%
    EtatCase%(NumCaz%)=Numpion%
' message "Case="+str$(NumCaz%)+" Etat="+str$(EtatCase%(NumCaz%))+" / Pion="+str$(Numpion%)+" EtatPion="+str$(EtatPion%(Numpion%))
END_SUB
rem ============================================================================
SUB SearhFirstOpenPion(CouleurPion$)
    dim_local p% : Pion%=0
    for p%=1 to 42
        if CouleurPion$=ColorPion$(p%)
          if EtatPion%(p%)=0 then Pion%=p% : exit_for
        end_if
    next p%
END_SUB
SUB SearchFirstOpenCase(colonne%)
    dim_local cz% : Caz%=0
    for cz%=42 to 1 step -1
'    for cz%=1 to 42
        if Col%(cz%)=colonne%
          if EtatCase%(cz%)=0 then Caz%=cz% : exit_for
        end_if
    next cz%
END_SUB
SUB SearchRearFirstOpenCase()
    dim_local cz% : Caz%=0
    for cz%=42 to 1 step -1
        if EtatCase%(cz%)=0 then Caz%=cz% : exit_for
    next cz%
END_SUB
SUB RetourneColonne(lx%,ly%)
    dim_local minix%,maxix%,i%
    cl%=0 : minix%=4 : maxix%=94
    for i%=1 to 7
        if lx%>minix% and lx%<maxix% then cl%=i% : exit_for
        minix%=minix%+100 : maxix%=maxix%+100
    next i%
END_SUB
rem =================================================================' Victoires
SUB VictoireJ()
    OFF_MOUSE_DOWN 1
    dim_local cz%,c%
    for c%=1 to count(Dlist1%)
        a$=item_read$(Dlist1%,c%) : cz%=val(a$) : Pion%=EtatCase%(cz%)
        sprite_file_load Pion%,"jauneV.bmp" : sprite_position Pion%,Pos_X%(cz%),Pos_Y%(cz%) : pause 500
    next c%
    message "Bravo ! Vous avez gagné cette partie"
    terminate
END_SUB
SUB VictoireR()
    OFF_MOUSE_DOWN 1
    dim_local cz%,c%
    for c%=1 to count(Dlist1%)
        a$=item_read$(Dlist1%,c%) : cz%=val(a$) : Pion%=EtatCase%(cz%)
        sprite_file_load Pion%,"RougeV.bmp" : sprite_position Pion%,Pos_X%(cz%),Pos_Y%(cz%) : pause 500
    next c%
    message "Dommage ! Vous avez perdu cette partie"
    terminate
END_SUB
rem ============================================================================
SUB InitPions()
    dim_local p%,lx%,ly%
    lx%=-101 : ly%=-101 : nsp%=0
    for p%=1 to 21
        nsp%=nsp%+1
        EtatPion%(p%)=0 : ColorPion$(p%)="R" : sprite nsp% : sprite_file_load nsp%,"rouge.bmp" : sprite_position nsp%,lx%,ly%
    next p%
    for p%=22 to 42
        nsp%=nsp%+1
        EtatPion%(p%)=0 : ColorPion$(p%)="J" : sprite nsp% : sprite_file_load nsp%,"jaune.bmp" : sprite_position nsp%,lx%,ly%
    next p%
END_SUB

SUB InitCazs()
    dim_local c%,l%,lx%,ly%,cz%
    lx%=-101:ly%=-100
    for l%=1 to 6
        ly%=ly%+100
        for c%=1 to 7
            cz%=cz%+1 : lx%=lx%+100
            EtatCase%(cz%)=0 : Pos_X%(cz%)=lx% : Pos_Y%(cz%)=ly% : Col%(cz%)=c% : Lig%(cz%)=l%
        next c%
        lx%=-101
    next l%
END_SUB

Ce code fonctionne bien, tu vas y trouver une approche de contrôle du jeu par l'ordinateur.
Voire en particulier les SUB(s) CtrlH("J") et CtrlV("J").

Cela peut t'aider dans ta recherche.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 29 Jan 2017 - 16:24

J' ai modifié une bricole ou deux, ajouter un petit générique
et hop voilà la vs13 sur mon webdav.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Dim 29 Jan 2017 - 18:04

Salut à tous,

@Ygeronimi,
Il y a un problème avec l'enregistrement des joueurs, ça ne marche plus (on ne peut pas enregistrer, ni jouer).
Précision: chez toi, ça marche peut_être car le fichier existe, essai sans le fichier.


Sinon essai de rempalcer la sub generique() par celle-ci:
Code:

sub generique()
    for n%=400 to 0 step -2
        pause 1 : sprite_y_position 44,n%
    next n%
    pause 300
end_sub

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 29 Jan 2017 - 21:22

C' est réparé !
Embarassed  un oubli de ma part en combinant les deux fenêtres.

Le webdav est à jour.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Puissance 4 en 2D   Dim 29 Jan 2017 - 22:02

Le weekend est fini et je n'ai pas eu le temps de regarder.
L'idée de ma méthode était simple:
Sauvegarder la grille au début du tour de l'ordi
Tester toutes les colonnes et regarder si l'ordi peut gagner.
Si oui, l'ordi joue dans cette colonne
Ensuite, il essaye de voir si son adversaire peut gagner en jouant dans chacune des colonnes
Si oui, l'ordi joue dans cette colonne
Le 3eme test est de vérifier si on joue dans un colonne si l'adversaire gagnera en jouant au dessus
donc on fait la simulation de l'insertion d'un pion puis d'un pion de l'adversaire et on vérifie s'il a gagné.
Si c'est le cas, on marque la colonne comme interdite en l'enregistrant dans un tableau ou une dliste si tu préfères
Si tu as une dliste des colonnes autorisées à jouer, tu retires simplement cette colonne de la liste
Enfin tu regardes combien il te reste de colonnes dans lesquelles tu peux jouer et tu fais un tirage aléatoire pour savoir où jouer.

J'espère que ça t'aidera à faire ton IA. J'avais commencé à le coder mais j'ai eu un méchant plantage... j'ai perdu le code, mais après tout ce n'est pas plus mal. Tu vas pouvoir le faire à ta sauce.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 7:50

@Ygeronimi,
C'est ok, je vais pouvoir y ajouter l'IA si je parviens à la faire.... drunken

@Jicehel,
Pas de problème, je prépare ma tambouille Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 9:21

@Ygeronimi,

Il reste un oubli au sous-programme Close0.
Si "bourrin" quitte dès la première fois sans jouer le dossier temporaire n'existant pas on a une erreur.
Heu... c'est pas moi, c'est bourrin....  Embarassed

J'ai contourné comme ceci:
Code:
  if right$(Temp$,1)<>"\"
      if dir_exists(Temp$)=1 then dir_remove Temp$
   end_if

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: Re   Lun 30 Jan 2017 - 11:00

Heu... C est super bourrin alors, car le dossier temp se crée des l ouverture de l appli.
Les erreurs viennent a la création quand le jeu a plante et que l on n est ni sorti par le bouton, ni par la croix, le dossier n'est pas supprimé.
Si tu as pris la dernière version et qu'il restait le dossier temp  de la précédente,
Il devait manquer des images...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 12:28

vs 1.31

le dossier temp est détruit et reconstruit si il est présent au lancement du jeu.
Cela évitera les résidus de versions antérieures et de plantage.
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 13:43

@Ygeronimi,
Je regarderais, mais plus tard car on a un problème avec le forum !

@Jack,
Il y a encore un détournement de certains mots des textes publiés sur ce forum.

Je viens faire un tour sur ce sujet du forum et je m'aperçois que certains mots de nos interventions sont en bleus et dirigent vers des liens.

voici des copies d'écran:



-----------------------------------------------------------------------------------------------



------------------------------------------------------------------------------------------------



--------------------------------------------------------------------------------------------------

Cela devient pénible et inquiétant.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: RE   Lun 30 Jan 2017 - 16:03

Je serai toi je ferai un nettoyage en profondeur et j' activerai add_b... et ghost...
car je n' ai pas ce souci chez moi.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 16:19

Super ! Bravo les gars ! cheers

Votre puissance 4 en 2D collégial avance à grand pas.

Il est super !

Bravo pour le design !

Souhait : alterner celui qui commence la partie. Embarassed
Quelques petits bugs de remarqués, mais c'est probablement normal, travaux en cours oblige !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 16:31

Des bugs !
affraid
où çà des bugs ?!...


Parles, tu en as trop dit ou pas assez.
pirat
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 16:48

Désolé, je ne veux blesser personne.Embarassed
Je sais, oh combien la critique est facile ! Crying or Very sad

Parfois, impossible de relancer le programme sans détruire le fichier c:\temp


Autre petit bug : la "butée" du choix de niveau flèche haute ne fonctionne pas toujours... Clic souris trop rapide peut-être ?
Après "Aléatoire", j'arrive parfois à "Moyen"

Je fais d'autres essais...

Edit : je suis maudit, je pense plutôt à l'éditeur qui ferait des siennes...

[/url]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 17:25

Tu ne blesses personne Marc.
Mais, si on me dit y a un bug sans me dire lequel, je ne suis pas plus avancé.

Bon, pour le premier, je pense que l' on essai de recréer le dossier avant qu' il ait disparu corps et âme.
je vais mettre une pause 1000 soit 1 seconde, cela devrait suffire.

Pour le deuxième, je pense que c' est du à un double click intempestif.
Je vais voir comment je peux faire.

Pour le troisième, voir Jack.
Panoramic-editor est parti en vrille.


Dernière édition par ygeronimi le Lun 30 Jan 2017 - 19:02, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 17:32

Oups !...j' ai compris d' où venait le bug n°1.
Lorsque tu ouvres le fichier *.bas dans l' éditeur, re-enregistres le dans son dossier.
Sinon, le dossier courrant est le dossier Panoramic et là, il ne retrouve pas le zip pour extraire les images
dans le dossier temp$.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 18:18

Je crois que j' ai résolu le problème des niveaux.
Je mets le source ici, vu que le reste n' a pas changé.
Puissance4 vs 1.31:
 
Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 18:29

Nouvelle version testée avec succès ! Very Happy

Bravo et merci Ygeronimi ! cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 19:05

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Marc

avatar

Nombre de messages : 865
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 19:09

Idée / suggestion :
Si l’on clique sur l’icône « Aide », la fenêtre AIDE apparaît.
Si l’on clique une deuxième fois sur l’icône aide, la fenêtre principale se met en avant plan et il devient impossible de visualiser une nouvelle fois l’aide sans déplacer la fenêtre principale.
Même remarque pour les scores.

Je suggère de modifier la ligne 477 :
show fhelp%  =>  HIDE fhelp% : show fhelp%

et la ligne 405 :
show fscore%  =>  HIDE fscore% : show fscore%

Le fait de cacher la fenêtre et de la ré-ouvrir, la fait revenir en premier plan.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 20:37

@Ygeronimi,
Pour AdBlock et Ghostery, il tournent en permanence sur mon PC.
Par contre je soupçonne "Amazon" qui réussi à me coller un favoris dans Chrome sans que je n'ai rien demandé.
J' ai fait une chasse au sorcière, on verra bien...

Pour revenir au bugs de ton programme:
Bon... ben... y'en a ! C'est ça la programmation ! Wink
Mais globalement, une fois les joueurs enregistrés, ça fonctionne.

J'ai avancé sur mon "IA", il me reste un un petit bug à régler. Mais j'ai le PC d'un ami, qui fait des siennes.
Et comme c'est un ami, je le fait passer en priorité. Donc je reprendrai Puissance 4 dès que j'aurai réparé son PC.

@Marc,
Merci pour l'intérêt que tu portes à ce sujet, et à d'autre d'ailleurs, n'hésite pas à intervenir. Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Lun 30 Jan 2017 - 20:37

doublon ?


Dernière édition par Jean Claude le Lun 30 Jan 2017 - 21:17, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8083
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 30 Jan 2017 - 21:02

J' ai bidouillé, voila le source :
Puissance4 vs1.32:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Puissance 4 en 2D   

Revenir en haut Aller en bas
 
Puissance 4 en 2D
Revenir en haut 
Page 3 sur 4Aller à la page : Précédent  1, 2, 3, 4  Suivant

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