Sei sulla pagina 1di 5

C:\Users\Andrea\Documents\Liceo Scientifico Ss. 2011-2012\Pascal\Mastermind\Mastermind.

pas Pagina 1 di 5 28/09/2011 22:13:19 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 P rog ram ma ste rmi nd; U ses cr t; Con st n=4 ; Var i, j,t r,t ,c, x,y : i nte ger ; {i e j so no ind ici ve tto ria li; tr una va ria bil e b ool ean a; t r app res ent a i l n ume ro di ten tat ivi il cu i m ass imo 10; c c ont a i l n ume ro di cif re giu ste ; x ed y son o u sat i p er lo spo sta men to del cu rso re} Var pr ova : st rin g [n ]; {La va ria bil e p rov a la st rin ga in cui l' ute nte di git a l a com bin azi one se con do lui co rre tta } Var v: arr ay [ 1.. n] of int ege r ; Var k: arr ay [ 1.. n] of int ege r ; {Il pr imo ve tto re q uel lo che co nti ene la co mbi naz ion e p rin cip ale ; Il sec ond o c ont ien e i va lor i d ell a v ari abi li pro va, tr asf orm ati in com pon ent i d i t ipo in teg er} Var f: sho rts tri ng; {f u na var iab ile di tr ans izi one ch e s erv ir pe r i l p ass agg io dal la str ing a p rov a a l v ett ore k} B egi n Clr scr ; Ran dom ize ; {Qu est a f unz ion e ne ces sar ia aff inc h l'e lab ora tor e p oss a e str arr e dei nu mer i c asu ali } Tex tco lor (wh ite ); i:= 1; j:= 1; Whi le (i< =n) do Be gin v [i] :=r and om( 10) ; I f ( i<> 1) the n Rep eat tr :=0 ; Wh ile (( j<i ) a nd (tr =0) ) d o B egi n If (v[ j]= v[i ]) the n Be gin v [i] :=r and om( 10) ; t r:= 1 En d ; j:= j+1 E nd ; j: =1 Unt il tr= 0; i :=i +1 En d ;

- 1 -

C:\Users\Andrea\Documents\Liceo Scientifico Ss. 2011-2012\Pascal\Mastermind\Mastermind.pas Pagina 2 di 5 28/09/2011 22:13:19 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 {Qu est o e nor me com ple sso di ci cli id ent ati l' uno ne ll' alt ro fa s che l'e lab ora tor e e str agg a q uat tro nu mer i c asu ali l' uno di ver so dal l'a ltr o. Qua ndo l' ela bor ato re, an ali zza ndo i dat i, cap isc e c he u sci to un num ero gi e str att o, lo rie str ae} got oxy (2, 2); Wri te( 'MA STE RMI ND: pe r g ioc are , d igi ta un num ero di qu att ro cif re. '); Got oxy (2, 3); Wri te( 'Ce rca di in dov ina re la com bin azi one .') ; Got oxy (2, 4); Wri te( 'P: ci fra & pos to giu sto ; C : c ifr a g ius ta pos to sba gli ato .') ; Got oxy (2, 5); Wri te( 'NO TA BEN E: le cif re son o t utt e d ive rse l" una da ll" alt ra. '); {Li nee di de scr izi one de l g ioc o} t:= 10; {Al l'i niz io l'u ten te ha il mas sim o n ume ro di ten tat ivi , c io 10 } y:= 7; Re pea t t :=t -1; { I t ent ati vi sce ndo no di uno og ni vol ta che l' ute nte sb agl ia} c :=0 ; { Il num ero di ci fre gi ust e a ll' ini zio di og ni ten tat ivo 0} x :=2 ; g oto xy( x,y ); r ead ln( pro va) ; { E' sta ta pre sa in inp ut una co mbi naz ion e, sot to for ma di str ing a} i :=1 ; g oto xy( x,y ); W hil e ( i<= n) do Beg in f: =co py( pro va, i,1 ); Va l(f ,k[ i]) ; i: =i+ 1 End ; { Que sto ci clo fa s ch e, ad ogn i t ent ati vo, il ve tto re k v eng a r ic ari cat o d i n ume ri est rat ti dai si ngo li car att eri de lla st rin ga p rov a} I f ( ((k [1] =0) an d ( k[2 ]=0 )) and (( k[3 ]=0 ) a nd (k[ 4]= 0)) ) t hen Beg in Go tox y(6 0,1 8); Wr ite (v[ 1], v[2 ],v [3] ,v[ 4]) End ; { Que sta IF una mi a a ggi unt a, una sp eci e d i t ruc co: se l' ute nte d igi ta 000 0 a ppa re pi in ba sso la so luz ion e}

- 2 -

