Created
December 30, 2015 21:37
-
-
Save Michal-Fularz/9f03e2f5002a99f60559 to your computer and use it in GitHub Desktop.
Amin's first program
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
program mastermind; | |
uses crt; | |
var | |
a,b,c,d:word; | |
jeden,dwa,trzy,cztery:array[1..5] of byte; | |
k,l,m,n:byte; | |
odp:array[1..5] of string; | |
z,w:byte; | |
wybor1,wybor2:string; | |
wybor3:byte; | |
plik:text; nazwa,linia:string; | |
rama:string; | |
q,x:string; | |
procedure losowanie; | |
begin | |
randomize; | |
a:=random(6)+1; | |
repeat | |
b:=random(6)+1; | |
until b<>a; | |
repeat | |
c:=random(6)+1; | |
until (c<>a) and (c<>b); | |
repeat | |
d:=random(6)+1; | |
until (d<>a) and (d<>b) and (d<>c); | |
end; | |
procedure sprawdzanie; | |
begin | |
if (jeden[z]<>a) and (dwa[z]<>a) and (trzy[z]<>a) and (cztery[z]<>a) then k:=0; | |
if (dwa[z]=a) or (trzy[z]=a) or (cztery[z]=a) then k:=1; | |
if jeden[z]=a then k:=5; | |
if (jeden[z]<>b) and (dwa[z]<>b) and (trzy[z]<>b) and (cztery[z]<>b) then l:=0; | |
if (jeden[z]=b) or (trzy[z]=b) or (cztery[z]=b) then l:=1; | |
if dwa[z]=b then l:=5; | |
if (jeden[z]<>c) and (dwa[z]<>c) and (trzy[z]<>c) and (cztery[z]<>c) then m:=0; | |
if (jeden[z]=c) or (dwa[z]=c) or (cztery[z]=c) then m:=1; | |
if trzy[z]=c then m:=5; | |
if (jeden[z]<>d) and (dwa[z]<>d) and (trzy[z]<>d) and (cztery[z]<>d) then n:=0; | |
if (jeden[z]=d) or (dwa[z]=d) or (trzy[z]=d) then n:=1; | |
if cztery[z]=d then n:=5; | |
end; | |
procedure sprawdzaniecd; | |
begin | |
if k+l+m+n=0 then | |
begin | |
writeln('niestety wszystko zle'); | |
odp[z]:=('4x'); | |
end; | |
if k+l+m+n=1 then | |
begin | |
writeln('jedno dobrze, ale na zlym miejscu'); | |
odp[z]:=('1vx, 3x'); | |
end; | |
if k+l+m+n=2 then | |
begin | |
writeln('dwa dobrze, ale na zlych miejscach'); | |
odp[z]:=('2vx, 2x'); | |
end; | |
if k+l+m+n=3 then | |
begin | |
writeln('trzy dobrze, ale na zlych miejscach'); | |
odp[z]:=('3vx, 1x'); | |
end; | |
if k+l+m+n=4 then | |
begin | |
writeln('cztery dobrze, ale na zlych miejscach'); | |
odp[z]:=('4vx'); | |
end; | |
if k+l+m+n=5 then | |
begin | |
writeln('jedno dobrze i na dobrym miejscu'); | |
odp[z]:=('1v, 3x'); | |
end; | |
if k+l+m+n=6 then | |
begin | |
writeln('jedno dobrze i na dobrym miejscu oraz jedno dobrze, ale na zlym miejscu'); | |
odp[z]:=('1v, 1vx, 2x'); | |
end; | |
if k+l+m+n=7 then | |
begin | |
writeln('jedno dobrze i na dobrym miejscu oraz dwa dobrze, ale na zlych miejscach'); | |
odp[z]:=('1v, 2vx, 1x'); | |
end; | |
if k+l+m+n=8 then | |
begin | |
writeln('jedno dobrze i na dobrym miejscu oraz trzy dobrze, ale na zlych miejscach'); | |
odp[z]:=('1v, 3vx'); | |
end; | |
if k+l+m+n=10 then | |
begin | |
writeln('dwa dobrze i na dobrych miejscach'); | |
odp[z]:=('2v, 2x'); | |
end; | |
if k+l+m+n=11 then | |
begin | |
writeln('dwa dobrze i na dobrych miejscach oraz jedno dobrze, ale na zlym miejscu'); | |
odp[z]:=('2v, 1vx, 1x'); | |
end; | |
if k+l+m+n=12 then | |
begin | |
writeln('dwa dobrze i na dobrych miejscach oraz dwa dobrze, ale na zlych miejscach'); | |
odp[z]:=('2v, 2vx'); | |
end; | |
if k+l+m+n=15 then | |
begin | |
writeln('trzy dobrze i na dobrych miejscach'); | |
odp[z]:=('3v, 1x'); | |
end; | |
if k+l+m+n=20 then | |
begin | |
writeln('zgadles'); | |
if z=5 then w:=1; | |
if z=4 then w:=2; | |
if z=3 then w:=3; | |
if z=2 then w:=4; | |
if z=1 then w:=5; | |
z:=1; | |
end; | |
end; | |
procedure pisanie1; | |
begin | |
if z=5 then | |
begin | |
gotoxy(28,5); | |
writeln(jeden[z]); | |
end; | |
if z=4 then | |
begin | |
gotoxy(28,7); | |
writeln(jeden[z]); | |
end; | |
if z=3 then | |
begin | |
gotoxy(28,9); | |
writeln(jeden[z]); | |
end; | |
if z=2 then | |
begin | |
gotoxy(28,11); | |
writeln(jeden[z]); | |
end; | |
if z=1 then | |
begin | |
gotoxy(28,13); | |
writeln(jeden[z]); | |
end; | |
end; | |
procedure pisanie2; | |
begin | |
if z=5 then | |
begin | |
gotoxy(37,5); | |
writeln(dwa[z]); | |
end; | |
if z=4 then | |
begin | |
gotoxy(37,7); | |
writeln(dwa[z]); | |
end; | |
if z=3 then | |
begin | |
gotoxy(37,9); | |
writeln(dwa[z]); | |
end; | |
if z=2 then | |
begin | |
gotoxy(37,11); | |
writeln(dwa[z]); | |
end; | |
if z=1 then | |
begin | |
gotoxy(37,13); | |
writeln(dwa[z]); | |
end; | |
end; | |
procedure pisanie3; | |
begin | |
if z=5 then | |
begin | |
gotoxy(46,5); | |
writeln(trzy[z]); | |
end; | |
if z=4 then | |
begin | |
gotoxy(46,7); | |
writeln(trzy[z]); | |
end; | |
if z=3 then | |
begin | |
gotoxy(46,9); | |
writeln(trzy[z]); | |
end; | |
if z=2 then | |
begin | |
gotoxy(46,11); | |
writeln(trzy[z]); | |
end; | |
if z=1 then | |
begin | |
gotoxy(46,13); | |
writeln(trzy[z]); | |
end; | |
end; | |
procedure pisanie4; | |
begin | |
if z=5 then | |
begin | |
gotoxy(55,5); | |
writeln(cztery[z]); | |
end; | |
if z=4 then | |
begin | |
gotoxy(55,7); | |
writeln(cztery[z]); | |
end; | |
if z=3 then | |
begin | |
gotoxy(55,9); | |
writeln(cztery[z]); | |
end; | |
if z=2 then | |
begin | |
gotoxy(55,11); | |
writeln(cztery[z]); | |
end; | |
if z=1 then | |
begin | |
gotoxy(55,13); | |
writeln(cztery[z]); | |
end; | |
end; | |
procedure ramka; | |
begin | |
q:=(' '); | |
x:=(' '); | |
rama:=#205#205#205#205#205#205#205#205; | |
gotoxy(23,2); | |
writeln(#201+rama+#205+rama+#205+rama+#205+rama+#187); | |
gotoxy(23,3); | |
writeln(#186+' Oto Twoje poprzednie ruchy: '+#186); | |
gotoxy(23,4); | |
writeln(#204+rama+#203+rama+#203+rama+#203+rama+#185); | |
gotoxy(23,5); | |
writeln(#186,q,jeden[5],x,#186,q,dwa[5],x,#186,q,trzy[5],x,#186,q,cztery[5],x,#186,q,odp[5]); | |
gotoxy(23,6); | |
writeln(#204+rama+#206+rama+#206+rama+#206+rama+#185); | |
gotoxy(23,7); | |
writeln(#186,q,jeden[4],x,#186,q,dwa[4],x,#186,q,trzy[4],x,#186,q,cztery[4],x,#186,q,odp[4]); | |
gotoxy(23,8); | |
writeln(#204+rama+#206+rama+#206+rama+#206+rama+#185); | |
gotoxy(23,9); | |
writeln(#186,q,jeden[3],x,#186,q,dwa[3],x,#186,q,trzy[3],x,#186,q,cztery[3],x,#186,q,odp[3]); | |
gotoxy(23,10); | |
writeln(#204+rama+#206+rama+#206+rama+#206+rama+#185); | |
gotoxy(23,11); | |
writeln(#186,q,jeden[2],x,#186,q,dwa[2],x,#186,q,trzy[2],x,#186,q,cztery[2],x,#186,q,odp[2]); | |
gotoxy(23,12); | |
writeln(#204+rama+#206+rama+#206+rama+#206+rama+#185); | |
gotoxy(23,13); | |
writeln(#186,q,jeden[1],x,#186,q,dwa[1],x,#186,q,trzy[1],x,#186,q,cztery[1],x,#186,q,odp[1]); | |
gotoxy(23,14); | |
writeln(#200+rama+#202+rama+#202+rama+#202+rama+#188); | |
end; | |
procedure pokaz; | |
begin | |
writeln('Oto Twoje poprzednie ruchy:'); | |
writeln('I---I---I---I---I'); | |
writeln('I ',jeden[5],' I ',dwa[5],' I ',trzy[5],' I ',cztery[5],' I ',odp[5]); | |
writeln('I---I---I---I---I'); | |
writeln('I ',jeden[4],' I ',dwa[4],' I ',trzy[4],' I ',cztery[4],' I ',odp[4]); | |
writeln('I---I---I---I---I'); | |
writeln('I ',jeden[3],' I ',dwa[3],' I ',trzy[3],' I ',cztery[3],' I ',odp[3]); | |
writeln('I---I---I---I---I'); | |
writeln('I ',jeden[2],' I ',dwa[2],' I ',trzy[2],' I ',cztery[2],' I ',odp[2]); | |
writeln('I---I---I---I---I'); | |
readln | |
end; | |
begin | |
textbackground(blue); | |
clrscr; | |
losowanie; | |
gotoxy(27,1); | |
writeln('Witaj w grze mastermind.'); | |
gotoxy(7,2); | |
writeln('Czy chcesz poznac zasady gry? t-tak/n-nie, zaczynam gre od razu.'); | |
wybor1:=readkey; | |
gotoxy(1,5); | |
if wybor1=('t') then | |
begin | |
writeln('Mastermind jest gra logiczna polegajaca na odgadnieciu wylosowanych przez kompu-ter liczb.'); | |
writeln('Liczby sa losowane z zakresu 1-6 i przyporzadkowywane czterem pozycjom.'); | |
writeln('Nalezy podawac liczby od lewej do prawej.'); | |
writeln('Wazne! Liczby nie moga sie powtarzac.'); | |
writeln('Po kazdej kolejce komputer podaje podpowiedz.'); | |
writeln('Podpowiedz polega na podaniu czy wpisane przez nas liczby odpowiadaja wylosowa- nym.'); | |
writeln('v - oznacza dobra liczba i na dobrym miejscu'); | |
writeln('vx - oznacza dobra liczba, ale na zlym miejscu'); | |
writeln('x - oznacza zla liczba'); | |
writeln('Wcisnij enter aby zaczac.'); | |
readln; | |
end | |
else; | |
z:=5; | |
repeat | |
begin | |
repeat | |
textbackground(blue); | |
clrscr; | |
if z>4 then | |
begin | |
writeln('Masz ',z,' szans'); | |
end | |
else | |
writeln('Masz ',z,' szanse'); | |
ramka; | |
writeln('Podaj liczbe, ktora bedzie Twoim zdaniem w pierwszym polu(z zakresu 1 do 6)'); | |
readln(jeden[z]); | |
pisanie1; | |
gotoxy(1,17); | |
writeln('Podaj liczbe, ktora bedzie Twoim zdaniem w drugim polu(z zakresu 1 do 6)'); | |
readln(dwa[z]); | |
pisanie2; | |
gotoxy(1,19); | |
writeln('Podaj liczbe, ktora bedzie Twoim zdaniem w trzecim polu(z zakresu 1 do 6)'); | |
readln(trzy[z]); | |
pisanie3; | |
gotoxy(1,21); | |
writeln('Podaj liczbe, ktora bedzie Twoim zdaniem w czwartym polu(z zakresu 1 do 6)'); | |
readln(cztery[z]); | |
pisanie4; | |
gotoxy(1,23); | |
writeln('jestes pewny swoich liczb? t-tak/n-nie, chce je wpisac ponownie'); | |
wybor2:=readkey; | |
until wybor2=('t'); | |
end; | |
sprawdzanie; | |
sprawdzaniecd; | |
writeln('Wcisnij enter'); | |
readln; | |
z:=z-1; | |
until z=0; | |
clrscr; | |
gotoxy(38,1); | |
writeln('Koniec gry.'); | |
gotoxy(23,2); | |
writeln(#201+rama+#205+rama+#205+rama+#205+rama+#187); | |
gotoxy(23,3); | |
writeln(#186+' Prawidlowe rozwiazanie to: '+#186); | |
gotoxy(23,4); | |
writeln(#204+rama+#203+rama+#203+rama+#203+rama+#185); | |
gotoxy(23,5); | |
writeln(#186,q,a,x,#186,q,b,x,#186,q,c,x,#186,q,d,x,#186); | |
gotoxy(23,6); | |
writeln(#200+rama+#202+rama+#202+rama+#202+rama+#188); | |
gotoxy(4,8); | |
writeln('Jesli chcesz wpisac swoj wynik wcisnij 1/jesli chcesz skonczyc wcisnij 2'); | |
readln(wybor3); | |
if wybor3=1 then | |
begin | |
clrscr; | |
writeln('Oto poprzedni wyniki:'); | |
assign(plik,'C:\gry\wynik.txt'); | |
reset(plik); | |
repeat | |
readln(plik,linia); | |
writeln; | |
writeln(linia); | |
until eof(plik); | |
writeln('Podaj swoje imie aby zostac zapisanym w histori wynikow.'); | |
readln(nazwa); | |
append(plik); | |
writeln(plik,nazwa,' ',w); | |
reset(plik); | |
repeat | |
readln(plik,linia); | |
clrscr; | |
writeln; | |
writeln(linia); | |
until eof(plik); | |
close(plik); | |
readln; | |
end | |
else; | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment