els_cpp.cpp

来自「俄罗斯方块 俄罗斯方块 俄罗斯方块」· C++ 代码 · 共 1,033 行 · 第 1/4 页

CPP
1,033
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "els_cpp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tels *els;
int scrxy[18][12];
int rem=BLUE;
int leveltime=1000;
int sc=0;//,isstop;
//---------------------------------------------------------------------------
__fastcall Tels::Tels(TComponent* Owner)
        : TForm(Owner)
{
        els->Level11->Checked=true;
}
//---------------------------------------------------------------------------
void __fastcall Tels::Start1Click(TObject *Sender)
{
        game=new Tgame(true);
        Start1->Enabled=false;
        Stop1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall Tels::Stop1Click(TObject *Sender)
{
        game->Terminate();
        Start1->Enabled=true;
        Stop1->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall Tels::Level11Click(TObject *Sender)
{
        els->Level11->Checked=true;
        els->Level21->Checked=false;
        els->Level31->Checked=false;
        leveltime=1000;
}
//---------------------------------------------------------------------------
void __fastcall Tels::Level21Click(TObject *Sender)
{
        els->Level21->Checked=true;
        els->Level11->Checked=false;
        els->Level31->Checked=false;
        leveltime=500;
}
//---------------------------------------------------------------------------
void __fastcall Tels::Level31Click(TObject *Sender)
{
        els->Level31->Checked=true;
        els->Level11->Checked=false;
        els->Level21->Checked=false;
        leveltime=200;
}
//---------------------------------------------------------------------------
__fastcall Tgame::Tgame(bool CreateSuspended)//线程构造函数
        : TThread(true)
{
        //isstop=0;
        scr=new TScr();
        jm=new TJm(rand());
        FreeOnTerminate=true;
        Resume();
}
//---------------------------------------------------------------------------
void __fastcall Tgame::Execute()//线程执行函数
{
        //---- Place thread code here ----
        while(Terminated==false)
        {
                scr->show();
                jm->down();
                scr->show();
                Sleep(leveltime);
                jm->test();
                scr->show();
        }
}
//---------------------------------------------------------------------------
void __fastcall Tels::FormClose(TObject *Sender, TCloseAction &Action)
{
        if(game)
        {
                game->Terminate();
        }
        ShowMessage("作者:韩曦!");
}
//---------------------------------------------------------------------------
void __fastcall Tels::Exit1Click(TObject *Sender)
{
        els->Close();
}
//---------------------------------------------------------------------------
void __fastcall Tels::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
        switch(Key)
        {
                case KEYLEFT:
                        if(els->game->jm->ax==0 || els->game->jm->bx==0
                           || els->game->jm->cx==0 || els->game->jm->dx==0)
                                break;
                        switch(els->game->jm->lb)
                        {
                                case MODE1:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:
                                                     if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL)
                                                        left();
                                                     break;
                                                case FX2:
                                                     if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                        scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                        scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                        scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                      break;
                                        }
                                        break;
                                case MODE2:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:
                                                     if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                        scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                        scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX2:
                                                      if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                         left();
                                                        break;
                                                case FX3:
                                                      if(scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                        scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                        scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                         left();
                                                        break;
                                                case FX4:
                                                      if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                         scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL)
                                                          left();
                                                        break;
                                        }
                                        break;
                                case MODE3:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:
                                                      if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                        scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                          scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                       break;
                                                case FX2:
                                                     if(scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX3:
                                                      if(scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                        scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                          scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX4:
                                                       if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                           scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL)
                                                          left();
                                                        break;
                                        }
                                        break;
                                case MODE4:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:
                                                       if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                          scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                          scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX2:
                                                      if(scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                       break;
                                        }
                                        break;
                                case MODE5:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:
                                                     if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                         scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX2:
                                                     if(
                                                         scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                        }
                                        break;
                                case MODE6:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:
                                                     if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                        scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX2:
                                                     if(scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                        scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL&&
                                                        scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX3:
                                                      if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                        break;
                                                case FX4:
                                                      if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                         scrxy[els->game->jm->by][els->game->jm->bx-1]!=FULL&&
                                                         scrxy[els->game->jm->dy][els->game->jm->dx-1]!=FULL)
                                                          left();
                                                       break;
                                        }
                                        break;
                                case MODE7:
                                        switch(els->game->jm->fx)
                                        { case FX1:
                                                      if(scrxy[els->game->jm->ay][els->game->jm->ax-1]!=FULL&&
                                                         scrxy[els->game->jm->cy][els->game->jm->cx-1]!=FULL)
                                                          left();
                                                        break;
                                        }
                                        break;
                        }
                        break;
                case KEYRIGHT:
                        if(els->game->jm->ax==11 || els->game->jm->bx==11
                           || els->game->jm->cx==11 || els->game->jm->dx==11)
                                break;
                        switch(els->game->jm->lb)
                        {
                                case MODE1:
                                        switch(els->game->jm->fx)
                                        {
                                                case FX1:

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?