捡金豆游戏  Nokia 手机中游戏的PC版。
http://www.csdn.net/cnshare/soft/12/12098.shtm我是用Delphi编的。
需源代码E-Mail to :
[email protected]
我希望有誰能把它改成一控件。
我只写了三个级别的。
有誰可以多写几个级别的?

解决方案 »

  1.   

    lshadow(光影) ,
    请把的E-Mail留下!
      

  2.   

    我的代码先让你看看呀!
    这其实不能算是很纯粹的Delphi的代码。因为这太C化了。
    Unit bani;InterfaceUses
       Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
       DBCGrids, Grids, StdCtrls, jpeg, ExtCtrls, about, fhelp, Menus, ImgList, ahelp;
       
    Const N = 6;
       MAx = 200;
    Type
       TMp = class(TForm)
          Mgrid: TStringGrid;
          init: TButton;
          new: TButton;
          exit: TButton;
          hide: TButton;
          mainimg: TImage;
          newimg: TImage;
          helpimg: TImage;
          ywin: TButton;
          PopupMenu1: TPopupMenu;
          mnew: TMenuItem;
          mundo: TMenuItem;
          N3: TMenuItem;
          mabout: TMenuItem;
          N5: TMenuItem;
          mexit: TMenuItem;
          ImageList1: TImageList;
          undo: TButton;
          mhelp: TMenuItem;
          help: TButton;
          about: TButton;
          si: TButton;
          sh: TTimer;
          rnd: TButton;
          two: TMenuItem;
          NO1: TMenuItem;
          NO2: TMenuItem;
          NO3: TMenuItem;
          NO4: TMenuItem;
          NO5: TMenuItem;
          N9: TMenuItem;
          no: TButton;
          L2: TButton;
          l3: TButton;
          Button1: TButton;      
          Procedure initClick(Sender: TObject);
          Procedure FormCreate(Sender: TObject);
          Procedure MgridMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
          Procedure exitClick(Sender: TObject);
          Procedure FormKeyDown(Sender: TObject; Var Key: Word;
          Shift: TShiftState);
          Procedure hideClick(Sender: TObject);
          Procedure helpimgClick(Sender: TObject);
          Procedure ywinClick(Sender: TObject);
          Procedure mainimgMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
          Procedure undoClick(Sender: TObject);
          Procedure helpClick(Sender: TObject);
          Procedure aboutClick(Sender: TObject);
          Procedure shTimer(Sender: TObject);
          // procedure siClick(Sender: TObject);
          Procedure rndClick(Sender: TObject);
          Procedure twoClick(Sender: TObject);
          Procedure noClick(Sender: TObject);
          Procedure NO1Click(Sender: TObject);
          Procedure L2Click(Sender: TObject);
          Procedure l3Click(Sender: TObject);
          Procedure NO2Click(Sender: TObject);
          Procedure NO3Click(Sender: TObject);
          Procedure newimgClick(Sender: TObject);
          //procedure iClick(Sender: TObject);
          // procedure MgridClick(Sender: TObject);
       Private
          { Private declarations }
          // procedure ssend(p:integer):forword;
       Public
          { Public declarations }
          
       End;
       type
       Way = Record
          pos: integer;
          value: integer;
       End;
          tai = procedure(Sender: TObject) Of Object;
          
    Var
       Mp: TMp;
       poto, potm, tpoto, tpotm, Jpoto, Jpotm, spoto, spotm, qpoto, qpotm: array[0..N] Of integer;
       MAXS, MINS: WAY;
       MWAY: array[1..MAX] Of WAY;
       Ygo, Ymove, Find, re, ok, sgo, jgo, qgo: boolean;
       pos, q, maxscore, score: integer;
       msg, who: String;
       //msg :string;
       //  who:(Ywin,Ylost,eq);
       ai: tai;
       Procedure win;
       Procedure omove(p, m: integer);
       Procedure smove(p, m: integer);
       Procedure osend(p: integer);
       Procedure ssend(p: integer);
       Procedure searchi;
       Procedure searchii;
       Procedure sundo;
       Procedure mundo;
       Procedure minit;    
       
    Implementation{$R *.DFM}Procedure minit;
    Var
       i: integer;
    Begin
       For i := 1 To 6 Do
       Begin
          poto[i] := 4;
          potm[i] := 4;
       End;
       poto[0] := 0;
       potm[0] := 0;
    End;
    Procedure win;
    Var
       sumo, summ, i: integer;
    Begin
       sumo := 0;
       summ := 0;
       ok := false;
       For i := 1 To 6 Do
       Begin
          sumo := sumo + poto[i];
          summ := summ + potm[i];
       End;
       If (sumo = 0) Or (summ = 0) Then
       Begin
          potm[0] := summ + potm[0];
          poto[0] := sumo + poto[0];
          sumo := poto[0];
          summ := potm[0];
          msg := '±È·Ö£º' + inttostr(summ) + ':' + inttostr(sumo);
          For i := 1 To 6 Do
          Begin
             potm[i] := 0;
             poto[i] := 0;
          End;
          ok := true;
       End;
       If (ok = true) Then
       Begin
          // sh.Enabled :=false;
          If (summ>sumo) Then
             // msg:='You win!' ;
             who := 'ywin';
          if(summ = sumo) Then
             //msg:='EQ!'
             who := 'eq';
          If (summ<sumo) Then
             //msg:='You lost!';
             who := 'ylost';
             // showmessage(who);
       End;
    End;Procedure searchii;
    Var
       i, j, k, s: integer;
    Begin
       find := false;
       maxscore := 0;
       score := 0;
       For i := 1 To 6 Do
       Begin
          If (poto[i] = 0) And (potm[i]<>0) Then
          Begin
             k := 1;
             For j := i + 1 To 6 Do
             Begin
                s := poto[j] Mod 13;
                If (s = k) Then
                Begin
                   score := potm[7 - i] + 1;
                   find := true;
                End;
                If (maxscore<score) Then
                Begin
                   maxscore := score;
                   pos := j;
                End;
                inc(k);
             End;
          End;
       End;
       //if pos<> 0 then
       //osend(pos);
       If not(find) Then
       Begin
          While (poto[pos] = 0) Or (pos = 0) Do
          Begin
             Randomize;
             pos := random(5) + 1;
          End;
       End;
       osend(pos);
    End;
    Procedure searchi;
    Var
       i: integer;
    Begin
       find := false;
       For i := 1 To 6 Do
       Begin
          If (poto[i] = i) Then
          Begin
             find := true;
             osend(i);
             //searchi;
          End
          // else continue;
       End;
       If not(find) Then searchii;
    End;
    Function osearchiii: integer;
    Var
       dis, min, i: integer;
    Begin
       min := 24;
       For i := 1 To 6 Do
       Begin
          dis := i - poto[i];
          If (dis>0) And (min>dis) Then
          Begin
             min := dis;
             pos := 0;
          End;
       End;
       result := pos;
    End;Function qsearchi: integer;
    Var
       i, opp: integer;
    Begin
       qpoto := poto;
       qpotm := potm;
       qgo := ygo;
       maxscore := 0;
       score := 0;
       opp := poto[0];
       For i := 1 To 6 Do
       Begin
          osend(i);
          score := poto[0] - opp;
          potm := qpotm;
          poto := qpoto;
          ygo := qgo;
          If maxscore<score Then
          Begin
             maxscore := score;
             pos := i;
          End;
       End;
       While (poto[pos] = 0) Or (pos = 0) Do
       Begin
          Randomize;
          pos := random(5) + 1;
          //    osend(pos);
       End;
       //osend(pos);
       result := pos;
    End;{
    function osearchiV:integer;
    var i,j,k,s:integer;
    begin
    score:=0;
    maxscore:=0;
    for i := 1 to 6 do
    begin
    if (potm[7-i]<>0) and(poto[0]=0) then
    beginend;
    end;end;
    }
    {function qsearchii:integer;
    var i,opp:integer;
    begin
    result:=i;
    end; }Procedure smove(p, m: integer);
    Var
       t, i, j: integer;
    Begin
       i := P;
       // if p<>0 then
       For j := m Downto 1 Do
       Begin
          potm[i] := potm[i] + 1;
          i := i - 1;
       End;
       pos := i + 1;
       t := potm[pos];
       If (pos<>0) Then
       Begin
          //if (ygo=true) and (pos<>0) and(t=1) then
          If (ygo = true)and(t = 1) Then
          Begin
             potm[0] := potm[0] + poto[7 - pos] + 1;
             potm[pos] := 0;
             poto[7 - pos] := 0;
          End;
          ygo := not(Ygo);
       End;
       win;
    End;
      

  3.   


    Procedure omove(p, m: integer);
    Var
       t, i, j: integer;
    Begin
       i := P;
       //if p<>0 then
       // begin
       For j := m Downto 1 Do
       Begin
          poto[i] := poto[i] + 1;
          i := i - 1;
       End;
       pos := i + 1;
       t := poto[pos];
       If (pos<>0) Then
       Begin
          ygo := not(Ygo);
          //if (ygo=true) and (pos<>0)and (t=1) then
          If (ygo = true) and(t = 1) Then
          Begin
             poto[0] := poto[0] + potm[7 - pos] + 1;
             poto[pos] := 0;
             potm[7 - pos] := 0;
          End;
       End;
       //end;
       win;
    End;
    Procedure ssend(p: integer);
    Var
       m, i, j: integer;
    Begin
       jpotm := potm;
       jpoto := poto;
       jgo := ygo;
       If ygo = true Then
       Begin
          m := potm[p];
          If (re = true) Then
          Begin
             Mway[q].pos := p;
             mway[q].value := m;
          End;
          //p:=6-p;
          potm[p] := 0;
          If (m>p) Then
          Begin
             m := m - p;
             For i := p - 1 Downto 0 Do
             Begin
                potm[i] := potm[i] + 1;
             End;
             If (m>6) Then
             Begin
                For j := 6 Downto 1 Do
                   poto[j] := poto[j] + 1;
                m := m - 6;
                smove(6, m);
             End
             else//m<6
             omove(6, m);
          End
          else//m<p;
          smove(p - 1, m);
       End;
    End;Procedure osend(p: integer);
    Var
       m, i, j: integer;
    Begin
       jpotm := potm;
       jpoto := poto;
       jgo := ygo;
       If (ygo = false) Then
       Begin
          m := poto[p];
          If (re = true) Then
          Begin
             Mway[q].pos := p;
             mway[q].value := m;
          End;
          poto[p] := 0;
          If (m>p) Then
          Begin
             m := m - p;
             For i := p - 1 Downto 0 Do
             Begin
                poto[i] := poto[i] + 1;
                // tmp.temp.lines.add('poto['+inttostr(i)+']='+inttostr(poto[i]));
             End;
             If (m>6) Then
             Begin
                For j := 6 Downto 1 Do
                Begin
                   potm[j] := potm[j] + 1;
                End;
                m := m - 6;
                omove(6, m);
             End
             Else
             //m>6
             smove(6, m);
          End
          else//m<p
          omove(p - 1, m);
       End;
    End;Procedure sundo;
    Begin
       poto := jpoto;
       potm := jpotm;
       ygo := jgo;
    End;Procedure mundo;
    Begin
       poto := spoto;
       potm := spotm;
       ygo := sgo;
    End;
    {procedure TMp.initClick(Sender: TObject);
    var i:integer;
    begin
    for i :=0 to 5  do
    begin
    mgrid.Cells[i,0]:=inttostr(poto[i+1]);
    mgrid.Cells[i,2]:=inttostr(potm[6-i]);
    end;
    mgrid.Cells[0,1]:=inttostr(poto[0]);
    mgrid.Cells[5,1]:=inttostr(potm[0]);
    if (ygo=true) then
    begin
    mp.Caption :='&frac14;&ntilde;&frac12;&eth;&para;&sup1;&iexcl;&iexcl;&Acirc;&Ouml;&micro;&frac12;&Auml;&atilde;×&szlig;&Aacute;&Euml;!';
    // sh.Enabled :=false;
    end
    else
    begin
    mp.caption:='&frac14;&ntilde;&frac12;&eth;&para;&sup1;&iexcl;&iexcl;&Iuml;&Ouml;&Ocirc;&Uacute;&iquest;&acute;&Icirc;&Ograve;&micro;&Auml;&Aacute;&Euml;!';
    sh.Enabled :=true;
    end;
    if (ok=true) then
    begin
    sh.Enabled :=false;
    ywinclick(self);
    ok:=false;
    minit;
    initclick(init);
    end;
    end;
    procedure minit;var i:integer;
    begin
    for i :=1  to 6  do
    begin
    poto[i]:=4;
    potm[i]:=4;
    end;
    poto[0]:=0;
    potm[0]:=0;
    ygo:=true;end;   }Procedure TMp.FormCreate(Sender: TObject);
    //var i:integer;
    Begin
       Ygo := true;
       //Ymove:=true;
       ai := l2click;
       //edit1.SetFocus ;
       sh.Enabled := false;
       minit;
       initClick(self);
       helpimg.Hint := '      &Oacute;&Icirc;&Iuml;·&sup1;&aelig;&Ocirc;ò:' + #13 + '°&Ntilde;&ETH;&iexcl;&Iacute;&euml;&Ouml;&ETH;&micro;&Auml;&para;&sup1;×&Oacute;·&Aring;&Egrave;&euml;&ordm;ó&Atilde;&aelig;&micro;&Auml;&Iacute;&euml;&Ouml;&ETH;&pound;&not;' + #13 + '&Egrave;&ccedil;&sup1;&ucirc;×&icirc;&ordm;ó&micro;&Auml;&para;&sup1;×&Oacute;&Acirc;&auml;&Egrave;&euml;&Auml;&atilde;&micro;&Auml;&acute;ó&Iacute;&euml;&iexcl;&pound;' + #13 + '&Auml;&atilde;&frac12;&laquo;&micro;&Atilde;&micro;&frac12;&Ograve;&raquo;&acute;&Icirc;&ETH;&Acirc;&micro;&Auml;&raquo;ú&raquo;á&iexcl;&pound;&Egrave;&ccedil;&sup1;&ucirc;×&icirc;' + #13 + '&ordm;ó&micro;&Auml;&para;&sup1;×&Oacute;&Acirc;&auml;&Egrave;&euml;&Auml;&atilde;&micro;&Auml;&iquest;&Otilde;&Iacute;&euml;&pound;&not;&Auml;&atilde;&frac12;&laquo;&acute;&Oacute;' + #13 + '&para;&Ocirc;&Ecirc;&Ouml;&para;&Ocirc;&Aacute;&cent;&micro;&Auml;&ETH;&iexcl;&Iacute;&euml;&Ouml;&ETH;&micro;&Atilde;&micro;&frac12;&para;&sup1;×&Oacute;&iexcl;&pound;' + #13 + '&para;&sup1;×&Oacute;&para;à&Otilde;&szlig;&Ecirc;¤&iexcl;&pound;';
       // Mgrid.Hint:='&micro;&Uacute;&Ograve;&raquo;&ETH;&ETH;±í&Ecirc;&frac34;&para;&Ocirc;·&frac12;&micro;&Auml;&ETH;&iexcl;&Iacute;&euml;&iexcl;&pound;'+#13+'&micro;&Uacute;&para;&thorn;&ETH;&ETH;&micro;&Uacute;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&Ccedil;&para;&Ocirc;·&frac12;&micro;&Auml;&acute;ó&Iacute;&euml;&iexcl;&pound;'+#13+'×&icirc;&ordm;ó&Ograve;&raquo;&cedil;&ouml;&Ecirc;&Ccedil;&Auml;&atilde;&micro;&Auml;&acute;ó&Iacute;&euml;&iexcl;&pound;'+#13+'&micro;&Uacute;&Egrave;&yacute;&ETH;&ETH;&Ecirc;&Ccedil;&Auml;&atilde;&micro;&Auml;&ETH;&iexcl;&Iacute;&euml;&iexcl;&pound;'+#13+'&Auml;&iquest;&micro;&Auml;&frac34;&Iacute;&Ecirc;&Ccedil;°&Ntilde;&para;&sup1;×&Oacute;&frac14;&ntilde;&Egrave;&euml;&Auml;&atilde;&micro;&Auml;&acute;ó&Iacute;&euml;&iexcl;&pound;'+#13+'&sup2;&raquo;&ordm;&Atilde;&Ograve;&acirc;&Euml;&frac14;&pound;&not;&acute;ó&Iacute;&euml;&ordm;&Iacute;&ETH;&iexcl;&Iacute;&euml;&Ograve;&raquo;&Ntilde;ù&acute;ó&pound;&iexcl;' ;
    End;Procedure TMp.MgridMouseUp(Sender: TObject; Button: TMouseButton;
    Shift: TShiftState; X, Y: Integer);
    Var
       col, row, p, q: longint;
    Begin
       mgrid.MouseToCell(X, Y, Col, Row);
       If mgrid.cells[col, row]<>'' Then
       Begin
          q := strtoint(mgrid.cells[col, row]);
          p := col;
          If (p>= 0)and (p<6)and (q<>0) Then
          Begin
             If (row = 0) Then
             Begin
                p := p + 1;
                // temp.lines.add('p:'+inttostr(p)+'    '+'q:'+inttostr(q));
                // temp.lines.add('');
                osend(p);
                initclick(init);
             End
             Else If (row = 2) Then
             Begin
                p := 6 - p;
                //temp.lines.add('p:'+inttostr(p)+'    '+'q:'+inttostr(q));
                //temp.lines.add('');
                ssend(p);
                initclick(init);
             End;
          End;
          //label1.Caption :='col:'+inttostr(col)+chr(10)+chr(13)+'row:'+inttostr(row)+chr(10)+chr(13)+'Value:'+inttostr(q);
       End;
       //mgrid.Cells[Col, Row] := 'Col ' + IntToStr(Col) +
       // ',Row ' + IntToStr(Row);
    End;Procedure TMp.exitClick(Sender: TObject);
    Begin
       close;
    End;Procedure TMp.FormKeyDown(Sender: TObject; Var Key: Word;
    Shift: TShiftState);
    Begin
       //  if (ssCtrl in Shift) and (chr(Key) in ['A', 'a']) then
       //     ShowMessage('Ctrl-A');
    End;Procedure TMp.hideClick(Sender: TObject);
    Begin
       //form.show;
       //I don't known. iS it only can use if project?
    End;
      

  4.   


    http://www.csdn.net/expert/topic/720/720539.xml?temp=.5037958
    你自己看看,
    不知为什么,汉字变成这样了:要不我给你发到邮箱吧!
    &micro;&Uacute;&Ograve;&raquo;&ETH;&ETH;±í&Ecirc;&frac34;&para;&Ocirc;·&frac12;&micro;&Auml;&ETH;&iexcl;&Iacute;&euml;&iexcl;&pound;'+#13+'&micro;&Uacute;&para;&thorn;&ETH;&ETH;&micro;&Uacute;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&Ccedil;&para;&Ocirc;·&frac12;&micro;&Auml;&acute;ó&Iacute;&euml;&iexcl;&pound;'+#13+'×&icirc;&ordm;ó&Ograve;&raquo;&cedil;&ouml;&Ecirc;&Ccedil;&Auml;&atilde;&micro;&Auml;&acute;ó&Iacute;&euml;&iexcl;&pound;'+#13+'&micro;&Uacute;&Egrave;&yacute;&ETH;&ETH;&Ecirc;&Ccedil;&Auml;&atilde;&micro;&Auml;&ETH;&iexcl;&Iacute;&euml;&iexcl;&pound;'+#13+'&Auml;&iquest;&micro;&Auml;&frac34;&Iacute
      

  5.   

    我公布的源代码是第一版的,要不第三版的也给你,那个你要装个
    advstring控件。算法那个好点,不太会死机!
      

  6.   

    没有qq很不方便呀,给你一个qq吧
      

  7.   

    我现在还没正式的任务给我,
    我们公司主要做货代软件
    www.int-web.com