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 - programma beccaccino
Forum - Pascal - programma beccaccino

Avatar
falaskhouse (Normal User)
Newbie


Messaggi: 14
Iscritto: 18/05/2010

Segnala al moderatore
Postato alle 14:01
Martedì, 23/11/2010
allora intanto volevo ringraziare tutti coloro che hanno risposto alle mie domande fino ad ora togliendomi molti dubbi... ora ho scritto il codice della prima parte del programma per chi non l'avesse letto è il beccaccino...(sempre che io l'abbia scritto:D) e sono arrivato a questo punto (sotto metto il programma) e non so perché nel segno che metterò di fianco al comando mi si blocca sapete dirmi perché? e non fate caso a quando mostra le carte perché è abbastanza osceno ma volevo solo vedere se funzionava :)
Codice sorgente - presumibilmente Delphi

  1. program beccaccino;
  2. uses crt;
  3. var giocatore:array [1..4,1..10] of string;
  4. procedure assmisdis;
  5. var a,b,c,cas:short;
  6. var carta,mischia:array [1..40] of string;
  7. Begin
  8.   mischia[1]:=('A S');  (*assegnazione carte*)
  9.   mischia[2]:=('2 S');
  10.   mischia[3]:=('3 S');
  11.   mischia[4]:=('4 S');
  12.   mischia[5]:=('5 S');
  13.   mischia[6]:=('6 S');
  14.   mischia[7]:=('7 S');
  15.   mischia[8]:=('F S');
  16.   mischia[9]:=('C S');
  17.   mischia[10]:=('R S');
  18.   mischia[11]:=('A D');
  19.   mischia[12]:=('2 D');
  20.   mischia[13]:=('3 D');
  21.   mischia[14]:=('4 D');
  22.   mischia[15]:=('5 D');
  23.   mischia[16]:=('6 D');
  24.   mischia[17]:=('7 D');
  25.   mischia[18]:=('F D');
  26.   mischia[19]:=('C D');
  27.   mischia[20]:=('R D');
  28.   mischia[21]:=('A B');
  29.   mischia[22]:=('2 B');
  30.   mischia[23]:=('3 B');
  31.   mischia[24]:=('4 B');
  32.   mischia[25]:=('5 B');
  33.   mischia[26]:=('6 B');
  34.   mischia[27]:=('7 B');
  35.   mischia[28]:=('F B');
  36.   mischia[29]:=('C B');
  37.   mischia[30]:=('R B');
  38.   mischia[31]:=('A C');
  39.   mischia[32]:=('2 C');
  40.   mischia[33]:=('3 C');
  41.   mischia[34]:=('4 C');
  42.   mischia[35]:=('5 C');
  43.   mischia[36]:=('6 C');
  44.   mischia[37]:=('7 C');
  45.   mischia[38]:=('F C');
  46.   mischia[39]:=('C C');
  47.   mischia[40]:=('R C');
  48.   a:=0;
  49.   repeat              (*mescolamento carte*)
  50.     a:=a+1;
  51.     repeat        (*mi si blocca in questo pezzo quando deve fare la undicesima ripetizione, le prime dieci le fa e poi si ferma*)
  52.       cas:=random(40)+1;
  53.     until carta[cas]='';
  54.     carta[cas]:=mischia[a];
  55.   until a=40;
  56.   a:=0;        (*distribuzione carte ad ogni giocatore*)
  57.   c:=0;
  58.   repeat
  59.     a:=a+1;
  60.     b:=0;
  61.     repeat
  62.       b:=b+1;
  63.       c:=c+1;
  64.       giocatore[a,b]:=carta[c];
  65.     until b=10;
  66.   until a=4;
  67.   a:=0;   (*inizio scrittura carte*)
  68.   y:=1;
  69.   x:=-3;
  70.   repeat
  71.   x:=x+4;
  72.   a:=a+1;
  73.   b:=0;
  74.     repeat
  75.       b:=b+1;
  76.       y:=y+1;
  77.       gotoxy(x,y);
  78.       write(giocatore[a,b]);
  79.     until b=10;
  80.   until a=4;
  81. End;
  82. Begin
  83.   clrscr;
  84.   assmisdis;
  85.   readkey;
  86. End.


Ultima modifica effettuata da Phi il 16/01/2011 alle 23:07
PM Quote
Avatar
Phi (Member)
Expert


Messaggi: 241
Iscritto: 30/12/2009

Segnala al moderatore
Postato alle 16:33
Giovedì, 23/12/2010
Il codice è troppo lungo.
Io lo modificherei così :

1)
dichiarei x e y fra le variabili (a me da errore di compilazione)
2)
sostituirei i "repeat ... until" con dei cicli for
3)
Al posto di tutti i passaggi del tipo "mischia[1]:=" farei così
Dichiaro queste constanti
Codice sorgente - presumibilmente Pascal

  1. const
  2. f:array[1..10] of char=('A' ,'2','3','4','5','6','7','F','C','R');
  3. s:array[0..3] of char=('S', 'D','B','C');


E, a inizio della procedura assmisdis, scriverei:
Codice sorgente - presumibilmente Delphi

  1. for a := 0 to 3 do for b := 1 to 10 do
  2.   mischia[a*10+b]:=concat(f[b],' ',s[a]);


4)
per essere sicuro inserirei, sempre a inizio di assmisdis, questo codice:
Codice sorgente - presumibilmente Pascal

  1. for a := 1 to 40 do carta[a]:='';




Una volta apportate le modifiche a me non dà più nessun errore.
Il programma risulterebbe così:

Codice sorgente - presumibilmente Delphi

  1. Program beccaccino;
  2. uses crt;
  3.  
  4. var giocatore:array [1..4,1..10] of string;
  5.  
  6. procedure assmisdis;
  7. var a,b,c,cas, x, y:shortint;
  8. var carta,mischia:array [1..40] of string[3];
  9.  
  10. const
  11. f:array[1..10] of char=('A' ,'2','3','4','5','6','7','F','C','R');
  12. s:array[0..3] of char=('S', 'D','B','C');
  13.  
  14. Begin
  15.  for a := 1 to 40 do carta[a]:='';
  16.  for a := 0 to 3 do for b := 1 to 10 do
  17.    mischia[a*10+b]:=concat(f[b],' ',s[a]);
  18.  for a := 1 to 40 do begin
  19.   repeat
  20.    cas:=random(40)+1;
  21.   until carta[cas]='';
  22.   carta[cas]:=mischia[a];
  23.  end;
  24.  c:=0;
  25.  for a := 1 to 4 do begin
  26.   b:=0;
  27.   for b := 1 to 10 do begin
  28.    c:=c+1;
  29.    giocatore[a,b]:=carta[c];
  30.   end;
  31.  end;
  32.  a:=0;
  33.  y:=1;
  34.  x:=-3;
  35.  for a := 1 to 4 do begin
  36.   x:=x+4;
  37.   for b := 1 to 10 do begin
  38.    y:=y+1;
  39.    gotoxy(x,y);
  40.    write(giocatore[a,b]);
  41.   end;
  42.  end;
  43. End;
  44.  
  45. Begin
  46.   clrscr;
  47.   assmisdis;
  48.   readkey;
  49. End.


Ultima modifica effettuata da Phi il 23/12/2010 alle 16:34
PM Quote