Master Mind

Materie:Appunti
Categoria:Sistemi

Voto:

2.5 (2)
Download:125
Data:10.12.2007
Numero di pagine:6
Formato di file:.doc (Microsoft Word)
Download   Anteprima
master-mind_1.zip (Dimensione: 21.7 Kb)
trucheck.it_master-mind.doc     96.5 Kb
readme.txt     59 Bytes


Testo

MASTER MIND
Lab. Sistemi
-Analisi problema
Il Master Mind è un gioco in cui bisogna indovinare una sequenza di 4 colori non superando un certo numero di tentativi.
In questo programma il gioco funziona un po’ diversamente, al posto dei pallini colorati sono utilizzati dei numeri e il gioco finisce finché non viene indovinata la sequenza.
L’ utente può scegliere da quante cifre può essere composta la sequenza da indovinare, da un minimo di 3 a un massimo di 7; oltre a questo può impostare il valore massimo assumibile da ogni cifra, da 0 a 9.
Il gioco è basato principalmente su due operazioni:
- la procedura in cui si assegna la sequenza da indovinare, la sequenza è memorizzata in un array di byte.
- la procedura in cui si confronta la sequenza inserita dall’utente e la sequenza realizzata dal computer (quella da indovinare).
Procedura Presentazione
Questa procedura presenta il programma, da chi è stato realizzato e di cosa si tratta in poche parole. La procedura stampa in un determinato punto dello schermo ‘De Salvia e Piccini…’
dopo un certo tempo lo schermo viene cancellato e la procedura stampa ‘ Presentano…’ e viene visualizzato ‘MASTER MIND’.
Procedura Inizio
Questa procedura stampa la parola MASTER MIND in alto nello schermo; ogni lettera di questa parola è scritta con colori diversi.
Stampa il menù principale in cui sono presenti 3 opzioni:
-Gioca
-Leggere le istruzioni
-Uscire
Procedura Istruzioni
Questa procedura stampa delle informazioni riguardanti il gioco del master mind lo scopo principale e cioè quello di indovinare una certa sequenza di cifre scelta dal computer.
Il gioco non finisce finché l’utente non indovina la combinazione.
Procedura Menù
Stampa il menù che è presente alla fine di ogni partita e cioè uscire o giocare ancora;la risposta data dall’utente attraverso un numero viene memorizzata nella variabile R.
Procedura Menù2
Esegue la stessa funzione della procedura menù solo che questo è presente in fondo allo schermo quando viene richiamata la procedura delle istruzioni.
Procedura Assegna
Questa procedura è quella principale del programma perché il computer sceglie la sequenza delle cifre da indovinare.
Inoltre qui l’utente può inserire le varie difficoltà del gioco e cioè di quante cifre vuole che sia composta la sequenza (viene memorizzata nella variabile X) e quale valore massimo può assumere ogni cifra (viene memorizzata nella variabile Y).
Fatto questo il computer compone la sequenza che viene memorizzata nell’array S.
Procedura Confronta
Questa procedura è dove l’utente cerca di indovinare la sequenza facendo dei tentativi,la sequenza di prova viene memorizzata nell’array T; dopo di che i numeri presenti nell’array T vengono confrontati con quelli presenti in S.
Il computer guarda quante cifre sono giuste al posto giusto e quante sono giuste ma al posto sbagliato e stampa questi due valori.
La procedura si ripete finché non viene indovinata la sequenza dell’array S.
Procedura Fine
Questa procedura cancella lo schermo e stampa due scritte temporizzate ‘Fine del Gioco ’ e ‘Arrivederci ’.

- Nelle pagine seguenti è presente il flow chart di alcune delle procedure -

