Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Pascal - Gioco dell'impiccato con pascal
Forum - Pascal - Gioco dell'impiccato con pascal

Avatar
Qwqw (Normal User)
Newbie


Messaggi: 2
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 13:05
Venerdì, 11/11/2011
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...
Codice sorgente - presumibilmente Delphi

  1. PROGRAM Impiccato;
  2. uses crt;
  3. Var i, j, k, k1, w, x, c :integer;
  4.     rand, lung, n_trat, riemp1, volte, cosino, casi :integer;
  5.     p_scelta, let_scelta, percorso, parolee :string;
  6.     giusto, indov, indov2, inutile :boolean;
  7.     parole: array[1..471] of string;
  8.     lettere: array[1..13] of char;
  9.     testo: text;
  10.  
  11. PROCEDURE coso_sopra;
  12. begin
  13.         gotoxy(26,2);
  14.         writeln('Powered by Stefano Tagliabue');
  15. End;
  16.  
  17. begin
  18. clrscr;
  19. coso_sopra;
  20. gotoxy(3,5);
  21. write('Dove si trova il file con le parole? ');
  22. read(percorso);
  23. assign(testo,percorso);
  24. reset(testo);
  25. (* carico gli elementi nel vettore *)
  26. c:=0;
  27. repeat
  28. c:=c+1;
  29. readln(testo,parolee);
  30. parole[c]:=parolee;
  31. until eof(testo);
  32. close(testo);
  33. clrscr;
  34.         randomize;
  35.         rand:= random(472);
  36.         p_scelta:= parole[rand];
  37.         lung:= length(p_scelta);
  38.         n_trat:= lung-2;
  39. (* grafica *)
  40.         coso_sopra;
  41.         gotoxy(3,3);
  42.                 write('Parola:');
  43.         gotoxy(3,6);
  44.                 write('Tentativi:');
  45.         gotoxy(3,9);
  46.                 write('Lettere:');
  47. (*nascondo la parola*)
  48.         gotoxy(11,3);
  49.                 write(p_scelta);
  50.         gotoxy(12,3);
  51.         for i:=1 to n_trat do
  52.                 begin
  53.                         write('_');
  54.                 end;
  55. (*creo un vettore con le lettere della parola*)
  56.         for j:=1 to lung do
  57.                 begin
  58.                         p_scelta[j] := lettere[j];
  59.                         k1:= j;
  60.                 end;
  61. (*riempo gli aspazi rimasti nel vettore con ç*)
  62.         riemp1:= 13-lung;
  63.                 if riemp1 = 0 then
  64.                         inutile:= true
  65.                 else
  66.                         begin
  67.                                 inutile:= false;
  68.                                 for k:=1 to riemp1 do
  69.                                         begin
  70.                                                 k1:= k1+1;
  71.                                                 lettere[k1]:= 'ç';
  72.                                         end;
  73.                 end;
  74. (*ciclo serio*)
  75.         volte:= 0;
  76.         cosino:= 13;
  77.         gotoxy(12,9);
  78.         REPEAT
  79.                 read(let_scelta);
  80.                         if let_scelta = lettere[1] then
  81.                                 casi:=1;
  82.                         if let_scelta = lettere[2] then
  83.                                 casi:=2;
  84.                         if let_scelta = lettere[3] then
  85.                                 casi:=3;
  86.                         if let_scelta = lettere[4] then
  87.                                 casi:=4;
  88.                         if let_scelta = lettere[5] then
  89.                                 casi:=5;
  90.                         if let_scelta = lettere[6] then
  91.                                 casi:=6;
  92.                         if let_scelta = lettere[7] then
  93.                                 casi:=7;
  94.                         if let_scelta = lettere[8] then
  95.                                 casi:=8;
  96.                         if let_scelta = lettere[9] then
  97.                                 casi:=9;
  98.                         if let_scelta = lettere[10] then
  99.                                 casi:=10;
  100.                         if let_scelta = lettere[11] then
  101.                                 casi:=11;
  102.                         if let_scelta = lettere[12] then
  103.                                 casi:=12;
  104.                         if let_scelta = lettere[13] then
  105.                                 casi:=13;
  106.         (*case casi*)
  107.                         case casi of
  108.                                 1 : begin
  109.                                         gotoxy(12,3);
  110.                                         write(let_scelta);
  111.                                     end;
  112.                                 2 : begin
  113.                                         gotoxy(13,3);
  114.                                         write(let_scelta);
  115.                                     end;
  116.                                 3 : begin
  117.                                         gotoxy(14,3);
  118.                                         write(let_scelta);
  119.                                     end;
  120.                                 4 : begin
  121.                                         gotoxy(15,3);
  122.                                         write(let_scelta);
  123.                                     end;
  124.                                 5 : begin
  125.                                         gotoxy(16,3);
  126.                                         write(let_scelta);
  127.                                     end;
  128.                                 6 : begin
  129.                                         gotoxy(17,3);
  130.                                         write(let_scelta);
  131.                                     end;
  132.                                 7 : begin
  133.                                         gotoxy(18,3);
  134.                                         write(let_scelta);
  135.                                     end;
  136.                                 8 : begin
  137.                                         gotoxy(19,3);
  138.                                         write(let_scelta);
  139.                                     end;
  140.                                 9 : begin
  141.                                         gotoxy(20,3);
  142.                                         write(let_scelta);
  143.                                     end;
  144.                                 10 : begin
  145.                                         gotoxy(21,3);
  146.                                         write(let_scelta);
  147.                                     end;
  148.                                 11 : begin
  149.                                         gotoxy(22,3);
  150.                                         write(let_scelta);
  151.                                     end;
  152.                                 12 : begin
  153.                                         gotoxy(23,3);
  154.                                         write(let_scelta);
  155.                                     end;
  156.                                 13 : begin
  157.                                         gotoxy(24,3);
  158.                                         write(let_scelta);
  159.                                     end;
  160.                                 else
  161.                                         begin
  162.                                                 volte:=volte+1;
  163.                                                 for w:=1 to 2 do
  164.                                                         begin
  165.                                                         cosino:=cosino+1;
  166.                                                         end;
  167.                                                 gotoxy(cosino,6);
  168.                                                 write('¦');
  169.                                         end;
  170.                                 end;
  171.         UNTIL volte = 10;
  172. (*dovrebbe essere finito*)
  173. readln;
  174. end.



dov'è l'errore? grazie mille :)

PM
Avatar
Poggi Marco (Member)
Guru


Messaggi: 969
Iscritto: 05/01/2010

Up
2
Down
V
Segnala al moderatore
Postato alle 15:03
Venerdì, 11/11/2011
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:
Codice sorgente - presumibilmente Delphi

  1. 201 Range check error
  2. If you compiled your program with range checking on, then you can get this error in the following cases:
  3. An array was accessed with an index outside its declared range.
  4. 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 il 12/11/2011 alle 10:38
PM