Posto Delphi nema ReadKey, ClrScr i slicne funkcije pisem ti ovaj kod iz glave ovde na forumu pa ce 100% biti nekih gresaka, ali ces to lako ispraviti.
Code:
program Milioner;
uses
Crt, Dos;
const
MaxBrojPitanja = 100;
PocetnaSuma = 100;
TacanOdgovorBonus = 2;
BrojPitanja = 20;
type
TPitanje = record
Pitanje: String;
Odgovori: array [1..4] of String;
TacanOdgovor: Byte;
Tezina: Byte;
end;
var
Pitanja: array [0.. MaxBrojPitanja - 1] of TPitanje;
PitanjaFajl: Text;
Suma: Real;
BrojUcitanihPitanja: Integer;
BrojPitanjaZaKviz: Integer;
TrenutnoPitanje: Byte;
Kraj: Boolean;
Pitanje: TPitanje;
Pogresno: Boolean;
PolaPola, Prijatelj, Publika: Boolean;
Odgovor: Integer;
function IzaberiPitanje(RB: Integer): TPitanje;
begin
Result := Pitanja[Random(MaxBrojPitanja)];
{Prilikom biranja pitanja trebalo bi dodati jos i proveru
da li je to pitanje vec izvuceno i na tezinu pitanja
u odnosu na redni broj... bilo bi glupo da prvo pitanje
bude teze od zadnjeg, zar ne?}
end;
function Ulaz(C: Char): Boolean;
var
Code: Integer;
begin
Result := False;
Case C of
'1'..'4':
begin
Val(C, Odgovor, Code);
Result := True;
end;
'5': if PolaPola then PomocPP;
'6': if Prijatelj then PomocPr;
'7': if Publika then PomocPu;
'0': Halt(0);
end;
end;
procedure PomocPP;
var P1, P2: Byte;
begin
P1 = Pitanje.TacanOdgovor;
while P1 = Pitanje.TacanOdgovor do P1 := Random(4) + 1;
P2 := P1;
while (P2 = Pitanje.TacanOdgovor) or (P2 = P1) do P2 := Random(4) + 1;
WriteLn(' Odgovori pod ', P1, ' i ', P2, ' su pogresni';
end;
procedure PomocPr;
begin
WriteLn(' Mislim da je tacan odgovor pod ', Random(4) + 1);
{Prijatelj samo lupa... trebalo bi napraviti da ima vece
sanse da kaze tacan odgovor u pocetku, a kasnije sve manje}
end;
procedure PomocPu;
var
P1, P2, P3, P4: Integer;
begin
P1 := Random(101);
P2 := Random(101 - P1);
P3 := Random(101 - P1 - P2);
P4 := Random(101 - P1 - P2 - P3);
WriteLn(' 1. ', P1, '%');
WriteLn(' 2. ', P1, '%');
WriteLn(' 3. ', P1, '%');
WriteLn(' 4. ', P1, '%');
end;
begin
ClrScr;
Randomize;
WriteLn('Milioner 1.0');
WriteLn;
WriteLn('Molim Vas sacekajte dok se pitanja ucitaju.');
BrojUcitanihPitanje := 0;
{$I-}
Assign(PitanjaFajl, 'Pitanja.cfg');
Reset(PitanjaFajl);
while (not Eof(PitanjaFajl)) and (BrojUcitanihPitanja <= MaxBrojPitanja) do
begin
Inc(BrojUcitanihPitanja);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].Pitanje);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].Odgovori[1]);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].Odgovori[2]);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].Odgovori[3]);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].Odgovori[4]);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].TacanOdgovor);
ReadLn(PitanjaFajl, Pitanja[BrojUcitanihPitanja].Tezina);
end;
Close(PitanjaFajl);
{$I+}
IOResult;
if BrojUcitanihPitanja < BrojPitanja then
BrojPitanjaZaKviz := BrojUcitanihPitanja
else
BrojPitanjaZaKviz := BrojPitanja;
Repeat
WriteLn(' Dobrodosli u kviz Milioner!!!');
WriteLn;
Kraj := False;
Suma := 0;
TrenutnoPitanje := 1;
Pogresno := False;
PolaPola := True;
Prijatelj := True;
Publika := True;
while (TrenutnoPitanje <= BrojPitanjaZaKviz) and
(not Pogresno) do
begin
Pitanje := IzaberiPitanje(TrenutnoPitanje);
Inc(TrenutnoPitanje);
WriteLn(Pitanje.Pitanje);
WriteLn('1. ', Pitanje.Odgovori[1]);
WriteLn('2. ', Pitanje.Odgovori[2]);
WriteLn('3. ', Pitanje.Odgovori[3]);
WriteLn('4. ', Pitanje.Odgovori[4]);
if PolaPola then
WriteLn('5. Pola-pola');
if Prijatelj then
WriteLn('6. Prijatelj');
if Publika then
WriteLn('7. Publika');
WriteLn('0. Izlaz');
Repeat Until Ulaz(ReadKey);
if Odgovor = Pitanje.TacanOdgovor then
begin
WriteLn('Tacno!!!');
if Suma = 0 then
Suma := PocetnaSuma
else
Suma := Suma * TacanOdgovorBonus;
WriteLn('Sada imate ', Suma:0:2, ' din.');
end
else
begin
WriteLn('Pogresno!!!');
Pogresno := True;
WriteLn('Osvojili ste ', Suma:0:2, ' din.');
end;
end;
WriteLn('Da li zelite da izadjete?');
if UpCase(ReadKey) = 'D' then Kraj := True;
Until Kraj;
end.
Eto... sad ga samo sredi, ispravi greske, dodaj sta ti treba, oduzmi sta ne treba... format fajla u kojem su pitanja provali sam... to je bar lako
