07/10/11 12:39
luca95
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
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
program morra_cinese; uses crt, graph; var sc: array [1..3] of char; 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'); readkey; puut:=0; pupc:=0; SetColor(white); Line(0,20,80,20); Line(40,0,40,100); OutTextXY(20,10,'TU'); OutTextXY(60,10,'PC'); str(pupc,stpc); str(puut,stut); OutTextXY(20,30,stut); OutTextXY(60,30,stpc); repeat clrscr; repeat writeln('inserisci S o C o F'); readln(su); until (upcase(su)='S') or (upcase(su)='C') or (upcase(su)='F'); if upcase(su)='S' then Begin b:=1; SetColor(white); 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); readkey; End; if upcase(su)='C' then Begin b:=2; SetColor(white); 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,260,270,5); Line(220,200,255,200); Arc(230,195,0,90,5); Arc(230,195,360,270,5); Line(200,190,230,190); readkey; End; if upcase(su)='F' then Begin b:=3; SetColor(white); 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); readkey; End; a:=random(3)+1; if a=1 then Begin SetColor(white); (*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); readkey; readkey; End else if a=2 then Begin SetColor(white); (*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); readkey; readkey; End else if a=3 then Begin SetColor(white); (*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); readkey; readkey; End; clrscr; writeln('tu hai giocato [',su,'] e il pc [',sc[a],']'); if a=b then Begin writeln('Pareggio'); pulisci; End else if (a=1) and (b=2) then Begin writeln('Hai vinto'); SetColor(black); OutTextXY(20,30,stut); puut:=puut+1; str(puut,stut); SetColor(white); OutTextXY(20,30,stut); pulisci; End else if (a=1) and (b=3) then Begin writeln('Hai perso'); SetColor(black); OutTextXY(60,30,stpc); pupc:=pupc+1; str(pupc,stpc); SetColor(white); OutTextXY(60,30,stpc); pulisci; End else if (a=2) and (b=3) then Begin writeln('Hai vinto'); SetColor(black); OutTextXY(20,30,stut); puut:=puut+1; str(puut,stut); SetColor(white); OutTextXY(20,30,stut); pulisci; End else if (a=2) and (b=1) then Begin writeln('Hai perso'); SetColor(black); OutTextXY(60,30,stpc); pupc:=pupc+1; str(pupc,stpc); SetColor(white); OutTextXY(60,30,stpc); pulisci; End else if (a=3) and (b=1) then Begin writeln('Hai vinto'); SetColor(black); OutTextXY(20,30,stut); puut:=puut+1; str(puut,stut); SetColor(white); OutTextXY(20,30,stut); pulisci; End else if (a=3) and (b=2) then Begin writeln('Hai perso'); SetColor(black); OutTextXY(60,30,stpc); pupc:=pupc+1; str(pupc,stpc); SetColor(white); OutTextXY(60,30,stpc); pulisci; End; writeln('il punteggio attuale è di: '); writeln('PC TU'); writeln(' ',pupc,' ',puut); readkey; readkey; until (puut=3) or (pupc=3); if puut=3 then Begin writeln('hai vinto'); SetColor(black); str(puut,stut); str(pupc,stpc); OutTextXY(20,30,stut); OutTextXY(60,30,stpc); End else writeln('hai perso'); SetColor(black); str(puut,stut); str(pupc,stpc); OutTextXY(20,30,stut); OutTextXY(60,30,stpc); End; Begin inizio; repeat gioco; readkey; writeln('vuoi rigiocare?'); readln(risp); until upcase(risp)='N'; closegraph; End.
Ultima modifica effettuata da luca95 07/10/11 12:46
aaa