Oppure

Loading
11/11/11 12:05
Qwqw
Allora, io ho scritto questo programma che dovrebbe essere il gioco dell'impiccato (giocatore vs computer). Il computer sceglie una parola a caso fra 471 nasconde le lettere in mezzo e così via. Però non avevo voglia di riempire un vettore a mano, così ho pensato di fare un file di testo con le parole una a capo dell'altra e di fargli leggere il file e salvare ogni riga (quindi una parola) in un campo del vettore.
Però quando lo faccio partire dopo che gli inserisco il percorso del file (c:\parole.txt) lui mi dice
"program f:\impicc.exe
exited with
exit code = 201"
ho provato a cercare cosa fosse "exit code 201" ma non ho capito nulla...
PROGRAM Impiccato;
uses crt;
Var i, j, k, k1, w, x, c :integer;
    rand, lung, n_trat, riemp1, volte, cosino, casi :integer;
    p_scelta, let_scelta, percorso, parolee :string;
    giusto, indov, indov2, inutile :boolean;
    parole: array[1..471] of string;
    lettere: array[1..13] of char;
    testo: text;

PROCEDURE coso_sopra;
begin
        gotoxy(26,2);
        writeln('Powered by Stefano Tagliabue');
End;

begin
clrscr;
coso_sopra;
gotoxy(3,5);
write('Dove si trova il file con le parole? ');
read(percorso);
assign(testo,percorso);
reset(testo);
(* carico gli elementi nel vettore *)
c:=0;
repeat
c:=c+1;
readln(testo,parolee);
parole[c]:=parolee;
until eof(testo);
close(testo);
clrscr;
        randomize;
        rand:= random(472);
        p_scelta:= parole[rand];
        lung:= length(p_scelta);
        n_trat:= lung-2;
(* grafica *)
        coso_sopra;
        gotoxy(3,3);
                write('Parola:');
        gotoxy(3,6);
                write('Tentativi:');
        gotoxy(3,9);
                write('Lettere:');
(*nascondo la parola*)
        gotoxy(11,3);
                write(p_scelta);
        gotoxy(12,3);
        for i:=1 to n_trat do
                begin
                        write('_');
                end;
(*creo un vettore con le lettere della parola*)
        for j:=1 to lung do
                begin
                        p_scelta[j] := lettere[j];
                        k1:= j;
                end;
(*riempo gli aspazi rimasti nel vettore con ç*)
        riemp1:= 13-lung;
                if riemp1 = 0 then
                        inutile:= true
                else
                        begin
                                inutile:= false;
                                for k:=1 to riemp1 do
                                        begin
                                                k1:= k1+1;
                                                lettere[k1]:= 'ç';
                                        end;
                end;
(*ciclo serio*)
        volte:= 0;
        cosino:= 13;
        gotoxy(12,9);
        REPEAT
                read(let_scelta);
                        if let_scelta = lettere[1] then
                                casi:=1;
                        if let_scelta = lettere[2] then
                                casi:=2;
                        if let_scelta = lettere[3] then
                                casi:=3;
                        if let_scelta = lettere[4] then
                                casi:=4;
                        if let_scelta = lettere[5] then
                                casi:=5;
                        if let_scelta = lettere[6] then
                                casi:=6;
                        if let_scelta = lettere[7] then
                                casi:=7;
                        if let_scelta = lettere[8] then
                                casi:=8;
                        if let_scelta = lettere[9] then
                                casi:=9;
                        if let_scelta = lettere[10] then
                                casi:=10;
                        if let_scelta = lettere[11] then
                                casi:=11;
                        if let_scelta = lettere[12] then
                                casi:=12;
                        if let_scelta = lettere[13] then
                                casi:=13;
        (*case casi*)
                        case casi of
                                1 : begin
                                        gotoxy(12,3);
                                        write(let_scelta);
                                    end;
                                2 : begin
                                        gotoxy(13,3);
                                        write(let_scelta);
                                    end;
                                3 : begin
                                        gotoxy(14,3);
                                        write(let_scelta);
                                    end;
                                4 : begin
                                        gotoxy(15,3);
                                        write(let_scelta);
                                    end;
                                5 : begin
                                        gotoxy(16,3);
                                        write(let_scelta);
                                    end;
                                6 : begin
                                        gotoxy(17,3);
                                        write(let_scelta);
                                    end;
                                7 : begin
                                        gotoxy(18,3);
                                        write(let_scelta);
                                    end;
                                8 : begin
                                        gotoxy(19,3);
                                        write(let_scelta);
                                    end;
                                9 : begin
                                        gotoxy(20,3);
                                        write(let_scelta);
                                    end;
                                10 : begin
                                        gotoxy(21,3);
                                        write(let_scelta);
                                    end;
                                11 : begin
                                        gotoxy(22,3);
                                        write(let_scelta);
                                    end;
                                12 : begin
                                        gotoxy(23,3);
                                        write(let_scelta);
                                    end;
                                13 : begin
                                        gotoxy(24,3);
                                        write(let_scelta);
                                    end;
                                else
                                        begin
                                                volte:=volte+1;
                                                for w:=1 to 2 do
                                                        begin
                                                        cosino:=cosino+1;
                                                        end;
                                                gotoxy(cosino,6);
                                                write('¦');
                                        end;
                                end;
        UNTIL volte = 10;
(*dovrebbe essere finito*)
readln;
end.



dov'è l'errore? grazie mille :)
aaa
11/11/11 14:03
Poggi Marco
Ciao!

Ho provato il programma, e la lettura del file funziona.
L' errore "exit code 201" è dovuto ad un accesso fuori range ad un vettore.
Ecco cose dice la documentazione del Free Pascal:
201 Range check error
If you compiled your program with range checking on, then you can get this error in the following cases:
An array was accessed with an index outside its declared range.
Trying to assign a value to a variable outside its range (for instance an enumerated type).


Ho notato alcune imprecisioni nel programma.
Alla riga 58, devi invertire l' ordine dei termini dell' uguaglianza, altrimenti perdi la parola da indovinare.

Alla riga 79 devi usare readln invece di read.

Il conteggio delle lettere indovinate va rivisto.
Ultima modifica effettuata da Poggi Marco 12/11/11 9:38
aaa