dialog med ini fil
Jeg sidder faktisk lige og laver et dialog system til et spil. Jeg har fat på hovedstrukturen i det, problemet er bare hvordan jeg laver nogle enkelte ting.Man skal i spillet føre en samtale med f.eks. en person, så skal programmet hente hans.ini el. jacob.ini for at indlæse samtalen med den person.
Jeg har leget lidt med indlæsningen af ini files, men har nogle problemer med f.eks. videre føring af samtalen, når personen vælger et svar/santale mulighed:
Inde i hans.ini ser det ud sådan, den læser det først
[0]
question=Lav noget programmering?
ans=1
ans=2
ans=3
ans=4
ans1=Mp3 player
ans2=et spil
ans3=en vir.s
ans4=alt
[1]
question=mp3 player
ans=1
ans=2
ans=3
ans=4
ans1=Hvorfor?
ans2=Til hvad?
ans3=Hvordan?
ans4=til hvornår...!
Når personen så i radiogroup vælger enten
ans1=Hvorfor?
ans2=Til hvad?
ans3=Hvordan?
ans4=til hvornår...!
så skal den automatisk sætte personen videre til
ans=1 => [1]
ans=2 => [2]
ans=3 => [3]
ans=4 => [4]
ligsom et stamtræ...
Jeg har lavet lidt hvis det behøves kan jeg godt tilføje min coding...
tak
Accepteret svar: dkn
Point : 30
18/09-2003 13:01:01 hvorfor laver du så mange:
ans=1
ans=2
ans=3
ans=4
ans1=Mp3 player
ans2=et spil
ans3=en vir.s
ans4=alt
jeg mener der er funktioner til at se hvor mange værdier der ligger under en section i ini fil, derfor kunne du nøjes med:
1=Mp3 player
2=et spil
3=en vir.s
4=alt
Når du kun har det er det lidt nemmere at holde styr på. Hvad angår det andet vil jeg bare sætte tag value for radiobutton til det nummer som spørgsmål nu er, så har du styr på det.
Kommentar: cro1984
19/09-2003 14:16:07 OK hvis jeg nu gør det på den måde, så skal den jo stadig, alt efter hvilken svar mulighed man vælger 1,2,3 el. 4 gå til [2], [3], [4], hvordan vil da kodingen se ud, når jeg har det her
var
Form1: TForm1;
currentQue: Integer = 0;
korrektsvar: boolean;
BrugerPoint: Integer;
Point: Boolean;
implementation
{$R *.DFM}
function checkAns(que, ans : integer) : boolean;
var Ini: TIniFile;
temp : integer;
begin
Ini := TIniFile.Create('c:\hans.ini');
temp := ini.ReadInteger(IntToStr(que),'answer',0);
if ans = temp then
begin
result := true;
korrektsvar := true;
point := true;
BrugerPoint := BrugerPoint + 5;
end
else
begin
result := false;
korrektsvar := false;
BrugerPoint := BrugerPoint + 1;
end;
end;
function getQue(que : integer) : string;
var Ini: TIniFile;
begin
Ini := TIniFile.Create('c:\hans.ini');
result := ini.ReadString(inttostr(que),'question', 'Fejl');
end;
function getAns : string;
var Ini: TIniFile;
i : integer;
begin
form1.RadioGroup1.Items.Clear;
Ini := TIniFile.Create('c:\hans.ini');
for i := 1 to 4 do
begin
form1.RadioGroup1.items.add(ini.ReadString(inttostr(currentQue),('answer' + inttostr(i)),'fejl!'));
end;
end;
function getNext : string;
var temp : string;
begin
form1.memo1.Lines.Clear;
if korrektsvar = false then
begin
temp := getQue(currentQue);
korrektsvar := true;
end
else
begin
currentQue := currentQue + 1;
temp := getQue(currentQue);
end;
if temp = 'Fejl' then
begin
form1.memo1.lines.add(temp);
getAns;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
memo1.lines.add(getQue(currentQue) + '?');
getAns;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if checkAns(currentQue,(RadioGroup1.ItemIndex + 1)) then
begin
label1.caption := inttostr(brugerpoint);
showmessage('Du får ' + inttostr(brugerpoint) + ' point(s)');
//getNext();
end
