17. september 2003 - 23:38Der er
1 kommentar og 1 løsning
dialog med ini fil(er)
Hej...
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...
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
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.
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
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
Synes godt om
Ny brugerNybegynder
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.