Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Project2;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- SysUtils, Crt;
- type
- TMenu = class
- var volbavmenu : integer;
- var puvodniX1,puvodniY1,puvodniX2,puvodniY2,pocetkol,obtiznost,pocetodehranychkol,
- pocetvyher1,pocetvyher2,pocettahu1,pocettahu2,skore1,skore2: integer;
- var hrac1,hrac2,volbapohre: char;
- var nactenytext,jmenoviteze,prvnislovo,druhyslovo: string;
- var Klavesa : char;
- var pole: array of array of char;
- procedure vytvor;
- procedure lehka;
- procedure stredni;
- procedure tezka;
- procedure konec;
- procedure vypiszaznam;
- procedure zapisrekord;
- procedure jezdeniaut;
- procedure nahodnahra;
- end;
- var Menu:TMenu;
- procedure TMenu.vytvor;
- var
- I : integer;
- begin
- writeln('vitej ve hre');
- writeln('pro lehkou hru zadej 1');
- writeln('pro středně těžkou hru zadej 2');
- writeln('pro těžkou hru zadej 3');
- writeln('pro nahodnou hru zadej 4');
- writeln('pro tabulku vysledku zadej 5');
- writeln('pro konec zadej 0');
- readln(volbavmenu);
- if volbavmenu=1 then
- begin
- write('zadej pocet kol: ');
- readln(pocetkol);
- pocetodehranychkol := 0;
- pocetvyher1:=0;
- pocetvyher2:=0;
- jmenoviteze:='';
- for I := 1 to pocetkol do
- begin
- lehka;
- end;
- if pocetvyher1>pocetvyher2 then
- begin
- writeln('hrac 1 vitez');
- writeln('vysledne skore: ',skore1);
- writeln('zadej jmeno viteze');
- readln(jmenoviteze);
- writeln('tabulka rekordu: ');
- zapisrekord;
- end
- else
- if pocetvyher2>pocetvyher1 then
- begin
- writeln('hrac 2 vitez');
- writeln('vysledne skore: ',skore2);
- writeln('zadej jmeno viteze');
- readln(jmenoviteze);
- writeln('tabulka rekordu: ');
- end;
- vypiszaznam;
- writeln('pro hlavni menu zadej H');
- writeln('pro konec hry zadej K');
- readln(volbapohre);
- if volbapohre='H' then
- begin
- clrscr;
- vytvor;
- end
- else
- if volbapohre='K' then
- begin
- konec;
- end;
- end;
- if volbavmenu=2 then
- begin
- write('zadej pocet kol: ');
- readln(pocetkol);
- pocetodehranychkol := 0;
- pocetvyher1:=0;
- pocetvyher2:=0;
- jmenoviteze:='';
- for I := 1 to pocetkol do
- begin
- stredni;
- end;
- if pocetvyher1>pocetvyher2 then
- begin
- writeln('hrac 1 vitez');
- writeln('vysledne skore: ',skore1);
- writeln('zadej jmeno viteze');
- readln(jmenoviteze);
- writeln('tabulka rekordu: ');
- zapisrekord;
- end
- else
- if pocetvyher2>pocetvyher1 then
- begin
- writeln('hrac 2 vitez');
- writeln('vysledne skore: ',skore2);
- writeln('zadej jmeno viteze');
- readln(jmenoviteze);
- writeln('tabulka rekordu: ');
- end;
- vypiszaznam;
- writeln('pro hlavni menu zadej H');
- writeln('pro konec hry zadej K');
- readln(volbapohre);
- if volbapohre='H' then
- begin
- clrscr;
- vytvor;
- end
- else
- if volbapohre='K' then
- begin
- konec;
- end;
- end;
- if volbavmenu=3 then
- begin
- write('zadej pocet kol: ');
- readln(pocetkol);
- pocetodehranychkol := 0;
- pocetvyher1:=0;
- pocetvyher2:=0;
- jmenoviteze:='';
- for I := 1 to pocetkol do
- begin
- tezka;
- end;
- if pocetvyher1>pocetvyher2 then
- begin
- writeln('hrac 1 vitez');
- writeln('vysledne skore: ',skore1);
- writeln('zadej jmeno viteze');
- readln(jmenoviteze);
- writeln('tabulka rekordu: ');
- zapisrekord;
- end
- else
- if pocetvyher2>pocetvyher1 then
- begin
- writeln('hrac 2 vitez');
- writeln('vysledne skore: ',skore2);
- writeln('zadej jmeno viteze');
- readln(jmenoviteze);
- writeln('tabulka rekordu: ');
- end;
- vypiszaznam;
- writeln('pro hlavni menu zadej H');
- writeln('pro konec hry zadej K');
- readln(volbapohre);
- if volbapohre='H' then
- begin
- clrscr;
- vytvor;
- end
- else
- if volbapohre='K' then
- begin
- konec;
- end;
- end;
- if volbavmenu=0 then
- begin
- konec;
- end;
- if volbavmenu=4 then
- begin
- nahodnahra;
- end;
- if volbavmenu=5 then
- begin
- clrscr;
- vypiszaznam;
- zapisrekord;
- end;
- end;
- procedure TMenu.lehka;
- var
- I, J: integer;
- dal : String;
- soubor1 : text;
- begin
- hrac1:='x';
- hrac2:='o';
- puvodniX1:=4;
- puvodniY1:=9;
- puvodniX2:=50;
- puvodniY2:=9;
- pocettahu1:=0;
- pocettahu2:=0;
- skore1:=0;
- skore2:=0;
- setlength(pole, 12, 55);
- J:=0;
- ClrScr;
- AssignFile(soubor1,'dalnice.txt'); //prirazeni jmena souboru k promenne
- reset(soubor1); //otevira soubor pro cteni a zapis
- // nacteni do pole
- while not eof(soubor1) do
- begin
- readln(soubor1,dal);
- J:=J+1;
- for I := 1 to 54 do
- begin
- pole[J,I] := dal[I];
- end;
- end;
- // nekonecny cyklus
- while 1=1 do
- begin
- delay(600);
- jezdeniaut;
- if (puvodniY1=1) then
- begin
- //wr
- clrscr;
- pocetvyher1:=pocetvyher1+1;
- break;
- end
- else
- begin
- if (puvodniY2=1) then
- begin
- clrscr;
- pocetvyher2:=pocetvyher2+1;
- break;
- end;
- end;
- delay(100);
- clrscr;
- for I := 1 to 10 do
- begin
- for J := 1 to 54 do
- begin
- write(pole[I,J]);
- end;
- writeln;
- end;
- if KeyPressed then
- begin
- Klavesa:=ReadKey;
- //clrscr; write(Klavesa); readln;
- if Klavesa='w' then
- begin
- if pole[puvodniY1-1,puvodniX1]=' ' then
- begin
- puvodniY1:=puvodniY1-1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='d' then
- begin
- if pole[puvodniY1,puvodniX1+1]=' ' then
- begin
- puvodniX1:=puvodniX1+1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='a' then
- begin
- if pole[puvodniY1,puvodniX1-1]=' ' then
- begin
- puvodniX1:=puvodniX1-1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='s' then
- begin
- if pole[puvodniY1+1,puvodniX1]=' ' then
- begin
- puvodniY1:=puvodniY1+1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='i' then
- begin
- if pole[puvodniY2-1,puvodniX2]=' ' then
- begin
- puvodniY2:=puvodniY2-1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='l' then
- begin
- if pole[puvodniY2,puvodniX2+1]=' ' then
- begin
- puvodniX2:=puvodniX2+1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='j' then
- begin
- if pole[puvodniY2,puvodniX2-1]=' ' then
- begin
- puvodniX2:=puvodniX2-1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='k' then
- begin
- if pole[puvodniY2+1,puvodniX2]=' ' then
- begin
- puvodniY2:=puvodniY2+1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- end;
- if pole[puvodniY2,puvodniX2]='K' then
- begin
- puvodniX2:=50;
- puvodniY2:=9;
- write(hrac2);
- end;
- if pole[puvodniY1,puvodniX1]='K' then
- begin
- puvodniX1:=4;
- puvodniY1:=9;
- write(hrac1);
- end;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- skore1:=pocettahu1*2;
- skore2:=pocettahu2*2;
- GoToXY(14,10);
- writeln;
- writeln('hra ma :',pocetkol,' kol(o)');
- writeln('hrac jedna udelal: ',pocettahu1,' tahu');
- writeln('hrac dve udelal: ',pocettahu2,' tahu');
- end;
- closefile(soubor1);
- end;
- procedure TMenu.stredni;
- var
- I, J: integer;
- dal : String;
- soubor1 : text;
- begin
- hrac1:='x';
- hrac2:='o';
- puvodniX1:=4;
- puvodniY1:=9;
- puvodniX2:=50;
- puvodniY2:=9;
- pocettahu1:=0;
- pocettahu2:=0;
- skore1:=0;
- skore2:=0;
- setlength(pole, 12, 55);
- J:=0;
- ClrScr;
- AssignFile(soubor1,'dalnice2.txt'); //prirazeni jmena souboru k promenne
- reset(soubor1); //otevira soubor pro cteni a zapis
- // nacteni do pole
- while not eof(soubor1) do
- begin
- readln(soubor1,dal);
- J:=J+1;
- for I := 1 to 54 do
- begin
- pole[J,I] := dal[I];
- end;
- end;
- // nekonecny cyklus
- while 1=1 do
- begin
- delay(300);
- jezdeniaut;
- if (puvodniY1=1) then
- begin
- //wr
- clrscr;
- pocetvyher1:=pocetvyher1+1;
- break;
- end
- else
- begin
- if (puvodniY2=1) then
- begin
- clrscr;
- pocetvyher2:=pocetvyher2+1;
- break;
- end;
- end;
- delay(100);
- clrscr;
- for I := 1 to 10 do
- begin
- for J := 1 to 54 do
- begin
- write(pole[I,J]);
- end;
- writeln;
- end;
- if KeyPressed then
- begin
- Klavesa:=ReadKey;
- //clrscr; write(Klavesa); readln;
- if Klavesa='w' then
- begin
- if pole[puvodniY1-1,puvodniX1]=' ' then
- begin
- puvodniY1:=puvodniY1-1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='d' then
- begin
- if pole[puvodniY1,puvodniX1+1]=' ' then
- begin
- puvodniX1:=puvodniX1+1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='a' then
- begin
- if pole[puvodniY1,puvodniX1-1]=' ' then
- begin
- puvodniX1:=puvodniX1-1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='s' then
- begin
- if pole[puvodniY1+1,puvodniX1]=' ' then
- begin
- puvodniY1:=puvodniY1+1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='i' then
- begin
- if pole[puvodniY2-1,puvodniX2]=' ' then
- begin
- puvodniY2:=puvodniY2-1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='l' then
- begin
- if pole[puvodniY2,puvodniX2+1]=' ' then
- begin
- puvodniX2:=puvodniX2+1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='j' then
- begin
- if pole[puvodniY2,puvodniX2-1]=' ' then
- begin
- puvodniX2:=puvodniX2-1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='k' then
- begin
- if pole[puvodniY2+1,puvodniX2]=' ' then
- begin
- puvodniY2:=puvodniY2+1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- end;
- if pole[puvodniY2,puvodniX2]='K' then
- begin
- puvodniX2:=50;
- puvodniY2:=9;
- write(hrac2);
- end;
- if pole[puvodniY1,puvodniX1]='K' then
- begin
- puvodniX1:=4;
- puvodniY1:=9;
- write(hrac1);
- end;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- skore1:=pocettahu1*2;
- skore2:=pocettahu2*2;
- GoToXY(14,10);
- writeln;
- writeln('hra ma :',pocetkol,' kol(o)');
- writeln('odehrali jste:',pocetodehranychkol,'kol(a)');
- writeln('hrac jedna udelal: ',pocettahu1,' tahu');
- writeln('hrac dve udelal: ',pocettahu2,' tahu');
- end;
- closefile(soubor1);
- end;
- procedure TMenu.tezka;
- var
- I, J: integer;
- dal : String;
- soubor1 : text;
- begin
- hrac1:='x';
- hrac2:='o';
- puvodniX1:=4;
- puvodniY1:=9;
- puvodniX2:=50;
- puvodniY2:=9;
- pocettahu1:=0;
- pocettahu2:=0;
- skore1:=0;
- skore2:=0;
- setlength(pole, 12, 55);
- J:=0;
- ClrScr;
- AssignFile(soubor1,'dalnice3.txt'); //prirazeni jmena souboru k promenne
- reset(soubor1); //otevira soubor pro cteni a zapis
- // nacteni do pole
- while not eof(soubor1) do
- begin
- readln(soubor1,dal);
- J:=J+1;
- for I := 1 to 54 do
- begin
- pole[J,I] := dal[I];
- end;
- end;
- // nekonecny cyklus
- while 1=1 do
- begin
- delay(200);
- jezdeniaut;
- if (puvodniY1=1) then
- begin
- //wr
- clrscr;
- pocetvyher1:=pocetvyher1+1;
- break;
- end
- else
- begin
- if (puvodniY2=1) then
- begin
- clrscr;
- pocetvyher2:=pocetvyher2+1;
- break;
- end;
- end;
- delay(100);
- clrscr;
- for I := 1 to 10 do
- begin
- for J := 1 to 54 do
- begin
- write(pole[I,J]);
- end;
- writeln;
- end;
- if KeyPressed then
- begin
- Klavesa:=ReadKey;
- //clrscr; write(Klavesa); readln;
- if Klavesa='w' then
- begin
- if pole[puvodniY1-1,puvodniX1]=' ' then
- begin
- puvodniY1:=puvodniY1-1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='d' then
- begin
- if pole[puvodniY1,puvodniX1+1]=' ' then
- begin
- puvodniX1:=puvodniX1+1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='a' then
- begin
- if pole[puvodniY1,puvodniX1-1]=' ' then
- begin
- puvodniX1:=puvodniX1-1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='s' then
- begin
- if pole[puvodniY1+1,puvodniX1]=' ' then
- begin
- puvodniY1:=puvodniY1+1;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- pocettahu1:=pocettahu1+1;
- end;
- end;
- if Klavesa='i' then
- begin
- if pole[puvodniY2-1,puvodniX2]=' ' then
- begin
- puvodniY2:=puvodniY2-1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='l' then
- begin
- if pole[puvodniY2,puvodniX2+1]=' ' then
- begin
- puvodniX2:=puvodniX2+1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='j' then
- begin
- if pole[puvodniY2,puvodniX2-1]=' ' then
- begin
- puvodniX2:=puvodniX2-1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- if Klavesa='k' then
- begin
- if pole[puvodniY2+1,puvodniX2]=' ' then
- begin
- puvodniY2:=puvodniY2+1;
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- pocettahu2:=pocettahu2+1;
- end;
- end;
- end;
- if pole[puvodniY2,puvodniX2]='K' then
- begin
- puvodniX2:=50;
- puvodniY2:=9;
- write(hrac2);
- end;
- if pole[puvodniY1,puvodniX1]='K' then
- begin
- puvodniX1:=4;
- puvodniY1:=9;
- write(hrac1);
- end;
- GoToXY(puvodniX1,puvodniY1);
- write(hrac1);
- GoToXY(puvodniX2,puvodniY2);
- write(hrac2);
- skore1:=pocettahu1*2;
- skore2:=pocettahu2*2;
- GoToXY(14,10);
- writeln;
- writeln('hra ma :',pocetkol,' kol(o)');
- writeln('odehrali jste:',pocetodehranychkol,'kol(a)');
- writeln('hrac jedna udelal: ',pocettahu1,' tahu');
- writeln('hrac dve udelal: ',pocettahu2,' tahu');
- end;
- closefile(soubor1);
- end;
- procedure TMenu.nahodnahra;
- begin
- randomize;
- pocetkol:=random(9)+1;
- obtiznost:=random(2)+1;
- if obtiznost=1 then
- begin
- lehka;
- end;
- if obtiznost=2 then
- begin
- stredni;
- end;
- begin
- tezka;
- end;
- end;
- procedure TMenu.vypiszaznam;
- var
- textik : string;
- soubor : text;
- begin
- if not FileExists('vysledky.txt') then
- begin
- writeln('soubor s vysledky neexistuje');
- end
- else
- begin
- AssignFile(soubor,'vysledky.txt'); //prirazeni jmena souboru k promenne
- reset(soubor); //otevira soubor pro cteni a zapis
- while not eof(soubor) do
- begin
- readln(soubor,textik);
- writeln(textik);
- end;
- closefile(soubor);
- end;
- end;
- procedure TMenu.konec;
- begin
- halt(1);
- end;
- procedure TMenu.zapisrekord;
- var
- textik : string;
- soubor : text;
- znak,k:integer;
- begin
- znak:=0;
- if not FileExists('vysledky.txt') then
- begin
- writeln('soubor s vysledky neexistuje');
- end
- else
- begin
- AssignFile(soubor,'vysledky.txt'); //prirazeni jmena souboru k promenne
- reset(soubor); //otevira soubor pro cteni a zapis
- while not eof(soubor) do
- begin
- readln(soubor,textik);
- k:=0;
- //znak:= 0;
- prvnislovo:='';
- druhyslovo:='';
- for znak := 1 to length(textik) do
- begin
- //Write(textik[znak]); Readln;
- if textik[znak]=' ' then
- begin
- k:=1
- end;
- if k=0 then
- begin
- prvnislovo := concat(prvnislovo,textik[znak]);
- end
- else
- begin
- druhyslovo := concat(druhyslovo,textik[znak]);
- end;
- end;
- // tady znam prvni a druhy slovo
- // skoree pretypuju na integer a ulozim to do nějakyho pole rekordu nebo nejakyho nekonecnyho rekordu
- // pak asi smazu ten soubor, vytvorim novej prazdnej soubor a zapisuju do nej ten rekord a kdyz se to hodi, tak tam mrsknu to skore vyherce ty hry
- writeln(prvnislovo,':',druhyslovo); readln;
- end;
- closefile(soubor);
- end;
- end;
- procedure TMenu.jezdeniaut;
- var I,J:integer;
- K: char;
- begin
- for I := 1 to 10 do
- begin
- if (I=2) or (I=3) or (I=4) or (I=6) or (I=7) or (I=8) then
- begin
- for J := 1 to 54 do
- begin
- if J=1 then
- begin
- K:=pole[I,1];
- end else if J<=53 then
- begin
- pole[I,J-1]:=pole[I,J];
- end
- else
- begin
- pole[I,53]:=K;
- end;
- end;
- end;
- end;
- end;
- begin
- try
- //Hra := THra.Create
- Menu := TMenu.Create;
- Menu.vytvor;
- //Menu.konec;
- //Menu.lehka;
- //Menu.stredni;
- Menu.Free;
- Readln;
- except
- on E: Exception do
- Writeln(E.ClassName, ': ', E.Message);
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement