亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? unittest.cpp

?? 貪吃蛇貪吃蛇貪吃蛇貪吃蛇貪吃蛇貪吃蛇貪吃蛇貪吃蛇
?? CPP
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "UnitTest.h"
#include "UnitAbout.h"
#include "UnitEnterName.h"
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFormMain *FormMain;
//---------------------------------------------------------------------------
__fastcall TFormMain::TFormMain(TComponent* Owner)
    : TForm(Owner)
{
  randomize();
  LoadParams();

  StageNo = 0;
  Paused = false;
  DrMove = TSnakeBuf::sdUp;

  int dx = ScrollBoxSnake->Width - PaintBoxSnake->Width;
  int dy = ScrollBoxSnake->Height - PaintBoxSnake->Height;
  ScrollBoxSnake->Width = dx + TSnakeBuf::UnitX*16;
  ScrollBoxSnake->Height = dy + TSnakeBuf::UnitY*16;
  ScrollBoxSnake->DoubleBuffered = true;

  MiBlocks->Checked=SnakeParams.BmpSet;
  LabelHS->Caption=SnakeParams.HighScore;
  LabelStage->Caption=StageNo+1;
  LabelScore->Caption=SnakeBuf.Score;
  LabelHome->Font->Color = clBlue;

  LabelHomeDefProc = LabelHome->WindowProc;
  LabelHome->WindowProc = LabelHomeWndProc;

  RunBmp = new Graphics::TBitmap;
  RunBmp->LoadFromResourceName(0,"BMP_SNAKE");
  RunBmp->PixelFormat = pfDevice;

  PausedBmp = new Graphics::TBitmap;
  PausedBmp->LoadFromResourceName(0,"BMP_PAUSED");
  PausedBmp->PixelFormat = pfDevice;
  PausedBmp->Transparent = true;

  OverBmp = new Graphics::TBitmap;
  OverBmp->LoadFromResourceName(0,"BMP_GMOVER");
  OverBmp->PixelFormat = pfDevice;
  OverBmp->Transparent = true;

  MaskBmp = new Graphics::TBitmap;
  MaskBmp->Assign(RunBmp);
  MaskBmp->Mask(MaskBmp->Canvas->Pixels[MaskBmp->Width-1][MaskBmp->Height-1]);

  SnakeTimer = new TSnakeTimer;
  SnakeTimer->Interval = 300;
  SnakeTimer->OnTimer = SnakeTimerTimer;
}
//---------------------------------------------------------------------------
__fastcall TFormMain::~TFormMain()
{
  SnakeTimer->DestroyTimer();
  delete MaskBmp;
  delete OverBmp;
  delete PausedBmp;
  delete RunBmp;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::LabelHomeWndProc(Messages::TMessage &Message)
{
  if(Message.Msg==CM_MOUSEENTER)
   {
     LabelHome->Font->Color = clRed;
     LabelHome->Font->Style = LabelHome->Font->Style<<fsUnderline;
   }
  else if(Message.Msg==CM_MOUSELEAVE)
   {
     LabelHome->Font->Color = clBlue;
     LabelHome->Font->Style = LabelHome->Font->Style>>fsUnderline;
   }
  LabelHomeDefProc(Message);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::LabelHomeClick(TObject *Sender)
{
  ShellExecute(Handle,"open","http://www.cppfans.com/",0,"",SW_SHOWNORMAL);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::PaintBoxSnakePaint(TObject *Sender)
{
  TPaintBox *pb = (TPaintBox*)Sender;
  TCanvas *lpCanvas = pb->Canvas;
  TRect rc(pb->Left,pb->Top,pb->Left+pb->Width,pb->Top+pb->Height);
  lpCanvas->Brush->Style = bsSolid;
  lpCanvas->Brush->Color = clWhite;
  lpCanvas->FillRect(rc);

  int u, x0,y0,x1,y1;
  TSnakeBuf::TSnakeNode *lpPoint;
  for(int y=0; y<TSnakeBuf::UnitY; y++)
   {
     x1=0;
     y1=y*16;
     for(int x=0; x<TSnakeBuf::UnitX; x++)
      {
        u=SnakeBuf.GetDispBuf(x,y);
        if(u>0)
         {
           u--;
           x0=TSnakeBuf::BmpPos[SnakeParams.BmpSet].Pos[u].x*16;
           y0=TSnakeBuf::BmpPos[SnakeParams.BmpSet].Pos[u].y*16;
           ::BitBlt(lpCanvas->Handle,x1,y1,16,16, RunBmp->Canvas->Handle,x0,y0, SRCINVERT);
           ::BitBlt(lpCanvas->Handle,x1,y1,16,16, MaskBmp->Canvas->Handle,x0,y0, SRCAND  );
           ::BitBlt(lpCanvas->Handle,x1,y1,16,16, RunBmp->Canvas->Handle,x0,y0, SRCINVERT);
         }
        x1+=16;
      }
   }
  if(Paused)
   {
     int w=PausedBmp->Width,h=PausedBmp->Height;
     int x=(pb->Width-w)/2,y=(pb->Height-h)/2;
     lpCanvas->Draw(x,y,PausedBmp);
   }
  else if(SnakeBuf.GameOver)
   {
     int w=OverBmp->Width,h=OverBmp->Height;
     int x=(pb->Width-w)/2,y=(pb->Height-h)/2;
     lpCanvas->Draw(x,y,OverBmp);
   }
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::SnakeTimerTimer(TObject *Sender)
{
  if((!SnakeBuf.GameOver)&&(StageNo<TSnakeBuf::StageCount)&&(!Paused))
   {
     bool bCheckScore = false;
     SnakeBuf.StepMove(DrMove);
     if(SnakeBuf.GameOver)
      {
        LabelScore->Caption=SnakeBuf.Score;
        PaintBoxSnake->Invalidate();
        bCheckScore = true;
        //Application->MessageBox("Game Over!","Game Over",MB_OK|MB_ICONSTOP);
      }
     if(SnakeBuf.EndStage)
      {
        StageNo++;
        StageNo%=TSnakeBuf::StageCount;
        LabelScore->Caption=SnakeBuf.Score;
        //Application->MessageBox("Next stage.","Next stage",MB_OK|MB_ICONINFORMATION);
        LabelStage->Caption=StageNo+1;
        DrMove = TSnakeBuf::sdUp;
        SnakeBuf.InitStage(StageNo);
      }
     LabelScore->Caption=SnakeBuf.Score;
     PaintBoxSnake->Invalidate();

     if(bCheckScore)
      {
        LoadParams();
        if(SnakeBuf.Score>SnakeParams.HighScore)
         {
           SaveHighScore();
           ShowHighScore();
         }
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
  if((!SnakeBuf.GameOver)&&(!Paused))
   {
     int d = 0;
     switch(Key)
      {
        case VK_UP   : if(DrMove!=TSnakeBuf::sdDown )d=TSnakeBuf::sdUp   ; break;
        case VK_DOWN : if(DrMove!=TSnakeBuf::sdUp   )d=TSnakeBuf::sdDown ; break;
        case VK_LEFT : if(DrMove!=TSnakeBuf::sdRight)d=TSnakeBuf::sdLeft ; break;
        case VK_RIGHT: if(DrMove!=TSnakeBuf::sdLeft )d=TSnakeBuf::sdRight; break;
      }
     if(d)
      {
        DrMove = d;
        SnakeTimer->TriggerTimer();
      }
   }
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::MiNewClick(TObject *Sender)
{
  StageNo = 0;
  Paused = false;
  LabelStage->Caption=StageNo+1;
  DrMove = TSnakeBuf::sdUp;
  SnakeBuf.ClearScore();
  SnakeBuf.InitStage(StageNo);
  LabelScore->Caption=SnakeBuf.Score;
  PaintBoxSnake->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::MiExitClick(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::ApplicationEvents1Deactivate(TObject *Sender)
{
  if(SnakeBuf.Running)
    Paused = true;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::fSetPaused(bool b)
{
  _bPaused = b;
  MiPause->Checked=_bPaused;
  PaintBoxSnake->Invalidate();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::MiPauseClick(TObject *Sender)
{
  if(SnakeBuf.Running)
    Paused=!Paused;
  else
    Paused=false;
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::MiBlocksClick(TObject *Sender)
{
  LoadParams();
  SnakeParams.BmpSet=!MiBlocks->Checked;
  MiBlocks->Checked=!MiBlocks->Checked;
  PaintBoxSnake->Invalidate();
  SaveParams();
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::About1Click(TObject *Sender)
{
  FormAbout = new TFormAbout(this);
  FormAbout->ShowModal();
  delete FormAbout;
}
//---------------------------------------------------------------------------
void TFormMain::LoadParams(void)
{
  memset(&SnakeParams,0,sizeof(TSnakeParams));
  AnsiString fname = ChangeFileExt(ParamStr(0),".cfg");
  FILE *f = fopen(fname.c_str(),"rb");
  if(f)
   {
     fread(&SnakeParams,sizeof(TSnakeParams),1,f);
     fclose(f);
   }
}
//---------------------------------------------------------------------------
void TFormMain::SaveParams(void)
{
  AnsiString fname = ChangeFileExt(ParamStr(0),".cfg");
  FILE *f = fopen(fname.c_str(),"wb");
  if(f)
   {
     fwrite(&SnakeParams,sizeof(TSnakeParams),1,f);
     fclose(f);
   }
}
//---------------------------------------------------------------------------
void TFormMain::SaveHighScore(void)
{
  SnakeParams.HighScore = SnakeBuf.Score;
  LabelHS->Caption=SnakeParams.HighScore;
  AnsiString HsName;

  FormEnterName = new TFormEnterName(this);
  FormEnterName->EditName->MaxLength=30;
  while(HsName.IsEmpty())
   {
     FormEnterName->ShowModal();
     HsName = FormEnterName->EditName->Text.Trim();
   }
  delete FormEnterName;

  strcpy(SnakeParams.HsName,HsName.c_str());
  SaveParams();
}
//---------------------------------------------------------------------------
void TFormMain::ShowHighScore(void)
{
  AnsiString s;
  s.sprintf("游戲紀(jì)錄: %s: %d", SnakeParams.HsName, SnakeParams.HighScore);
  Application->MessageBox(s.c_str(),"游戲紀(jì)錄",MB_OK|MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
void __fastcall TFormMain::HighScore1Click(TObject *Sender)
{
  ShowHighScore();
}
//---------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产真实乱对白精彩久久| 欧美日韩久久久久久| 制服视频三区第一页精品| 午夜欧美视频在线观看| 欧美喷水一区二区| 日韩电影在线一区二区三区| 精品国产乱码久久久久久久久| 精品一区二区免费| 久久亚洲综合色| 亚洲视频在线一区观看| 久久久久国产成人精品亚洲午夜| 麻豆精品一区二区综合av| 一区视频在线播放| 久国产精品韩国三级视频| 91免费国产视频网站| 天天色 色综合| 综合久久综合久久| 久久精品一区二区三区不卡牛牛| 精品视频999| 色婷婷av一区二区三区软件 | 91香蕉视频黄| 国产一区在线看| 肉丝袜脚交视频一区二区| 欧美日本国产视频| 国产性天天综合网| 久久久久久久国产精品影院| 国产精品99久久久久久久vr| 日本一区二区三区免费乱视频 | 亚洲国产精品国自产拍av| 日本色综合中文字幕| 日韩欧美国产小视频| 91在线无精精品入口| 五月激情综合网| 久久色在线视频| 在线国产电影不卡| 久久国产精品第一页| 国产精品久久久久久久裸模| 制服丝袜在线91| 99久久99久久综合| 美女视频一区在线观看| 最近中文字幕一区二区三区| 久久综合一区二区| eeuss鲁片一区二区三区在线看| 免费成人你懂的| 日本伊人精品一区二区三区观看方式| 性做久久久久久久久| 中文字幕中文字幕在线一区 | 日韩二区三区四区| 99re这里只有精品视频首页| 亚洲午夜久久久久久久久电影网 | 久久女同性恋中文字幕| 51午夜精品国产| 欧美午夜影院一区| 在线播放亚洲一区| 91精品国产品国语在线不卡| 日韩一级视频免费观看在线| 欧美xxx久久| 久久久久成人黄色影片| 91视视频在线直接观看在线看网页在线看| 亚洲摸摸操操av| 亚洲欧洲99久久| 国产精品乱人伦一区二区| www国产精品av| 777久久久精品| 99久久精品一区| 国产69精品一区二区亚洲孕妇| 麻豆91精品91久久久的内涵| 精品一区二区在线观看| 丝袜亚洲另类丝袜在线| 日韩电影免费在线| 精品一区在线看| 国产伦精品一区二区三区在线观看| 日韩国产欧美三级| 免费成人在线观看| 成人av影视在线观看| 91在线视频播放| 欧美人动与zoxxxx乱| 日韩欧美电影在线| 国产色一区二区| 香蕉乱码成人久久天堂爱免费| 日韩黄色一级片| 国产91精品欧美| 在线播放亚洲一区| 亚洲色图色小说| 国产一区在线看| 久久亚洲精精品中文字幕早川悠里 | 亚洲天堂2016| 日韩视频免费观看高清在线视频| 欧美一区二区三区在线视频| 久久亚洲综合色| 一区二区三区成人| 色哟哟亚洲精品| av电影天堂一区二区在线| 欧美性受xxxx| 日韩一区二区在线免费观看| 国产校园另类小说区| 亚洲国产你懂的| 国产在线视频一区二区三区| 色综合视频一区二区三区高清| 69av一区二区三区| 国产精品国产a| 美女视频一区在线观看| 蜜臀精品久久久久久蜜臀| 精品一区二区影视| 在线观看不卡视频| 国产日韩综合av| 日韩精品一二区| 99久久久国产精品| 一区二区三区欧美日韩| 蜜桃av一区二区三区| 色8久久人人97超碰香蕉987| 精品久久人人做人人爰| 亚洲人亚洲人成电影网站色| 午夜激情久久久| 国产成人av电影免费在线观看| 久久久国产精品午夜一区ai换脸| 中文字幕亚洲精品在线观看| 国产美女av一区二区三区| 91精品欧美久久久久久动漫| 中文字幕在线不卡视频| 国产一区二区伦理片| 3d动漫精品啪啪| 亚洲成人免费电影| 欧美网站大全在线观看| 亚洲视频一区二区在线观看| 国产91对白在线观看九色| 欧美老女人第四色| 亚洲成人免费视频| 日韩一区二区三区电影| 国产一区999| 夜夜嗨av一区二区三区四季av| 久久香蕉国产线看观看99| 欧美午夜精品免费| 成年人国产精品| 亚洲天天做日日做天天谢日日欢 | 亚洲日本青草视频在线怡红院 | 日韩不卡一区二区| 亚洲男人都懂的| 丁香六月综合激情| 欧美日韩一级片网站| 一区二区三区日韩欧美| 久久精品国产一区二区三| 3atv一区二区三区| 青青草国产成人av片免费| 欧美日韩美少妇| 国产精品视频一区二区三区不卡| 久草这里只有精品视频| 日韩精品中文字幕一区| 亚洲成人av一区| 欧美色涩在线第一页| 亚洲美女区一区| 欧美日韩一区二区在线观看| 亚洲色欲色欲www| 欧美日韩国产大片| 亚洲va韩国va欧美va精品| 欧美一区午夜精品| 亚洲电影一级片| 欧美一区在线视频| 国产一区二区0| 国产精品女同互慰在线看| 色狠狠色狠狠综合| 亚洲一级二级在线| 日韩精品一区国产麻豆| 激情五月激情综合网| 亚洲视频狠狠干| 91麻豆精东视频| 蜜臀精品一区二区三区在线观看| 久久久高清一区二区三区| 国产盗摄视频一区二区三区| 亚洲男人的天堂在线观看| 欧美性做爰猛烈叫床潮| 久久成人免费网站| 国产欧美综合在线| 欧美日韩一区二区三区不卡| 偷拍自拍另类欧美| 国产精品网站导航| 欧美日韩一区二区在线观看 | 亚洲精品高清在线观看| 欧美日韩黄色影视| 激情五月婷婷综合网| 亚洲精品v日韩精品| 在线成人小视频| www.激情成人| 午夜久久福利影院| 国产精品乱码久久久久久| 欧美区视频在线观看| 国产精品亚洲午夜一区二区三区| 亚洲6080在线| 国产亚洲精品7777| 欧美精品在欧美一区二区少妇 | 日本大香伊一区二区三区| 日韩在线一区二区三区| 国产精品免费人成网站| 91免费观看视频| 毛片一区二区三区| 亚洲免费av在线| 精品国产区一区| 欧美日韩精品一区二区三区| 国产一区二区美女| 美国三级日本三级久久99 |