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 : 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: Puissance 4 en 2D   Mar 24 Jan 2017 - 12:05

Bonjour à tous,

Jicehel m'ayant mis l'eau à la bouche, j'ai réalisé une version en 2D.
Vous trouverez sur mon Webdev un Zip "Puissance_4_2D" contenant les images, le code et un exe.

A priori il n'y a plus de bugs, mais si vous en découvrez n'hésitez pas à les signaler.

Amusez-vous bien !

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

avatar

Nombre de messages : 5993
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Puissance 4 en 2D   Mar 24 Jan 2017 - 12:36

BRAVO Jean Claude.
Testé --- > OK.
Suggestion :
Pour accélérer la « chute » des pions, j’ai ajouté un STEP 4 (ou plus) en ligne 257
Code:

for i%=-101 to ly%  step 4
        sprite_position Numpion%,lx%,i%
    next i%
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Mar 24 Jan 2017 - 13:01

Merci Papydall pour ton test.

Step 4 , me parait un peu rapide mais step 2 est pas mal. Dans les 2 cas il y a un problème de centrage des pions rouges.
Pour palier à cet inconvénient il faut ajouter 1Px pour le positionnement sur l'axe y.

Code:
   for i%=-101 to ly% step 2
        sprite_position Numpion%,lx%,i%+1
    next i%

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   Mar 24 Jan 2017 - 13:20

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

avatar

Nombre de messages : 1761
Date d'inscription : 13/09/2009

MessageSujet: +++   Mar 24 Jan 2017 - 16:52

Eh, superbe, ce jeu !
En plus, on gagne facilement,
ce n'est pas trop stressant,
(enfin, tout au moins au niveau 2) !
cheers alien jocolor
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Puissance 4 en 2D   Mar 24 Jan 2017 - 17:25

Je ne suis pas très joueur, mais je reconnais que ton jeu est très bien Jean Claude !

Une seule (petite) critique: c'est dommage qu'on ait besoin de ressources externes (les figures bmp), d'autant plus qu'elles sont très simples et faciles à fabriquer à chaque lancement du programme, si elles n'existent pas.
Mais c'est un détail.
Je suis aussi de l'avis de papydall, je vais accélérer un petit peu.
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   Mar 24 Jan 2017 - 17:40

