?? main.pas
字號(hào):
//showmessage(inttostr(ARegInfo.RunData));
WriteUserInfo(ARegInfo,ADecKey,TStream(File1),false);
WriteUserInfo(ARegInfo,ADecKey,TStream(FParentFile),false);
File1.Free;
end;
begin
try
//if FParentFile = nil then
except
//showmessage(ParamStr(2));
//Application.Terminate;
end;
getUserSn(Reginfo);
if isSameSn(ARegInfo.Sn,Reginfo.Sn) and ARegInfo.Reged then
exit;
if not(isSameSn(ARegInfo.Sn,Reginfo.Sn)) then
begin
//showmessage(ARegInfo.Sn[0]+'-'+ARegInfo.Sn[1]+'-'+ARegInfo.Sn[2]+'-'+ARegInfo.Sn[3]);
AssignSn(ARegInfo,Reginfo.Sn);
//showmessage(ARegInfo.Sn[0]+'-'+ARegInfo.Sn[1]+'-'+ARegInfo.Sn[2]+'-'+ARegInfo.Sn[3]);
//ARegInfo.InstallDate := now;
ARegInfo.Reged := false;
//showmessage(Reginfo.Sn[0]+'-'+Reginfo.Sn[1]+'-'+Reginfo.Sn[2]+'-'+Reginfo.Sn[3]);
end;
getOldUserInfo;
end;
{ TMonoSprite }
procedure TMonoSprite.Click;
begin
showmessage('');
end;
procedure TMonoSprite.DoDead;
begin
//Collisioned := False;
ISDead := true;
Dead;
//Image := Form1.ImageList.Items.Find('100');
end;
procedure TMonoSprite.DoMove(MoveCount: Integer);
var
GammaRamp: TDDGammaRamp;
i: Integer;
begin
inherited DoMove(MoveCount);
if not Collisioned then
begin
Inc(FS, MoveCount);
if FS > 10000 then
Dead;
end;
end;
procedure TMonoSprite.Hit;
begin
end;
procedure TMonoSprite.WMLButtonUp(var Message: TWMLButtonUp);
begin
if PtInRect(ClientRect, SmallPointToPoint(Message.Pos)) then Click;
end;
{ TMyBackGroubd }
procedure TMyBackGroubd.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
inherited;
end;
procedure TMyBackGroubd.DoMove(MoveCount: Integer);
begin
inherited;
//image.Draw(Form1.DXDraw.Surface,100,100,1);
end;
procedure TForm1.Initialize(isStep: boolean = false);
var
i,j,n,m,k: integer;
SpriteImageID1: TSpriteImageID;
begin
//FPaused := false;
//DXTimer1.Enabled := false;
case FLevel of
1 :
begin
if FStep > 10 then
begin
FStop := true;
ShowScores(true,FScore);
FStep := 1;
DXWaveList1.Items.Find('tada').Play(false);
if MessageDlg(FStrs[40],
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
{inc(FLevel);
FSpritesCount := 192;
ImageCount := 48;}
NewGame(2);
end
else
begin
FGameState := gtWait;
ShowScores(true,FScore);
end;
FStop := false;
end
else
begin
FSpritesCount := 160;
FSpritesCount2 := 96;
ImageCount := 24;
ImageCount2 := 8;
end;
OneImageCount := FSpritesCount2 div ImageCount;
OneImageCount2 := (FSpritesCount- FSpritesCount2) div ImageCount2;
end;
2 :
begin
if FStep > 10 then
begin
FStop := true;
ShowScores(true,FScore);
FStep := 1;
DXWaveList1.Items.Find('tada').Play(false);
if MessageDlg(FStrs[40],
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
{inc(FLevel);
FSpritesCount := 240;
ImageCount := 60; }
NewGame(3);
end
else
begin
FGameState := gtWait;
ShowScores(true,FScore);
end;
FStop := false;
end
else
begin
FSpritesCount := 192;
FSpritesCount2 := 160;
ImageCount := 40;
ImageCount2 := 4;
end;
OneImageCount := FSpritesCount2 div ImageCount;
OneImageCount2 := (FSpritesCount - FSpritesCount2) div ImageCount2;
end;
3 :
begin
//pass
if FStep > 10 then
begin
FStop := true;
ShowScores(true,FScore);
FStep := 1;
DXWaveList1.Items.Find('tada').Play(false);
if MessageDlg(FStrs[41],
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
{FLevel := 1;
FStep := 1;
FSpritesCount := 160;
ImageCount := 40;
FScore := 0; }
NewGame(1);
end
else
begin
FGameState := gtWait;
//ShowScores(true,FScore);
end;
FStop := false;
end
else
begin
FSpritesCount := 240;
FSpritesCount2 := 192;
ImageCount := 48;
ImageCount2 := 8;
end;
OneImageCount := FSpritesCount2 div ImageCount;
OneImageCount2 := (FSpritesCount- FSpritesCount2) div ImageCount2;
end;
end;
FTotleScore := FBaseScore*FLevel*FLevel + FIniScore*FStep;
FOneSpriteScore := round(FTotleScore / (FSpritesCount /2));
FOneTime := round(FTime / (FSpritesCount /2));
FTime := 420+60*FLevel;
if FGameState = gtWait then exit;
washing := false;
getXY(FSpritesCount,Ax,Ay);
setlength(FSprites,Ax);
for i := low(FSprites) to high(FSprites) do
begin
setlength(FSprites[i],Ay);
end;
n := 1;
k := 0;
m := 0;
w := (DXDraw.width - Ax*FImageW) div 2;
if IS800x600 then
h := (DXDraw.height - Ay*FImageH) div 2+FImageH
else
h := (DXDraw.height - Ay*FImageH) div 2;
SpriteImageID1 := [];
for i := low(FSprites) to high(FSprites) do
begin
for j := low(FSprites[i]) to high(FSprites[i]) do
begin
with FSprites[i][j] do
begin
ImageID := n;
ID := k;
inc(k);
inc(m);
if k = FSpritesCount2 then
begin
OneImageCount := OneImageCount2;
m := 0;
end;
if (m mod OneImageCount = 0) then
begin
Randomize;
while n in SpriteImageID1 do
begin
n := randomrange(1,100);
end;
//inc(n);
include(SpriteImageID1,n);
end;
if n > ImageList.Items.Count then
n := 1;
X := w + i*FImageW;
Y := h + j * FImageH;
XID := i;
YID := j;
Dead := false;
end;
end;
end;
for i := low(FocusedSprite) to high(FocusedSprite) do
begin
FocusedSprite[i].ID := - 1 ;
end;
InitializeSprite;
Randomsprite;
//DXTimer1.Enabled := true;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
CheckUseInfo(FRegInfo,FDecKey);
if not(FRegInfo.Reged) and (FRegInfo.RunData >FMaxRunData) then
fmReg.ShowModal;
DXDraw.Width := Width;
DXDraw.height := Height;
{DXDraw.Display.Width := 1024;
DXDraw.Display.Height := 768;
DXDraw.Display.BitCount := 32;
DXDraw.Options := DXDraw.Options + [doFullScreen];
DXDraw.Initialize;}
end;
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
var
i,i1,j1: integer;
R: TRect;
procedure DrawRegInfo;
begin
if FRegInfo.Reged then exit;
with DXDraw.Surface.Canvas do
begin
Font.Color := clRed;
Font.Size := 12;
textout(DXDraw.Surface.Width - textwidth(FStrs[47])-5,20,FStrs[47]);
textout(DXDraw.Surface.Width - textwidth(FStrs[17]+':'+formatfloat('00',FMaxRunData - FRegInfo.RunData)+
FStrs[48])-5,40,
FStrs[17]+':'+formatfloat('00',FMaxRunData - FRegInfo.RunData)+
FStrs[48]);
release;
end;
end;
begin
if not(FRegInfo.Reged) and (FRegInfo.RunData >FMaxRunData)
and (FGameState = gtRuning) then
begin
inc(FShowRegTime);
if (FShowRegTime > (1000 div DXTimer1.Interval)*30) and FShowReg then
begin
FShowReg := false;
fmReg.Close;
fmReg.Hide;
fmReg.ShowModal;
FShowReg := true;
FShowRegTime := 0;
end;
end;
if FStop or Washing or FClose then
begin
DXDraw.Surface.Canvas.Release;
DXDraw.Flip;
exit;
end;
try
DXInput.Update;
try
DXSpriteEngine.Dead;
//DXSpriteEngine.
DXSpriteEngine.Move(LagCount);
except
end;
if (selfDo) and (FGameState = gtRuning) then //auto
begin
inc(incTime3);
if (incTime3 >= (200 div DXTimer1.Interval)) and not(Washing) then
begin
try
getFirstRaodPoint(FFirstRoadPoint[0],FFirstRoadPoint[1],true);
except
end;
incTime3 := 0;
end;
end;
if Washing then exit;
//controls
if isButton5 in DXInput.States then
begin
for i := 0 to DXSpriteEngine.Engine.Count - 1 do
begin
DXSpriteEngine.Engine[i].Dead;
end;
Application.Terminate;
exit;
end;
if isButton7 in DXInput.States then
begin
//DXImageList1.Items.Clear;
if SaveDialog1.Execute then
begin
{for i := 1 to 100 do
begin
DXImageList1.Items.Add;
DXImageList1.Items[i-1].Picture.LoadFromFile('E:\my program\link and look\face\QQ1\'+inttostr(i)+' 副本.bmp' );
end;
for i := 0 to DXImageList1.Items.Count - 1 do
begin
DXImageList1.Items[i].Name := inttostr(i+1);
end;
Back47x37.Items.SaveToFile(SaveDialog1.FileName+'1.dxg');
Back57x45.Items.SaveToFile(SaveDialog1.FileName+'.dxg'); }
//DXWaveList1.Items.SaveToFile(SaveDialog1.FileName+'.dxw'); }
end;
end;
if not DXDraw.CanDraw then exit;
if FGameState = gtWait then
begin
DXDraw.Surface.Fill(0);
Inc(FAngle);
with DXImageList1.Items.Find('logo') do
DrawWaveX(DXDraw.Surface, (DXDraw.Surface.Width - width) div 2 - width div 2+20,
(DXDraw.Surface.Height - Height) div 2 - Height div 2,
width+width div 2,
Height + Height div 2,
0,4,200, FAngle*10);
DrawRegInfo;
DXDraw.Flip;
exit;
end;
if FGameState = gtGameOver then
begin
if DXDraw.CanDraw then
begin
with DXImageList1.Items.Find('gameover') do
Draw(DXDraw.Surface,
(DXDraw.Surface.Width - width) div 2,
(DXDraw.Surface.Height - Height) div 2,0) ;
end;
DrawRegInfo;
DXDraw.Flip;
inc(incTime1);
if incTime1 >= (2000 div DXTimer1.Interval) then
begin
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -