Pascal/Turbo Pascal - ¡¡¡¡¡¡¡DUDA URGENTE!!!!!!

 
Vista:

¡¡¡¡¡¡¡DUDA URGENTE!!!!!!

Publicado por Fiore_dj (1 intervención) el 10/01/2006 22:54:27
Buenas, tengo q entregar un conecta 4 hecho en pascal para el lunes, y esque nos compìla y se ejecuta, pero hay un error q no se de q se trata y qtengo qcambiar para q vaya bien. Os agradeceria si pudieseis mirarlo y decirme cual es el fallo y como solucionarlo.Os cuelgo a continuacion el codigo del programa:

MUCHAS GRACIAS POR VUESTRA AYUDA.


program concta4 (input,output);

uses
crt;

const
linea=4 ; Almax=6 ; Anmax=7;
XO=16 ; YO=1 ;
Fiblanco=#66 ; Finegro=#78 ; Separacion=#250;
Enter=#13 ; Escape=#27 ;Espacio=#32;

type
Altipo=1..Almax ; Antipo=1..Anmax;
Estado=(Blanco,Negro,Vacio);
Jugador=Blanco..Negro;

var
Alt:0..Almax ; Anc:Antipo;
Rango:array [Altipo,Antipo] of Estado;
Puntos,Mover:Jugador;
Contador,Punto:integer;

const
Ganado:array [Jugador] of word=(0,0);
Pixel:array [Estado] of char=(Fiblanco,Finegro,Separacion);
Nombre:array [Jugador] of string[50]=('Blanco','Negro');

procedure Piezas;

var An:Antipo ; Al:Altipo ;
begin
for Al:=1 to Almax do
for An:=1 to Anmax do begin gotoXY(XO+4*An,YO+2*Al);
write(Pixel[Rango[Al,An]]) end;
end;

procedure Moverse(Hombre:Jugador);

var tecla:char ;
begin gotoXY(1,1) ; Write('Mover ',Nombre[Hombre],' ahora');
Anc:=1+Anmax div 2 ;
repeat gotoXY(XO+4*Anc,YO) ; Write(Pixel[Hombre],espacio);
while keypressed do tecla:=readkey;
tecla:=readkey ; if tecla=escape then halt;
if tecla=#0 then
begin tecla:=readkey;
if (tecla=#75) and (Anc>1) then Dec(Anc);
if (tecla=#77) and (Anc<Anmax) then Inc(Anc);
end;
until ((tecla=enter) or (tecla=#80)) and (Rango[1,Anc]=Vacio);
Alt:=0;
repeat Inc(Alt) ;
gotoXY(XO+4*Anc,YO+2*Alt); Write(Pixel[Hombre]) ;
Write(Espacio);
until (Alt=Almax) or (Rango[Succ(Alt),Anc]<>Vacio);
Rango[Alt,Anc]:=Hombre;
end;

procedure Okpos(Hombre:estado ; Angulo,Unfin:integer);
const vecAl:array [0..3] of integer= (+1,0,-1,-1);
vecAn:array [0..3] of integer=(+1,+1,+1,0);
var dos,tres,cuatro:integer;
begin
for cuatro:=unfin downto unfin-linea+1 do begin
dos:=Alt+cuatro*VecAl[Angulo] ; if (dos<1) or (dos>almax) then exit;
tres:=Anc+cuatro*VecAn[Angulo] ; if (tres<1) or (tres>anmax) then exit;
if rango[dos,tres]<>hombre then exit;
end;
for cuatro:=unfin downto unfin -linea+2 do begin
GoToXY(XO+4*Anc+2*(2*cuatro-1)*VecAn[Angulo],YO+2*Alt+(2*cuatro-1)*VecAl[Angulo]);
write('*'#7) end;
end;

function Ganar(Hombre:Jugador):Boolean;
var
unfin,angulo:integer;
begin
punto:= 0;
for angulo:=0 to 3 do
for unfin:=0 to linea-1 do
Okpos(Hombre,Angulo,unfin);
ganar:=punto>0;
end;

begin
clrscr;
writeln('Bienvenido a Conecta 4 contiene: ',Almax,' Filas,',Anmax,' Columnas,',linea,' en linea');
writeln;
writeln('*Jugadores* Ficha Blanca= ',Pixel[blanco],' ,Ficha Negra= ',pixel[negro],'.');
writeln;
writeln(' Instrucciones ');
writeln;
writeln('Las teclas Izquierda y Derecha seleccionan la posicion de la ficha y,');
writeln('con la tecla Enter se deposita la ficha en la columna deseada.');
randomize;
mover:=jugador(random(2));
window(1,11,80,25);

repeat
for Alt:=1 to Almax do
for Anc:=1 to Almax do rango[Alt,Anc]:=Vacio;
contador:=0;clrscr;
piezas;
repeat
mover:=jugador(1-ord(mover));
moverse(mover);
piezas;inc(contador);
until (ganar(mover)) or (contador=Almax*Anmax);

GotoXY(1,1);clreol;writeln('Fin del Juego');
if punto>0 then
begin inc(ganado[mover]);

writeln(Nombre[mover],espacio,pixel[mover]);
writeln('lineas ganadas: ',punto);
end;
GoToXY(1,5);writeln('partidas totales ganadas: ');
for puntos:=blanco to negro do
writeln(nombre[puntos],ganado[puntos]:5);
writeln;
write('pulsa cualquier tecla');
repeat until readkey<>#0;
until false
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder