Avatar billede cro1984 Nybegynder
20. september 2003 - 22:58

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
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester