本人刚接触Delphi,我想用Delphi做个单词连线配对游戏软件,先把单词写在一个txt里,然后用程序读取txt里面的英语单词和中文,然后显示成5个一组的中英文配对连线游戏,随机打乱位置,将5个单词中英文连线配对,游戏时用鼠标点单词英文或中文都会显示灰色,若正确会出现一个箭头表示连对了,若不对就没反映,5个都连好后又换成新的另外5个单词,就象网上的CJC好玩背单词软件那样,怎样实现,能说说思路吗?要用到那些部件,利用什么原理,若能指点,万分感谢.

解决方案 »

  1.   

    不算太难。
    TStringList读word.txt文本。
    文本格式为:
    China=中国
    Chinese=中国人
    10个TButton显示单词,5个英文,5个中文。
    TImage画连线。
    如果正确相应的中英文button的visible属性为false或者Enabled为false。
    都完成了在随机读取对应的5个英文,5个中文。button的visible属性为true或者Enabled为true。
      

  2.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        Button5: TButton;
        Button6: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        Str1,Str2 : string;
        function comp: integer;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}
    function TForm1.comp: integer;
    begin
      if (Str1 = '') or (Str2 = '') then exit;  result := CompareStr(Str1, Str2);
      Str1 := '';
      Str2 := '';
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      button2.OnClick := Button1.OnClick;
      button3.OnClick := Button1.OnClick;
      button4.OnClick := Button1.OnClick;
      button5.OnClick := Button1.OnClick;
      button6.OnClick := Button1.OnClick;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      if str1 = '' then
        str1 := TButton(sender).Caption
      else if str2 = '' then
        str2 := TButton(sender).Caption;
      if comp = 0 then showmessage('True');end;end.
      

  3.   

    谢谢两位的指点,下一步我就是边学习边用上面两位的思路来试做个程序,再问个简单的问题,我怎么找不到TStringList部件呢?再次表示感谢。
      

  4.   

    引用他的给你写代码var
    zairu,danci:stringlist;
    i,a1,a2,suiji:integer;
    begin
     for i:=1 to 5 do begin 
      zairu.loadfromfile('world.txt');
      suiji:=random(zairu.count);
      danci.add(zairu.string[suiji]);
      zairu.del(suiji);
    end;
    for i:0 to 4 do 
     begin
      a:=pos('=',danci.string[i]);
      label1.caption:=copy(danci.string[i],0,a);
      label2.caption:=copy(danci.string[i],a,length(danci.string));其他也差不多了。。本人是菜鸟,谢谢指教
      

  5.   

    引用他的给你写代码var
    zairu,danci:stringlist;
    i,a1,a2,suiji:integer;
    begin
     for i:=1 to 5 do begin 
      zairu.loadfromfile('world.txt');
      suiji:=random(zairu.count);
      danci.add(zairu.string[suiji]);
      zairu.del(suiji);
    end;
    for i:0 to 4 do 
     begin
      a:=pos('=',danci.string[i]);
      label1.caption:=copy(danci.string[i],0,a);
      label2.caption:=copy(danci.string[i],a,length(danci.string));其他也差不多了。。本人是菜鸟,谢谢指教
      

  6.   

    抱歉只能给你思路,不能给你代码。
    因为我用cbuilder不会写pascal,只能读懂。
      

  7.   

    5楼的朋友:你好。我试用了你代码,zairu,danci:stringlist;这里就显示错误啊?怎么回事?谢谢。因为刚接触delphi.所以很菜。
      

  8.   

    ,zairu,danci:stringlist不好意思哦,是Tstringlist;
    我手工打的,有点错误。。var
    zairu,danci:stringlist;
    i,a1,a2,suiji:integer;
    begin
    zairu:=tstringlist.create;//
    danci:=tstringlist.create;//加上这两句
     for i:=1 to 5 do begin 
      zairu.loadfromfile('world.txt');
      suiji:=random(zairu.count);
      danci.add(zairu.string[suiji]);
      zairu.del(suiji);
    end;
      

  9.   

      zairu.loadfromfile('world.txt'); 加载文件
      suiji:=random(zairu.count); 随即选择一行
     danci.add(zairu.string[suiji]); 添加加入到danci这个容器里
      zairu.del(suiji); 删除这一行。已求不重复