Puissance 4 à deux joueurs

Puissance 4 à deux joueurs - Delphi/Pascal - Programmation

Marsh Posté le 27-03-2006 à 14:22:55    

Bonjour,
 
Je débute en programmation. Je dois réaliser un "puissance 4" sous Turbo Pascal Windows. Le but étant de faire au plus simple, c'est à dire sans intelligence artificielle.
 
Je me suis inspiré d'un autre petit programme pour réaliser l'initialistaion et l'affichage (simpliste) du tableau à 6 lignes et 7 colonnes (je travaille avec un tableau 6*7 et un autre tableau à une ligne pour travailler sur les lignes).
 
Bref, j'ai besoin de votre aide car je bloque sur la suite (pour gérer les "deux joueurs", réaliser la verification du coup (si la colonne choisie était jouable) avec la "fonction valable" et enfin arreter le jeu une fois 4 pions (X ou O) alignés , etc...  
 
 
Voici ce que j'ai écrit :

 
program puissance_4;
 
uses wincrt;
 
type tjeu= array[1..7,1..6]of integer;
     tligne= array[1..7]of integer;
 
const vide   =    0 ;  {emplacement vide}
      jouable=    1 ;  {emplacement jouable}
      joueur1=    2 ;  {case avec un pion du joueur 1}
      joueur2=    3 ;  {case avec un pion du joueur 2}
 
var Tj:tjeu;
    Tl:tligne;
 
 
{initialisation du tableau de jeu et mise a 1 de la ligne du bas}
procedure initialisation;
 
var i,j: integer;
 
begin
     for i:= 1 to 7
     do for j:=1 to 6
     do Tl[i]:=1;
        Tj[i,j]:=0;
end;
 
 
{affichage du plateau de jeu}
procedure affichage (var Tj: tjeu);
var i, j: integer;
    begin;
    gotoxy (1, 1);
    writeln;
    for j := 1 to 6 do
 
             begin;
             write ('              ');
             for i := 1 to 7 do
 
                   begin;
                   case Tj [i,j] of  
                    0: write ('.    ');
                    2: write ('O    ');
                    3: write ('X    ');
                   end;
             end;
    writeln;
    writeln;
  end;
 
 
  {affichage du reperage des colonnes}
  write ('              ');
  for i := 1 to 7 do
    write (i:1,'    ');
  writeln;
  writeln;
 
 {fonction qui vérifie la légalité du coup choisi par le joueur}
function valable
var (jeu: tjeu; col: integer): boolean;
 
    begin;
          valable := (Tj [col, 1] = 0);
end;  
 
{joueur1 joue}
 
procedure coup_du_joueur1
var coup1, j : integer;
 
    begin
            repeat
 
            write ('joueur1 choisissez votre colonne: ')
            readln (coup1);
 
                    if coup1<1 or coup1>7
 
                    then writeln ('coup non valable');
 
            until coup1<=7 and coup1>=1  and (valable ([coup1,1] = true)  do
                                                                          j:=6;
                                                                         repeat  j:=j-1
                                                                         until Tj[coup1,j]<>0
 
            ...
 
Merci d'avance


Message édité par raphinity le 27-03-2006 à 14:27:15
Reply

Marsh Posté le 27-03-2006 à 14:22:55   

Reply

Marsh Posté le 28-03-2006 à 01:16:35    

Personne pour me filer un p'tit coup de main ? Si quelqu'un a déjà fait un jeu "simplifié" de ce type, je suis preneur !  
je cherche surtout à avoir le meilleur algorithme pour determiner l'alignement de 4 "pions"...
 
Merci d'avance.

Reply

Marsh Posté le 01-04-2006 à 10:05:08    

quand un joueur ajoute un pion:
vérification horizontale
vérification verticale
vérification diagonale1
vérification diagonale2
hyper simple, non?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed