Program igra; Uses crt; Label 1,2,3,4,5,6; Var ind,x,y,a,b,g,d,br,zavrsnirez,u,bod,rekord,i,n,pauza,gs,ds, brtacnih,brnetacnih,zivot,skok,partija,xs,ys,as,bs:integer; naredba,o,p:char; odgovor,tacanodg,logo,c:string; kraj:Boolean; procenat,broj,korijen:real; ime: array [1..50] of string; uspjeh: array [1..50] of real; pokusaja: array [1..50] of integer; Procedure inicijalizacija; Begin br:=0; ind:=0; Rekord:=3000; zivot:=3; bod:=0; End; Procedure tezina; Var t:integer; Begin clrscr; gotoxy (33,10); Write ('Izaberi tezinu.'); gotoxy (33,12); Write ('1) Lako'); gotoxy (33,13); write ('2) Srednje'); gotoxy (33,14); write ('3) Tesko'); gotoxy (33,16); write ('>'); Repeat Readln (t); until (t=1) or (t=2) or (t=3); Case t of 1: pauza:=500; 2: pauza:=250; 3: pauza:=100; end; end; Procedure pocetak; Begin Bod:=bod+1; Randomize; x:=15; y:=15; g:=70; d:=5; Repeat; a:=Random (70); b:=random (25); Until ((a>3)and(a<75)and(b>3)and(b<23)); End; Procedure enter; begin gotoxy (1,24); write ('Pritisni ENTER.'); Readln; end; Procedure autor; Begin Gotoxy (1,7); c:='Made by IVAN'; For n:=1 to 12 do begin gotoxy (2,n+6); write (copy(c,n,1)); end; End; procedure kretanje; Var t1,t2:integer; Begin Repeat t1:=random(75); t2:=random(25); if at1 then a:=a-1; if bt1 then b:=b-1; Until ((t1>3)and(t1<75)and(t2>3)and(t2<23)); Gotoxy (a,b); textcolor (3); writeln ('*'); End; procedure kretanjecrvena; Var t1,t2:integer; Begin Repeat t1:=random(75); t2:=random(25); if gt1 then g:=g-1; if dt1 then d:=d-1; Until ((t1>3)and(t1<75)and(t2>3)and(t2<23)); Gotoxy (g,d); textcolor (4); writeln ('*'); End; procedure pomjeranje; begin if (ind=97) or (ind=115) or (ind=100) or (ind=119) then Case ind of 100: x:=x+1; 97: x:=x-1; 119: y:=y-1; 115: y:=y+1; End; If ((x<5) or (x>73) or (y<4) or (y>22)) then begin zivot:=zivot-1; pocetak; End; gotoxy (x,y); textcolor (14); write ('O'); end; Procedure brisanje; begin gotoxy (xs,ys); if (x<>xs) or (y<>ys) then write (' '); xs:=x; ys:=y; gotoxy (as,bs); if (a<>as) or (b<>bs) then write (' '); as:=a; bs:=b; gotoxy (gs,ds); if (g<>gs) or (d<>ds) then write (' '); gs:=g; ds:=d; gotoxy (1,1); end; Procedure Parametri; Begin textcolor (7); gotoxy (1,25); Write ('Poteza: ',br); korijen:=(sqr( (abs(x)- abs (a)) - sqr( abs(y)- abs (b)))); if korijen<0 then korijen:=Korijen*(-1); u:=Round (sqrt(korijen)); gotoxy (16,25); write ('Udaljenost: ',u); gotoxy (37,25); write ('Bodova: ',bod-1); gotoxy (53,25); write ('Zivota: ',zivot); gotoxy (67,25); write ('Partija: ',partija); End; Procedure Skor; Begin clrscr; gotoxy (23,12); Writeln (' Tacnih odgovora: ',brtacnih); gotoxy (23,13); Writeln ('Netacnih odgovora: ',brnetacnih); broj:=(brtacnih+brnetacnih); If broj=0 then broj:=1; procenat:=(brtacnih/broj)*100; gotoxy (23,14); writeln (' Uspjeh: ',procenat:3:1,' %'); uspjeh[partija]:=procenat; pokusaja[partija]:=bod; gotoxy (1,25); write ('Pritisni ENTER.'); readln; clrscr; End; Procedure Zavrsi; Begin ClrScr; gotoxy (32,5); Writeln ('K R A J'); gotoxy (65,25); Writeln ('Made by IVAN.'); End; Procedure procjena; Var istx,isty:Boolean; Begin istx:=False; isty:=False; kraj:=False; If (x=a-1) or (x=a) or (x=a+1) then istx:=true; If (y=b-1) or (y=b) or (y=b+1) then isty:=true; If istx and isty then begin kraj:=true; if (x=a-1) or (x=a) or (x=a+1) and (y=b-1) or (y=b) or (y=b+1) then zivot:=zivot-1; If kraj then zavrsnirez:=br; pocetak; end; End; Procedure prozor; begin end; Procedure polje; var i:integer; Begin For i:=3 to 23 do begin gotoxy (4,i); write ('#'); end; For i:=3 to 23 do begin gotoxy (75,i); write ('#'); end; For i:=4 to 75 do begin gotoxy (i,23); write ('#'); end; For i:=4 to 75 do begin gotoxy (i,3); write ('#'); end; end; Procedure igrac; Begin gotoxy (1,24); Write ('Ime igraca: '); Readln (ime[partija]); End; Procedure objasnjenje; Begin gotoxy (1,1); Write ('|W gore|S dole|A ljevo|D desno|ESC izlazak|',' [igrac: ',ime[partija],'] '); End; Procedure uputstvo; Begin clrscr; writeln ('Pomocu tastera A,S,D,F, pokrecete svog igraca (zuti krug) po terenu.'); writeln ('Svaki put kada uhvatite plavu zvjezdicu (*) dobijate pitanje. '); writeln ('Tacan odgovor vas vraca nazad na igru, dok vam pogresan odgovor '); writeln ('oduzima jedan zivot. Udarac u ogradu, kao i sudar sa crvenom'); writeln ('zvjezdicom vas takodje kosta jednog zivota.'); writeln ('Cilj igre je osvojiti sto vise poena.'); gotoxy (65,24); write ('Made by IVAN.'); end; Procedure znanjeorg; begin logo:='Znanje.Org'; For n:=1 to 15 do begin gotoxy (78,n+6); write (copy(logo,n,1)); end; end; Procedure izgled; begin clrscr; textcolor (7); prozor; polje; autor; znanjeorg; objasnjenje; end; {---------------------------------KVIZ-------------------------------------------------} Procedure provjera; Begin write ('>'); Readln (odgovor); If odgovor=tacanodg then begin writeln ('Tacan odgovor.'); brtacnih:=brtacnih+1; end else Begin Writeln ('Pogresan odgovor, tacan odgovor je ',tacanodg,'.'); brnetacnih:=brnetacnih+1; zivot:=zivot-1; end; readln; izgled; end; Procedure pitanje1; Begin Writeln ('Kako se zove programski jezik u kome je ova igra napisana? '); writeln ('1) Paskal'); writeln ('2) Java'); writeln ('3) C++'); tacanodg:='1'; provjera; end; Procedure pitanje2; Begin Writeln ('Koji tip varijabli ima samo cjelobrojne vrijednosti?'); writeln ('1) Char'); writeln ('2) Integer'); writeln ('3) String'); tacanodg:=('2'); provjera; End; Procedure pitanje3; Begin Writeln ('DIV u integeru oznacava:'); Writeln ('1) Podjeli dva broja a ostatak zanemari.'); Writeln ('2) Podjeli dva broja a ispisi ostatak.'); Write ('1/2?'); tacanodg:=('1'); provjera; End; Procedure pitanje4; Begin Writeln ('Koji tip varijabli korisimo za rad sa realnim brojevima?'); writeln ('1) Boolean'); writeln ('2) Integer'); writeln ('3) Real'); Tacanodg:='3'; provjera; end; Procedure pitanje5; Begin Writeln ('Koju naredbu korisimo za korjenovanje izraza?'); writeln ('1) SRT'); writeln ('2) SQR'); writeln ('3) SQRT'); tacanodg:=('3'); provjera; end; Procedure pitanje6; Begin Writeln ('Koji tip varijabli ima samo 2 stanja (TRUE i FALSE)?'); writeln ('1) Char'); writeln ('2) Integer'); writeln ('3) Boolean'); tacanodg:='3'; provjera; end; Procedure pitanje7; Begin Writeln ('Varijablom tipa CHAR mozemo da zapamtimo svaki unos sa tastature'); writeln ('u duzini od jednog znaka.'); writeln ('1) Da.'); writeln ('2) Ne.'); tacanodg:='1'; provjera; end; Procedure pitanje8; Begin Writeln ('Da li u INTEGERU mozemo da koristimo znak za djeljenje (/)?'); Writeln ('1) Da.'); Writeln ('2) Ne.'); Tacanodg:='2'; provjera; End; Procedure pitanje9; Begin Writeln ('Program napisan u Paskalu se:'); writeln ('1) Kompajlira.'); writeln ('2) Interpretira.'); tacanodg:='1'; provjera; End; Procedure pitanje10; Begin Writeln ('U izrazu s:=1000*1000, varijabla "s" mora biti iz skupa:'); Writeln ('1) Integer.'); writeln ('2) Real.'); tacanodg:='2'; provjera; End; Procedure pitanje11; begin writeln ('Svaka procedure moze da zamjeni funkciju.'); Writeln ('1) Da.'); Writeln ('2) Ne.'); tacanodg:='1'; provjera; end; Procedure pitanje12; begin writeln ('Funkcija moze sadrzavati naredbu "write" i "raed"?'); Writeln ('1) Da.'); Writeln ('2) Ne.'); tacanodg:='2'; provjera; end; Procedure kviz; Var odgovor:string; odabir:integer; Begin clrscr; textcolor (7); Randomize; odabir:=random (24) div 2; case odabir of 1: pitanje1; 2: pitanje2; 3: pitanje3; 4: pitanje4; 5: pitanje5; 6: pitanje6; 7: pitanje7; 8: pitanje8; 9: pitanje9; 10:pitanje10; 11:pitanje11; 12:pitanje12; end; end; {----------------------------------------KRAJ KVIZA------------------------------------------} Procedure glavnimeni; var izbor:char; Begin repeat; clrscr; znanjeorg; textcolor (7); Gotoxy (33,1); Write ('M E N I'); Gotoxy (25,7); Write ('1 ..... N O V A I G R A'); gotoxy (25,9); Write ('2 ..... R A N G L I S T A'); gotoxy (25,11); write ('3 ..... U P U T S T V O'); gotoxy (25,13); write ('4 ..... O A U T O R U'); gotoxy (25,15); write ('5 ..... K R A J'); gotoxy (65,24); Writeln ('Made by IVAN.'); gotoxy (1,1); izbor:=readkey; until (izbor='1') or (izbor='2') or (izbor='3') or (izbor='4') or (izbor='5'); Gotoxy (1,25); Case izbor of '1': skok:=1; '2': skok:=2; '3': skok:=3; '4': skok:=4; '5': skok:=5; end; end; Procedure tabela; begin clrscr; writeln ('IME USPJEH % BODOVA'); writeln ('------------------------------------------'); for i:=1 to partija do begin gotoxy (1,i+2); write (ime[i]); gotoxy (18,i+2); write (uspjeh[i]:1:2); gotoxy (39,i+2); write (pokusaja[i]); end; readln; glavnimeni end; Procedure informacije; begin clrscr; Writeln ('Igra je u potpunosti napisana u Paskalu.'); writeln ('Programiranje igre zavrseno je 9. Aprila 2005. godine.'); gotoxy (1,5); writeln ('Autor:'); Writeln ('Rajkovic Ivan'); Writeln ('II-3 Gimnazija'); Writeln ('Banja Luka'); gotoxy (1,12); writeln ('Za sve informacije vezane za ovu igru obratite se njenom autoru na '); writeln ('e-mail: * ivan.r@blic.net'); writeln (' * ivanrajkovic2003@yahoo.com,'); writeln ('ili na broj telefona + 387 61 837 173.'); gotoxy (59,24); writeln ('All rights reserved.'); enter; glavnimeni end; Begin {Pocetak glavnog programa} glavnimeni; case skok of 1: goto 1; 2: goto 2; 3: goto 4; 4: goto 3; 5: goto 6; End; partija:=0; 1: {zapocinje novu partiju i ide na 5} inicijalizacija; partija:=partija+1; Pocetak; igrac; tezina; uputstvo; gotoxy (62,24); write ('Pritisni ENTER.'); readln; goto 5; 2: tabela; {prikazuje rang listu} case skok of 1: goto 1; 2: goto 2; 3: goto 4; 4: goto 3; 5: goto 6; End; {O autoru} 3: informacije; case skok of 1: goto 1; 2: goto 2; 3: goto 4; 4: goto 3; 5: goto 6; End; 4: uputstvo; enter; glavnimeni; case skok of 1: goto 1; 2: goto 2; 3: goto 4; 4: goto 3; 5: goto 6; End; {uputstvo za igranje} 5: izgled; {pocinje sa 1} Repeat; Repeat; parametri; pomjeranje; kretanje; kretanjecrvena; brisanje; br:=br+1; Procjena; delay (pauza); if kraj then kviz; Until keypressed; Naredba:=Readkey; ind:=Ord (naredba); Until (ind=27) or (zivot<=0); textcolor (7); skor; glavnimeni; case skok of 1: goto 1; 2: goto 2; 3: goto 4; 4: goto 3; 5: goto 6; End; 6: {zavrsava igru ili poziva glavni meni} clrscr; sound (300); nosound; gotoxy (30,10); Write ('Zatvori igru (D/N)?'); o:=readkey; if (O='n') or (o='N') then begin glavnimeni; case skok of 1: goto 1; 2: goto 2; 3: goto 4; 4: goto 3; 5: goto 6; End; end; zavrsi; End.