Procedure Confronta
Procedure Gioca
Procedure G_Instruzioni
BEGIN {MAIN}
-Programma Pascal
Program Master_mind;
Uses crt;
Const
del=300;
del1=1000;
Var
i, {primo indice array S}
k, {secondo indice array S}
j, {indice array T}
x, {numero di cifre che compone la sequenza}
y, {massimo valore delle cifre}
a,
r, {tasto con cui si da una risposta}
gpg, {indica valori giusti al posto giusto}
gps {indica valori giusti al posto sbagliato}
:byte;
uguali:boolean; {controlla array}
s:array[1..20] of byte; {array con la sequenza da indovinare}
t:array[1..20] of byte; {array con la sequenza di prova}
Procedure presentazione;
Begin
clrscr;
textcolor(5);
gotoxy(31,20);
write('DE SALVIA e PICCINI...');
delay(del1);
delay(del1);
clrscr;
textcolor(4);
gotoxy(33,20);
write('presentano...');
delay(del1);
clrscr;
textcolor(2);
gotoxy(33,20);
write('MASTER');
textcolor(7);
gotoxy(40,20);
write('MIND');
delay(del1);
End;
Procedure inizio;
Begin
clrscr;
textcolor(1);
write('M');
textcolor(2);
write('A');
textcolor(3);
write('S');
textcolor(4);
write('T');
textcolor(5);
write('E');
textcolor(6);
write('R');
write(' ');
textcolor(7);
write('M');
textcolor(8);
write('I');
textcolor(9);
write('N');
textcolor(10);
write('D');
delay(del);
writeln;
writeln;
textcolor(11);
writeln('Premi: 1 --> per giocare');
writeln(' 2 --> per leggere le istruzioni del gioco');
writeln(' 3 --> per uscire');
read(k);
End;
Procedure istruzioni;
Begin
clrscr;
textcolor(9);
writeln('Il gioco consiste nell''indovinare una sequenza di numeri dopo aver dato');
writeln('il numero di cifre che compongono la sequenza e il massimo valore assumibile');
writeln('da ogni cifra.');
writeln;
writeln('Per avere pi— spazio sullo schermo per visualizzare i tentativi puoi');
writeln('separare le cifre immesse con la barra spaziatrice e arrivati al');
writeln('numero di cifre scelto premere invio per confermare il tentativo.');
End;
Procedure menu;
Begin
writeln;
textcolor(7);
writeln('Premi: 1 --> per uscire');
writeln(' 2 --> per giocare ancora');
read(r);
End;
Procedure menu2;
Begin
writeln;
textcolor(7);
writeln('Premi: 1 per uscire');
writeln(' 2 per giocare');
read(r);
End;
Procedure assegna;
Begin
clrscr;
repeat
repeat
repeat
textcolor(10);
writeln('Di quante cifre vuoi che sia composta la sequenza? (Da 3 a 7) ');
readln(x);
if x>7 then
begin
textcolor(4);
writeln('Hai superato il valore massimo di numeri per la sequenza');
end;
if x10 then
begin
textcolor(4);
writeln('Hai superato il valore massimo');
end;
if yy then
begin
textcolor(5);
writeln('non puoi inserire pi— cifre per la sequenza che valori assumibili');
end;
until x1 then
begin
k:=0;
repeat
k:=k+1;
if s[k]=s[i] then a:=a+1;
until k=i-1;
end;
until a=0;
until i=x;
End;
Procedure confronta;
Begin
textcolor(9);
writeln('Ricorda che ci sono ',x,' cifre per la sequenza con massimo valore di ',y-1);
textcolor(4);
writeln('Digita una cifra per volta e premi invio');
repeat
i:=0;
gpg:=0;
gps:=0;
textcolor(7);
writeln('vai con il tuo tentativo');
for j:=1 to x do read(t[j]);
repeat
uguali:=false;
i:=i+1;
if s[i]=t[i] then gpg:=gpg+1
else begin
j:=0;
repeat
j:=j+1;
if t[j]=s[i] then uguali:=true;
if uguali=true then
begin
gps:=gps+1;
j:=x;
end;

until j=x;
end;
until i=x;
textcolor(2);
write(gpg,' valori giusti al posto giusto');
textcolor(5);
write(' -- ');
textcolor(11);
writeln(gps,' valori giusti al posto sbagliato');
until gpg=x;
textcolor(3);
writeln('Complimenti hai indovinato la sequenza di numeri');
End;
procedure fine;
begin
clrscr;
gotoxy(34,19);
textcolor(4);
write('FINE DEL GIOCO');
delay(del);
delay(del);
clrscr;
textcolor(13);
gotoxy(35,19);
write('ARRIVEDERCI');
delay(del);
delay(del);
normvideo;
end;
procedure gioca;
begin
repeat
assegna;
confronta;
menu;
until r=1;
if r=1 then fine;
end;
procedure g_istruzioni;
begin
istruzioni;
menu2;
if r=1 then fine
else
gioca;
end;
BEGIN{main}
presentazione;
inizio;
case k of
1: gioca;
2: g_istruzioni;
3: fine;
end;
END.
-Conclusioni
Il programma mi ha causato qualche problema per la formazione delle procedure, soprattutto la procedura per l’assegnazione della sequenza da indovinare, pochi problemi riguardanti la procedura del confronto, mentre per le altre non avuto nessuna complicazione perché sono solo presenti frasi da stampare e massimo una acquisizione di un numero corrispondente alla procedura che si vuole richiamare (gioca, istruzioni, fine).
Questo programma è una simulazione completa del gioco Master Mind usando al posto dei colori, delle cifre e l’utente ha anche la possibilità di impostare un livello di difficoltà scegliendo il numero delle cifre da cui è composta la sequenza e il valore massimo assumibile da esse.

Esempio