就是有顯示一個英文,然后跟著打,打對了就顯示打對的字母,打錯了光標不走動。直到打到了。

解决方案 »

  1.   

    const
      Src : Array[0..12] Of Char = ('H','o','w',' ','a','r','e',' ','y','o','u',' ','!');
    var
      Cur : integer = 0;procedure TForm1.FormCreate(Sender: TObject);
    begin
      RichEdit1.Text := string(Src);
    end;procedure TForm1.RichEdit2KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #8 then Dec(Cur);
      if Key = Src[Cur] then Inc(Cur) else begin Key := #0; beep; end;
    end;
      

  2.   

    上面是练习模式的。下面再给你一种游戏模式的:
    const
      Src : Array[0..9] Of Char = ('H','o','w','a','r','e','y','o','u','!');
    var
      Cur : integer = 0;procedure TForm1.Timer1Timer(Sender: TObject);
    var
      X, Y : Integer;
    begin
      Caption := '请击键';
      X := Random(200);
      Y := Random(200);
      Canvas.TextOut(X, Y, Src[Cur]);
      Inc(Cur);
      if Cur > High(Src) then
        begin
        Caption := '游戏结束';
        Timer1.Enabled := false;
        end;
    end;procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = Src[Cur-1] then caption := '击打正确!' else Caption := '错!';
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Timer1.Interval := 3000;
      Timer1.Enabled := True;
    end;呵呵,急匆匆地写的,不太完美
      

  3.   

    上面这个例子,测试时Form上不要放任何可视控件啊!因为我用了Form的KeyPress事件。好象如果有可视控件的话,Form就得不到KeyPress的焦点了。没时间研究这焦点问题了呵呵。
      

  4.   

    謝謝,但又有一個問題。
    比如:系統出了一個English單詞。我照著這個單詞來打,每打一個對的。系統就給他標上顏色又怎么做呢?比如:我打了E,那么系統給出的那個English單詞的E字就變為紅色。再次謝謝你, 這么快回我問題。
      

  5.   

    呵呵,这个新问题,你可以参考这个贴子(也是我回的):
    http://community.csdn.net/Expert/topic/5363/5363311.xml?temp=.6485712
    我就不帮你改写了。只要思路有了,对你来说改写难度应该不大。
      

  6.   

    其实很简单,已给你改了,如下:const
      Src : Array[0..12] Of Char = ('H','o','w',' ','a','r','e',' ','y','o','u',' ','!');
    var
      Cur : integer = 0;procedure TForm1.FormCreate(Sender: TObject);
    begin
      RichEdit1.Text := string(Src);
    end;procedure TForm1.RichEdit2KeyPress(Sender: TObject; var Key: Char);
    begin
      if Key = #8 then Dec(Cur);
      if Key = Src[Cur] then
        begin
        RichEdit1.SelStart := Cur;
        RichEdit1.SelLength := 1;
        RichEdit1.SelAttributes.Color := clRed;
        Inc(Cur);
        end else begin Key := #0; beep; end;
    end;
      

  7.   

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      RichEdit1.Text := string(Src);
      RichEdit2.Lines.Clear;  //////加上这句好一点。上面所有的代码都是思路,你需要自己丰富它
    end;
      

  8.   

    那如果打字的時候光標在下面用下劃線提示呢?開始時這樣:_,我打了一個E之后就成:E_總之有_這樣一個光標提示,那就完美了。再幫幫忙。好嗎?thx!
      

  9.   

    我觉得有一点得寸进尺。你认为呢?呵~请不要生气。因为到目前为止,你已经提出了三个几乎没有关系的问题(说有关系,只能说这三个问题都出在你正在做的一个软件里)。前两个我已给你解答。第三个,我只能给你一条建议:用MaskEdit模拟。
    建议你另开一贴提问。一贴一问题,这应该是尊重别人的表现。如果觉得问题不值100分,可以在发贴的时候按CSDN默认的分值,不必发100分贴。
    细想一下,这个软件,本来难度就不大;呵~~ 难道你不想自己动脑解决一些具体的问题,然后正大光明地在软件作者一栏里写上你的名字?如果所有问题都是别人完成的,那么,“作者”....自己动脑试验解决难题,是进步的一种捷径。这是我的亲身体会。请结贴。
      

  10.   

    你在這里幫我解決了我另開一張貼給你接分。200分。絕不食言。我剛學不久的,很多東西都不是很清楚,所以只能上來問高手了。謝謝!用MaskEdit模拟怎么模擬呢?
      

  11.   

    可能你是CSDN新成员。这样吧,我给你一个建议:以后发贴时,相关联的问题都要一起发在贴子的楼顶上,(也就是说,所有问题一起给出:1、问题一;2、问题二....)然后给以你认为相符合的分值。或者,减少分值,每个问题一个贴。