int main(int argc ,char* argv[]){ // freopen( "CON", "wt", stdout ); // SelfMadeBlocks(0); GameInitial(); Sint32 key; SDL_Event gameEvent; MultThread = SDL_CreateThread(ThreadFunc,NULL); AIThread = SDL_CreateThread(AIMain,NULL); while( gameOver == false ){ //press ESC or click X to quit. while( SDL_PollEvent(&gameEvent) != 0 ){ if ( gameEvent.type == SDL_QUIT ){ gameOver = true; } if ( gameEvent.type == SDL_KEYDOWN ){ if ( gameEvent.key.keysym.sym == SDLK_ESCAPE ){ gameOver = true; return 0; } key = gameEvent.key.keysym.sym; if( key==SDLK_BACKSPACE ){ AIMode ^= 1; Operation.ClearQ(); if( AIMode ){ Search(); } } // if( AIMode ){ // continue; // } switch( key ){ case SDLK_DOWN: AIPlayer.Operation.AddQ(MOVEDOWN); break; case SDLK_LEFT: AIPlayer.Operation.AddQ(MOVELEFT); break; case SDLK_RIGHT:AIPlayer.Operation.AddQ(MOVERIGHT); break; case SDLK_UP : AIPlayer.Operation.AddQ(ROTATE); break; case SDLK_TAB : AIPlayer.Operation.AddQ(TURNNEXT); break; } } } // key = SDL_GetKeyState(NULL); //实现长按效果的第一个方法 // if( key[SDLK_DOWN] ) Operation.AddQ(MOVEDOWN); // if( key[SDLK_LEFT] ) Operation.AddQ(MOVELEFT); // if( key[SDLK_RIGHT] ) Operation.AddQ(MOVERIGHT); // if( key[SDLK_UP] ) Operation.AddQ(ROTATE); SDL_Delay(1); //减轻CPU负担 } SDL_KillThread(MultThread); SDL_KillThread(AIThread); pressESCtoQuit(); return 0; }
////////////////////////////////////// //void OnGameStart() //游戏开始 void CRussiaRectView::OnGameStart() { // TODO: Add your command handler code here //如果不是游戏暂停状态,则必须作些初始工作 if (!m_bGamePause) { //将游戏结束的标志设为false m_bGameEnd = false; //进行一些初始化的工作 GameInitial(); // Invalidate(false); //双人模式 if(!m_bOnePlayer) { SetTimer(2,1600-250*m_iLevel2,NULL); } } m_bGamePause = false; SetTimer(1,1600-250*m_iLevel,NULL); //设置计时器 sndPlaySound(".\\kaishi.wav",SND_ASYNC); }
CRussiaRectView::CRussiaRectView() { // TODO: add construction code here m_iRow = MAP_ROW; //地图行数 m_iCol = MAP_COL; //地图列数 m_nWidth = 0; //整个游戏窗口的宽度 m_nHeight = 0; m_nWidth2 = 110; //小窗口的大小 m_nHeight2 = 150; m_iStartX = 10; //左上角X,Y坐标 m_iStartY = 10; m_iStartX2 = m_iStartX; m_iStartY2 = m_iStartY; m_iStartPositionX = 0; //形状生成时在顶部的纵向坐标 m_iStartPositionY = 4; //形状生成时在顶部的横向坐标 m_iLarge = RECT_LENGTH; //缺省方块大小为m_iLarge个象素 //m_iBlockStyle = 2; //第一种样式 m_bOnePlayer = true; //true为单人,false为双人模式 m_bTwoPlayer = false; //true为单人,false为双人模式 m_bFistPlay = true; //第一次开始游戏 m_bGameReady = true; //缺省游戏是处于准备好的状态 m_bGameEnd = true; //缺省游戏已经结束 m_bGamePause = false; //缺省为不是游戏暂停状态 m_bMusic = false; //缺省为没有背景音乐 m_sMusicName = ""; m_bDrawGrid = true; //缺省为画网格线 m_iLevel = 3 ; //缺省级别为3级 m_iLevel2 = 3 ; m_bConnectStatus = false; //联机状态,false为未联机状态,true为联机状态 m_iConnectStatus = 0; //连接状态,0为服务器,1为客户机 m_bConnectReady = false; GameInitial(); //初始化 //19种形状的定义:编号按先下后上,先左后右的次序分别为四个方块编号 //"1" shape[0].next=1; //-0---------- shape[0].X[0]=0;shape[0].Y[0]=0; // -+-- shape[0].X[1]=0;shape[0].Y[1]=-1; // -+-- shape[0].X[2]=0;shape[0].Y[2]=-2; // -+-- shape[0].X[3]=0;shape[0].Y[3]=-3; // -+-- shape[0].color=0; //"1"变形1 shape[1].next=0; //-1----------- shape[1].X[0]=0;shape[1].Y[0]=0; // ---- shape[1].X[1]=1;shape[1].Y[1]=0; // ---- shape[1].X[2]=2;shape[1].Y[2]=0; // ---- shape[1].X[3]=-1;shape[1].Y[3]=0; // ++++ shape[1].color=0; //"7" shape[2].next=3; //-2----------- shape[2].X[0]=0;shape[2].Y[0]=-2; // ---- shape[2].X[1]=1;shape[2].Y[1]=-2; // -++- shape[2].X[2]=1;shape[2].Y[2]=-1; // --+- shape[2].X[3]=1;shape[2].Y[3]=0; // --+- shape[2].color=1; //"7"变形1 shape[3].next=4; //-3----------- shape[3].X[0]=0;shape[3].Y[0]=0; // ---- shape[3].X[1]=1;shape[3].Y[1]=-1; // ---- shape[3].X[2]=2;shape[3].Y[2]=-1; // -+++ shape[3].X[3]=0;shape[3].Y[3]=-1; // -+-- shape[3].color=1; //"7"变形2 shape[4].next=5; //-4------------ shape[4].X[0]=0;shape[4].Y[0]=0; // ---- shape[4].X[1]=0;shape[4].Y[1]=-1; // -+-- shape[4].X[2]=0;shape[4].Y[2]=-2; // -+-- shape[4].X[3]=1;shape[4].Y[3]=0; // -++- shape[4].color=1; //"7"变形3 shape[5].next=2; //-5------------ shape[5].X[0]=0;shape[5].Y[0]=0; // ---- shape[5].X[1]=1;shape[5].Y[1]=0; // ---- shape[5].X[2]=2;shape[5].Y[2]=0; // ---+ shape[5].X[3]=2;shape[5].Y[3]=-1; // -+++ shape[5].color=1; //反"7" shape[6].next=7; //-6------------ shape[6].X[0]=0;shape[6].Y[0]=0; // ---- shape[6].X[1]=0;shape[6].Y[1]=-1; // -++- shape[6].X[2]=0;shape[6].Y[2]=-2; // -+-- shape[6].X[3]=1;shape[6].Y[3]=-2; // -+-- shape[6].color=2; //反"7"变形1 shape[7].next=8; //-7------------ shape[7].X[0]=0;shape[7].Y[0]=0; // ---- shape[7].X[1]=0;shape[7].Y[1]=-1; // ---- shape[7].X[2]=1;shape[7].Y[2]=0; // -+-- shape[7].X[3]=2;shape[7].Y[3]=0; // -+++ shape[7].color=2; //反"7"变形2 shape[8].next=9; //-8------------ shape[8].X[0]=0;shape[8].Y[0]=0; // ---- shape[8].X[1]=1;shape[8].Y[1]=0; // --+- shape[8].X[2]=1;shape[8].Y[2]=-2; // --+- shape[8].X[3]=1;shape[8].Y[3]=-1; // -++- shape[8].color=2; //反"7"变形3 shape[9].next=6; //-9------------ shape[9].X[0]=0;shape[9].Y[0]=-1; // ---- shape[9].X[1]=1;shape[9].Y[1]=-1; // ---- shape[9].X[2]=2;shape[9].Y[2]=-1; // -+++ shape[9].X[3]=2;shape[9].Y[3]=0; // ---+ shape[9].color=2; //"T" shape[10].next=11; //-10------------ shape[10].X[0]=0;shape[10].Y[0]=0; // ---- shape[10].X[1]=0;shape[10].Y[1]=-1; // -+-- shape[10].X[2]=0;shape[10].Y[2]=-2; // -++- shape[10].X[3]=1;shape[10].Y[3]=-1; // -+-- shape[10].color=3; //"T"变形1 shape[11].next=12; //-11------------ shape[11].X[0]=0;shape[11].Y[0]=0; // ---- shape[11].X[1]=1;shape[11].Y[1]=0; // ---- shape[11].X[2]=2;shape[11].Y[2]=0; // --+- shape[11].X[3]=1;shape[11].Y[3]=-1; // -+++ shape[11].color=3; //"T"变形2 shape[12].next=13; //-12------------ shape[12].X[0]=1;shape[12].Y[0]=0; // ---- shape[12].X[1]=1;shape[12].Y[1]=-1; // --+- shape[12].X[2]=1;shape[12].Y[2]=-2; // -++- shape[12].X[3]=0;shape[12].Y[3]=-1; // --+- shape[12].color=3; //"T"变形3 shape[13].next=10; //-13------------ shape[13].X[0]=0;shape[13].Y[0]=-1; // ---- shape[13].X[1]=1;shape[13].Y[1]=0; // ---- shape[13].X[2]=2;shape[13].Y[2]=-1; // -+++ shape[13].X[3]=1;shape[13].Y[3]=-1; // --+- shape[13].color=3; //S shape[14].next=15; //-14------------ shape[14].X[0]=0;shape[14].Y[0]=0; // ---- shape[14].X[1]=1;shape[14].Y[1]=0; // ---- shape[14].X[2]=1;shape[14].Y[2]=-1; // --++ shape[14].X[3]=2;shape[14].Y[3]=-1; // -++- shape[14].color=4; //S变形1 shape[15].next=14; //-15------------ shape[15].X[0]=0;shape[15].Y[0]=-1; // ---- shape[15].X[1]=0;shape[15].Y[1]=-2; // -+-- shape[15].X[2]=1;shape[15].Y[2]=-1; // -++- shape[15].X[3]=1;shape[15].Y[3]=0; // --+- shape[15].color=4; //Z shape[16].next=17; //-16------------ shape[16].X[0]=0;shape[16].Y[0]=-1; // ---- shape[16].X[1]=1;shape[16].Y[1]=-1; // ---- shape[16].X[2]=1;shape[16].Y[2]=0; // -++- shape[16].X[3]=2;shape[16].Y[3]=0; // --++ shape[16].color=5; //Z变形1 shape[17].next=16; //-17------------- shape[17].X[0]=0;shape[17].Y[0]=0; // ---- shape[17].X[1]=0;shape[17].Y[1]=-1; // --+- shape[17].X[2]=1;shape[17].Y[2]=-1; // -++- shape[17].X[3]=1;shape[17].Y[3]=-2; // -+-- shape[17].color=5; //方块 shape[18].next=18; //-18------------ shape[18].X[0]=0;shape[18].Y[0]=0; // ---- shape[18].X[1]=1;shape[18].Y[1]=0; // ---- shape[18].X[2]=0;shape[18].Y[2]=-1; // -++- shape[18].X[3]=1;shape[18].Y[3]=-1; // -++- shape[18].color=6; }