C:\Users\Andrea\Documents\Liceo Scientifico Ss. 2011-2012\Pascal\Mastermind\Mastermind.pas Pagina 3 di 5 28/09/2011 22:13:19 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 x :=7 ; j :=1 ; W hil e ( j<= n) do Beg in i: =1; tr :=0 ; {t r s erv e a co nst ata re se son o p res ent i c ifr e u gua li all 'in ter no de i v ett ori k e v . S ucc ess iva men te, si st abi lir s e s ono al lo st ess o p ost o o in po sti di ffe ren ti} Wh ile (( tr= 0) and (i <=n )) do B egi n If (v[ i]= k[j ]) the n Be gin t r:= 1; { Qua ndo si tr ova un nu mer o u gua le, tr di ven ta 1.. .} c :=c +1 { ... e vie ne agg iun to un val ore a c c he con ta le cor ris pon den ze t rov ate } En d Els e i: =i+ 1 E nd; If (t r=1 ) t hen { Se tr u gua le ad 1, sig nif ica ch e c ' una co rri spo nde nza . B iso gna or a s tab ili re se sia al po sto gi ust o o no } B egi n If (i= j) the n Be gin G oto xy( x,y ); W rit e(' P') ; x :=x +1 En d {S e g li ind ici de i d ue vet tor i s ono fe rmi ne llo st ess o p unt o, al lor a a bbi amo il ca so CIF RA GIU STA , P OST O G IUS TO (P) } Els e Be gin G oto xy( x,y ); W rit e(' C') ; x :=x +1 En d; {S e g li ind ici de i d ue vet tor i s ono fe rmi ne llo st ess o p unt o, al lor a a bbi amo il ca so CIF RA GIU STA , P OST O S BAG LIA TO (C) } E nd; j: =j+ 1 End ; y :=y +1;

- 3 -

C:\Users\Andrea\Documents\Liceo Scientifico Ss. 2011-2012\Pascal\Mastermind\Mastermind.pas Pagina 4 di 5 28/09/2011 22:13:19 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 I f ( ((( k[1 ]=k [2] ) o r ( k[1 ]=k [3] )) or ((k [1] =k[ 4]) or (k [2] =k[ 3]) )) or ((k [2] =k[ 4]) or (k [3] =k[ 4]) )) the n Beg in Go tox y(7 ,(y -1) ); Wr ite ('- --- '); Go tox y(1 8,7 ); Wr ite ('M ESS AGG IO DI ERR ORE :') ; Go tox y(1 8,8 ); Wr ite ('D evi in ser ire ci fre di ver se l"u na dal l"a ltr a!' ) {S e l 'ut ent e s cri ve due o pi ci fre ug ual i p er fac ili tar si, l' ela bor ato re sov ras cri ver l e l ett ere P e C co n d ei tra tti ni al fi ne di non vi sua liz zar le, pe r e vit are fa cil ita zio ni} End E lse Beg in If (c =0) th en B egi n Got oxy (7, (y- 1)) ; Wri te( '-- --' ); Got oxy (18 ,7) ; Wri te( 'ME SSA GGI O D I E RRO RE: '); Got oxy (18 ,8) ; Wri te( 'Ne ssu na cif ra nel la com bin azi one nu mer ica !

')

{Se ne ssu na del le cif re ins eri te dal l'u ten te p res ent e n ell a com bin azi one , v ien e i llu str ato un al tro me ssa ggi o d i e rro re} E nd El se B egi n Got oxy (18 ,7) ; Wri te( ' Got oxy (18 ,8) ; Wri te( '

'); ')

{Se in vec e tu tto re gol are , i l m ess agg io di err ore vi ene ca ncel lat o} E nd End ; U nti l ( (t= 0) or ((( k[2 ]=v [2] ) a nd (k[ 1]= v[1 ])) an d(( k[4 ]=v [4] ) a nd (k [ 3]= v[3 ])) )); { Il cic lo con tin ua fin ch ci so no ten tat ivi a dis pos izi one e fin ch c ' anc he sol o u na cif ra div ers a d all a c omb ina zio ne} G oto xy( 2,y +1) ; I f ( t=- 1) the n Wri tel n(' Hai pe rso ! L a c omb ina zio ne era ', v[1 ],v [2] ,v[ 3], v[4 ],' .') E lse Wri tel n(' Hai vi nto !') ; { Sic com e n on sap pia mo se sia mo usc iti da l R EPE AT per ch la co mbi n azi one giu sta o per ch ab bia mo esa uri to i t ent ati vi a d isp osi z ion e, chi edi amo un a c onf erm a: se i t ent ati vi son o s ott o l o z ero , s ign ifi ca che la pa rti ta p ers a e l' ela bor ato re d la sol uzi one
- 4 -

C:\Users\Andrea\Documents\Liceo Scientifico Ss. 2011-2012\Pascal\Mastermind\Mastermind.pas Pagina 5 di 5 28/09/2011 22:13:19 239 240 241 242 243 244 245 246 247 248 c orr ett a; vic eve rsa , l a p art ita vin ta} Rep eat un til ke ypr ess ed; {Ri pet e u n c icl o f itt izi o f inc h non si pr eme un qu als ias i t ast o d ell a tas tie ra, do pod ich e sce da l p rog ram ma} E nd.

- 5 -

Potrebbero piacerti anche