Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao a tutti ho fatto un programma per giocare a morra cinese e va anche discretamente bene volevo sapere se secondo voi poteva essere applicata qualche miglioria... ovviamente oltre ai disegni delle mani fatti da me fanno un po' schifo ma è il meglio che sono riuscito a fare ecco il codice devo dire che è abbastanza lungo se vi servono spiegazioni sulle varie parti ditemelo
noterete che il punteggio e la scelta del giocatore e pc è ripetuta nella grafica e a parole è solo per controllo quella a parole andrà eliminata
Codice sorgente - presumibilmente Delphi
program morra_cinese;
uses crt, graph;
var sc:array[1..3]ofchar;
var su,risp:char;
procedure inizio;
var Gd,Gm:integer;
Begin
clrscr;
randomize;
DetectGraph(Gd,Gm);
InitGraph(Gd, Gm,'C:\PROGRA~1\TP\BGI');
writeln('programma per giocare a morra cinese contro il pc');
readkey;
sc[1]:='S';
sc[2]:='C';
sc[3]:='F';
End;
procedure pulisci;
Begin
(*carta*)
SetColor(black);
Line(200,240,240,240);
Arc(240,235,0,90,5);
Arc(240,235,360,270,5);
Line(220,230,255,230);
Arc(255,225,0,90,5);
Arc(255,225,360,270,5);
Line(220,220,270,220);
Arc(270,215,0,90,5);
Arc(270,215,360,270,5);
Line(220,210,270,210);
Arc(255,205,0,90,5);
Arc(255,205,360,270,5);
Line(220,200,255,200);
Arc(230,195,0,90,5);
Arc(230,195,360,270,5);
Line(200,190,230,190);
(*forbici*)
Line(200,240,240,240);
Arc(240,235,0,90,5);
Arc(240,235,360,270,5);
Line(220,230,240,230);
Arc(240,225,360,270,5);
Line(220,220,260,225);
Arc(260,220,0,81,5);
Arc(260,220,360,261,5);
Line(220,210,260,215);
Arc(255,205,0,90,5);
Arc(255,205,360,270,5);
Line(220,200,255,200);
Line(220,210,255,210);
Arc(230,195,0,90,5);
Line(235,195,235,200);
Line(200,190,230,190);
(*sasso*)
Line(200,240,240,240);
Arc(240,235,0,90,5);
Arc(240,235,360,270,5);
Line(220,230,240,230);
Arc(240,225,0,90,5);
Arc(240,225,360,270,5);
Line(220,220,240,220);
Arc(240,215,0,90,5);
Arc(240,215,360,270,5);
Line(220,210,240,210);
Arc(240,205,0,90,5);
Arc(240,205,360,270,5);
Line(220,200,240,200);
Arc(230,195,0,90,5);
Line(235,195,235,200);
Line(200,190,230,190);
(*forbici pc*)
(*pollice*)
Arc(330,195,180,90,5);
Line(325,195,325,200);
Line(330,190,360,190);
(*indice*)
Line(305,200,335,200);
Arc(305,205,90,270,5);
Line(305,210,335,210);
(*medio*)
Line(335,210,295,215);
Arc(295,220,99,279,5);
Line(295,225,335,220);
(*annulare*)
Line(315,230,335,230);
Arc(315,225,270,180,5);
(*mignolo*)
Line(315,240,360,240);
Arc(315,235,90,270,5);
(*carta pc*)
(*pollice*)
Arc(340,195,270,90,5);
Line(340,190,370,190);
(*indice*)
Line(315,200,350,200);
Arc(315,205,90,270,5);
(*medio*)
Line(300,210,350,210);
Arc(300,215,90,270,5);
Line(300,220,350,220);
(*annulare*)
Arc(315,225,90,270,5);
Line(315,230,350,230);
(*mignolo*)
Arc(340,235,90,270,5);
Line(340,240,370,240);
(*sasso pc*)
(*pollice*)
Line(330,190,360,190);
Line(325,195,325,200);
Arc(330,195,90,180,5);
(*indice*)
Line(320,200,340,200);
Arc(320,205,90,270,5);
(*medio*)
Line(320,210,340,210);
Arc(320,215,90,270,5);
(*annulare*)
Line(320,220,340,220);
Arc(320,225,90,270,5);
(*mignolo*)
Line(320,230,340,230);
Arc(320,235,90,270,5);
Line(320,240,360,240);
End;
procedure gioco;
var a,b,pupc,puut:byte;
var stut,stpc:shortstring;
Begin
clrscr;
writeln('il primo che tra te e pc raggiunge le 3 vittorie vince');
writeln('quando ti sarà richisesto dovrai inserire S per sasso C per carta F per forbici e la scelta del computer sarà estratta casualmente');
Prima miglioria da applicare:
Cancella tutte le linee di codice doppio !!
Non è possibile che nel caso tu debba modificare il mignolo di una tua immagine devi andarlo a cercare in 2-3 posti diversi del sorgente, oppure nel check del risultato hai codice duplicato e inutile
Seconda miglioria da applicare:
Usa delle costanti e tipi il sorgente resta più leggibile:
es:
tpPunto = (tpCarta, tpForbici, tpSasso);
CS_CARTA='S';
....
Usa delle variabili "parlanti" a,b ?? cosa sono ???
Bado all'aspetto estetico del programma, quindi lo volevo scaricare con un IDE e vederlo. Ma comunque sono riuscito a copiare il tuo codice e a incollarlo sul mio IDE ed ecco i miei due suggerimenti:
Iniziare con il titolo del gioco, non con "questo é un..."
Hai scritto "...quando ti sarò..." ansiché "...quando ti sarai..." nella parte introduttiva.
Ti consiglio di aprire la grafica solo dopo la parte introduttiva e, se ci metti un po' di impegno per fare una cosa un po' più figia, di aprire e chiudere la grafica automaticamente con
Codice sorgente - presumibilmente Plain Text
Gd:=detect; Initgraph(GD,GM,'C: bla,bla,bla');
e
Codice sorgente - presumibilmente Plain Text
Closegraph
.
Riguardo ai disegni, non per fare il precisino, senza offesa, già così vanno benissimo, giusto per migliorarli un po':
Accorciare di qualche pixel il medio quando il giocatore o il pc usa Carta.
Accorciare l'anulare e il mignolo di qualche pixel in Forbici (il medio é fantastico però, complimenti!)
Accorcire tutte le dita nel sasso.
In generale, sempre se hai tempo, ti consiglio di fare unghie e prosecuzione del polso.