@JL35
Ben, le problème c'est que ce sont des sprites, il y un problème de transparence.
Surtout la grille qui est le dernier sprite créé, les pions passent derrière cette grille.
Pour la vitesse, j'ai adopté step 2.
j'ai crée une icone pour le raccourci.
Vous trouverez tous ça sur mon Webdev (c'est à jour).

@JJN4,
Essai le niveau 3, c'est un peu plus difficile.
Je vais faire un niveau 4 pour voir ce que ça donne, ce sera pour ce soir ou demain.

Merci à vous tous.

A+


Dernière édition par Jean Claude le Mar 24 Jan 2017 - 18:08, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Puissance 4 en 2D   Mar 24 Jan 2017 - 17:45

Où est le problème avec les sprites ???
ce sont des images classiques, avec deux couleurs dont l'une est le noir (0,0,0), il suffit de les dessiner dans un picture et de les sauvegarder en bmp...
Quelque chose comme ça:
Code:
SUB Crefig()
  DIM_LOCAL rt$,p%,r%,x%,y%,i%,j%
  rt$ = "C:\TEMP\"
  p% = 950: PICTURE p%: HIDE p%: WIDTH p%,700: HEIGHT p%,600: COLOR p%,255,255,255
  FILE_SAVE p%,rt$+"fond.bmp"
  COLOR p%,0,0,255: 2D_TARGET_IS p%
  r% = 45: y% = 50: 2D_FILL_COLOR 0,0,0
  FOR j% = 0 TO 5
      x% = 50
      FOR i% = 0 TO 6: 2D_CIRCLE x%,y%,r%: x% = x%+100: NEXT i%
      y% = y%+100
  NEXT j%
  FILE_SAVE p%,rt$+"Grille.bmp"
  WIDTH p%,100: HEIGHT p%,100: COLOR p%,0,0,0
  2D_FILL_COLOR 250,200,0: 2D_CIRCLE 50,50,r%: FILE_SAVE p%,rt$+"jaune.bmp"
  2D_FILL_COLOR 34,177,76: 2D_CIRCLE 50,50,r%: FILE_SAVE p%,rt$+"jauneV.bmp"
  2D_FILL_COLOR 255,0,0: 2D_CIRCLE 50,50,r%: FILE_SAVE p%,rt$+"rouge.bmp"
  2D_FILL_COLOR 249,115,120: 2D_CIRCLE 50,50,r%: FILE_SAVE p%,rt$+"rougeV.bmp"
  2D_TARGET_IS 0: DELETE p%
END_SUB
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   Mar 24 Jan 2017 - 18:21

@JL35,
OUI mais dans ce cas, il faut un picture par pions, donc c'est plus simple de faire un sprite, non Question Question Question
PS: je viens de voir ton code, je vais regarder.
RE PS: effectivement ça marche aussi, ça va que les images sont simples. Very Happy

@tous,
Je viens de recharger le Webdev. Cette fois il y a un niveau 4 Super difficile (voir impossible de gagner).
Je n'y suis jamais parvenu...
Si l'un d'entre vous y parvient, alors, je veux une preuve. Very Happy

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   Mar 24 Jan 2017 - 18:49

bounce Grrrr... Match nul !
Preuve:
 
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   Mar 24 Jan 2017 - 20:11

Bravo Ygeronimi,

à ce niveau (4), je n'ai jamais atteint un match nul.

Personnellement, je crois qu'à ce niveau c'est impossible de gagner car l'ordinateur joue systématiquement au dessus du dernier pion jaune, bloquant ainsi toutes possibilités. Mais quand on clique en haut d'une colonne, il doit jouer dans une autre: c'est peut-être là qu'on pourrait le coincer.

A+
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   Mar 24 Jan 2017 - 21:10

Bonjour à tous !

Merci pour ce jeu !



Gagné ! Laughing

EDIT : erreur ligne 45
Citation :
if val(a$)<1 or val(a$)>4 then message "Attendu: un chiffre de 1 à 3" : goto niv

correction : "Attendu un chiffre de 1 à 4" Wink

2ème EDIT :

ligne 30 :
Citation :
a$=a$+"Le but du jeu est d'aligner 4 pions en horizontal, vertical ou diagonal."+chr$(13
Correction : ... diagonale...

ligne 39 :
Citation :
4 => ...Super Difficile (voir impossible)...
Correction : ...Super Difficile (voire impossible)...


Dernière édition par Marc37 le Mar 24 Jan 2017 - 21:57, é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   Mar 24 Jan 2017 - 21:20

cheers cheers cheers 
Je l' ai eu !!!!
La preuve:
 


Bravo Marc37, tu m' as devancé.
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   Mar 24 Jan 2017 - 23:21

Jolie adaptation. Bravo Jean-Claude Wink
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   Mer 25 Jan 2017 - 1:55

Je t'ais mis un petit zip avec des images pour améliorer les graphismes (selon moi)
https://www.fichier-zip.com/2017/01/25/puissance-4-2d/
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   Mer 25 Jan 2017 - 8:06

Bon, hé bien c'était sans compter sur la perspicacité des Panoramiciens !  Very Happy  cheers
Bravo à Marc et Ygeronimi !

Je viens de gagner cette partie (en vous copiant  Embarassed ) et je sais pourquoi les rouges tombent dans le piège. Mais, maintenant ça pose un problème: c'est devenu plus facile en niveau 4 que pour les autres niveaux.
Mais j'ai dans mes cartons une autre approche, dont il faut que je corrige les bugs. Je ne vous en dit pas plus pour le moment.

@Marc,
Je corrige les vilaines fôotes... confused

@Jicehel,
Je valide le look de tes pions, il seront dans la prochaine version. Very Happy

A bientôt.
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   Mer 25 Jan 2017 - 12:10

Je viens de déposer une nouvelle version sur mon Webdev.

Il n'y a plus de niveau !

J'ai fait une application et ,du coup, il n'y a plus de dossier. Vous charger directement l'exécutable sur votre bureau et normalement les images sont intégrée à l'exécutable.

Dite-moi si ça fonctionne.

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

avatar

Nombre de messages : 5993
Age : 68
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Puissance 4 en 2D   Mer 25 Jan 2017 - 13:19

ça fonctionne !:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

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

MessageSujet: Re: Puissance 4 en 2D   Mer 25 Jan 2017 - 14:10

Peux_tu me confirmer que tu as enregistré l'exe en dehors du dossier initiale.
Ce qui confirmerait qu'on a pas besoin de publier les images avec l'application.

C'est pour faire plaisir à JL35. Very Happy

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   Mer 25 Jan 2017 - 14:14

Comme tout le monde y va de sa petite touche personnelle sur ce jeu,
je n' ai pas pu m' empêché d' y mettre mon nez dedans.
Ceci dit c' est une "adaptation" de la version précédente de Jean Claude.
Adaptation entre guillemets car je n' ai fait de modifs que pour l'intégrer à une interface à ma sauce.

Vous la trouverez sur mon webdav:
PUISSANCE4_CustomYG.zip

Spoiler:
 

Bon, c' est le mauvais exemple...celle là je l' ai perdue... Embarassed

Edit : je vais regarder ta dernière version Jean Claude. Sans niveaux, elle devrait être plus facile à customiser... Wink
Mais on peut y ajouter une mémoire des scores avec le pourcentage de réussite... Laughing

En plus, il me reste à voir le bouton "Nouvelle partie" et celui "Paramètres"
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   Mer 25 Jan 2017 - 15:13

Voilà un travail collaboratif des plus intéressant. On va voir ce que ça donne avec les dernière modif de Jean-Claude le tout intégré à l'interface d'Ygeronimi. Ca promet. Je regarde ça ce soir Wink
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 6326
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Puissance 4 en 2D   Mer 25 Jan 2017 - 17:02

@Jean Claude

Les images sont bien intégrées à l'exécutable, je ne sais pas comment tu as fait, mon idée à moi c'était de dessiner soi-même les images (qui étaient très simples) par programme, alors que là tu as pris des images de pions assez sophistiquées, je ne pense pas que ce soit le programme qui les ait dessinées (surtout que l'exécutable fait ~5 M) !

Néanmoins c'est joli et ça marche !
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   Mer 25 Jan 2017 - 17:12

@ Jicehel,

Pour la colaboration, j' ai bien peur qu' elle s' arrête là.
Le dernier code de Jean Claude est pris dans l' exe et je n' y ai pas accès. Sad
A moins que notre ami décide de le publier... Wink
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   Mer 25 Jan 2017 - 17:14

Super, ça bouge dans les chaumières ! Very Happy

@Ygeronimi,
Je vois que tu aimes bien les jouets en bois. Wink
Je téléchargerai ton interface, mais je suis une approche différente pour la défense des pions rouges. Et comme je suis un peu bourrin coté programmation, ça va prendre un peu de temps. Razz

Pour la version "sans niveau" qui est sur le WebDev: en réalité il y a plusieurs niveaux, mais il sont sélectionnés aléatoirement, ce qui rend le jeu moins prévisible.

Je n'ai toujours pas de réponse pour
JC a écrit:
J'ai fait une application et ,du coup, il n'y a plus de dossier. Vous charger directement l'exécutable sur votre bureau et normalement les images sont intégrée à l'exécutable.

Dite-moi si ça fonctionne.
Sauf celle de Papydall, mais je voudrai être certain qu'il na pas mis l'exécutable dans un dossier qui contient les images.

Si c'est le cas, ça veut dire qu'on mettre(directement) à disposition des exécutables en 2D sans fournir les images.
Je me rappelle qu'à une époque ce b'était pas possible.

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   Mer 25 Jan 2017 - 17:17

@Ygeronimi,
Je vois que l'exécutable (Application) fonctionne.

pour le code le voici:
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%
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$
' Système d`aide du programme
  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:
    n%=0: while n%=0 or n%>5 : n%=rnd(6) : end_while
    niveau%=n%
'  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%
  ' niveau%
    if niveau%=1 then nv%=10
    if niveau%=2 then nv%=14
    if niveau%=3 then nv%=20
    if niveau%=4 then nv%=2
    if niveau%=5 then nv%=5
    n%=0: while n%=0 or n%>nv% : n%=rnd(nv%+1) : end_while
    if niveau%=1
      if n%=10 or n%=9 or n%=8 or n%=7 or n%=5 or n%=3 or n%=2 or n%=1 : n%=1 : else : n%=2 : end_if
    end_if
    if niveau%=2
      if n%=14 or n%=13 or n%=12 or n%=10 or n%=9 or n%=8 or n%=7 or n%=6 or n%=5 or n%=4 or n%=2 or n%=1 : n%=1 : else : n%=2 : end_if
    end_if
    if niveau%=3
      if n%=20 or n%=19 or n%=18 or n%=16 or n%=15 or n%=14 or n%=13 or n%=12 or n%=11 or n%=10 or n%=9 or n%=8 or n%=7 or n%=6 or n%=5 or n%=4 or n%=2 or n%=1 : n%=1 : else : n%=2 : end_if
    end_if
    if niveau%=4
      n%=1
    end_if
    if niveau%=5
      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%
    if n%=2
    ' recherche une autre colonne qui ne soit pas pleine
      for i%=1 to 7
          if i%<>cl%
              ControleColonne(i%):' Caz%
              If Caz%=0
                SearchFirstOpenCase(cl%):' Caz%
              else
                exit_for
              end_if
          end_if
      next i%
    end_if
    n%=0
    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 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

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
    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%>41 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




A+
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 1 sur 4Aller à la page : 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: