捡金豆游戏 Nokia 手机中游戏的PC版。
http://www.csdn.net/cnshare/soft/12/12098.shtm我是用Delphi编的。
需源代码E-Mail to :
[email protected]
我希望有誰能把它改成一控件。
我只写了三个级别的。
有誰可以多写几个级别的?
http://www.csdn.net/cnshare/soft/12/12098.shtm我是用Delphi编的。
需源代码E-Mail to :
[email protected]
我希望有誰能把它改成一控件。
我只写了三个级别的。
有誰可以多写几个级别的?
解决方案 »
- DBChart 怎么把线清除掉
- 如何解决socket error #10048 address already in use的问题?在线等!
- intraweb中如何使用串口控件mscomm?
- 一个很菜的问题,高人进来看看~~
- 请教SQL语句问题。谢谢
- 在我的Form有很多TEdit.我如果些他们的OnChange事件的话,要写很多。。。。。。
- 谁用过tomEncryption组件,高分求助!
- 如何动态创建并显示子窗口
- SendMessage(Edit1.Handle ,WM_KEYDOWN, 65, 0);Edit1.没有反映。怎么办?
- 我的ADO不支持Sybase请问怎么办?
- 想打印六行,为什么只打印了一行。希望大家关注。帮个忙。第一次做打印.
- 如何获得TEDIT中的密码?
请把的E-Mail留下!
这其实不能算是很纯粹的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;
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 :='¼ñ½ð¶¹¡¡ÂÖµ½Äã×ßÁË!';
// sh.Enabled :=false;
end
else
begin
mp.caption:='¼ñ½ð¶¹¡¡ÏÖÔÚ¿´ÎÒµÄÁË!';
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 := ' ÓÎÏ·¹æÔò:' + #13 + '°ÑСÍëÖеĶ¹×Ó·ÅÈëºóÃæµÄÍëÖУ¬' + #13 + 'Èç¹û×îºóµÄ¶¹×ÓÂäÈëÄãµÄ´óÍë¡£' + #13 + 'Ä㽫µÃµ½Ò»´ÎеĻú»á¡£Èç¹û×î' + #13 + 'ºóµÄ¶¹×ÓÂäÈëÄãµÄ¿ÕÍ룬Ä㽫´Ó' + #13 + '¶ÔÊÖ¶ÔÁ¢µÄСÍëÖеõ½¶¹×Ó¡£' + #13 + '¶¹×Ó¶àÕßʤ¡£';
// Mgrid.Hint:='µÚÒ»Ðбíʾ¶Ô·½µÄСÍë¡£'+#13+'µÚ¶þÐеÚÒ»¸öÊǶԷ½µÄ´óÍë¡£'+#13+'×îºóÒ»¸öÊÇÄãµÄ´óÍë¡£'+#13+'µÚÈýÐÐÊÇÄãµÄСÍë¡£'+#13+'Ä¿µÄ¾ÍÊǰѶ¹×Ó¼ñÈëÄãµÄ´óÍë¡£'+#13+'²»ºÃÒâ˼£¬´óÍëºÍСÍëÒ»Ñù´ó£¡' ;
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;
http://www.csdn.net/expert/topic/720/720539.xml?temp=.5037958
你自己看看,
不知为什么,汉字变成这样了:要不我给你发到邮箱吧!
µÚÒ»Ðбíʾ¶Ô·½µÄСÍë¡£'+#13+'µÚ¶þÐеÚÒ»¸öÊǶԷ½µÄ´óÍë¡£'+#13+'×îºóÒ»¸öÊÇÄãµÄ´óÍë¡£'+#13+'µÚÈýÐÐÊÇÄãµÄСÍë¡£'+#13+'Ä¿µÄ¾Í
advstring控件。算法那个好点,不太会死机!
我们公司主要做货代软件
www.int-web.com