bool DataGrid::GenNext(list<CHANGE_ORDER>& outChange) { vector<Pos> vBlankCells; for(int x = 0;x < 4;x ++) { for(int y = 0;y < 4;y ++) { if(data[y][x] == 0) { Pos pos; pos.X = x; pos.Y = y; vBlankCells.push_back(pos); } } } //新产生的值,一定几率为4 int newValue = 2; if(rand() % 100 < 20) { newValue = 4; } if(vBlankCells.size() > 0) { int index = rand() % vBlankCells.size(); const Pos& pos = vBlankCells[index]; data[pos.Y][pos.X] = newValue; //记录变化 ChangeData change; change.cType = enChangeType_AddNew; change.Param1 = pos.Y; change.Param2 = pos.X; CHANGE_ORDER order; order.push_back(change); outChange.push_back(order); if(vBlankCells.size() == 1) { if(CheckEnd() == true) { //游戏结束 return false; } } return true; } else { //没有空格了 return false; } }
int TestIterators(hash_table* hash_info) { iterator it; char** i; for ( it = SetToEnd(hash_info); !CheckBegin(it) ; it = Back(it) ) { i = Value(it); } for ( it = SetToBegin(hash_info); !CheckEnd(it) ; it = Next(it) ) { i = Value(it); } return 0; }
bool CPDF_DataAvail::CheckDocStatus(DownloadHints* pHints) { switch (m_docStatus) { case PDF_DATAAVAIL_HEADER: return CheckHeader(pHints); case PDF_DATAAVAIL_FIRSTPAGE: return CheckFirstPage(pHints); case PDF_DATAAVAIL_HINTTABLE: return CheckHintTables(pHints); case PDF_DATAAVAIL_END: return CheckEnd(pHints); case PDF_DATAAVAIL_CROSSREF: return CheckCrossRef(pHints); case PDF_DATAAVAIL_CROSSREF_ITEM: return CheckCrossRefItem(pHints); case PDF_DATAAVAIL_CROSSREF_STREAM: return CheckAllCrossRefStream(pHints); case PDF_DATAAVAIL_TRAILER: return CheckTrailer(pHints); case PDF_DATAAVAIL_TRAILER_APPEND: return CheckTrailerAppend(pHints); case PDF_DATAAVAIL_LOADALLCROSSREF: return LoadAllXref(pHints); case PDF_DATAAVAIL_LOADALLFILE: return LoadAllFile(pHints); case PDF_DATAAVAIL_ROOT: return CheckRoot(pHints); case PDF_DATAAVAIL_INFO: return CheckInfo(pHints); case PDF_DATAAVAIL_ACROFORM: return CheckAcroForm(pHints); case PDF_DATAAVAIL_PAGETREE: if (m_bTotalLoadPageTree) return CheckPages(pHints); return LoadDocPages(pHints); case PDF_DATAAVAIL_PAGE: if (m_bTotalLoadPageTree) return CheckPage(pHints); m_docStatus = PDF_DATAAVAIL_PAGE_LATERLOAD; return true; case PDF_DATAAVAIL_ERROR: return LoadAllFile(pHints); case PDF_DATAAVAIL_PAGE_LATERLOAD: m_docStatus = PDF_DATAAVAIL_PAGE; default: m_bDocAvail = true; return true; } }
//分程序语法判断 bool KH::GrammarPL0::Block(){ bool result = true; if( GetWord(false).GetSign() == KH::_BLOCK) skip(1); //自然会跳过所有的block if( CheckEnd()) { Error( result, " Empty Input ! " ); return false; } if( GetWord(false).GetSign() == KH::_CONST){ skip(1); if( GetWord(false).GetSign() == KH::_IDENTIFIER){ if( GetWord(1,false).GetSign() == KH::_ASSIGN && GetWord(2,false).GetSign() == KH::_INT || GetWord(2,false).GetSign() == KH::_FLOAT ) { Sa.PushVariable(GetLine(),GetWord(false).GetValue()); //Gen int a = 11 if(GetWord(2,false).GetSign() == KH::_INT) GenPush("const int " + GetWord(false).GetValue() + " = " + GetWord(2,false).GetValue() + "; " ); else GenPush("const float " + GetWord(false).GetValue() + " = " + GetWord(2,false).GetValue() + "; " ); skip(3,false); while( GetWord(false).GetSign() == KH::_COMMA){ if( GetWord(1,false).GetSign() == KH::_IDENTIFIER && GetWord(2,false).GetSign() == KH::_ASSIGN && GetWord(3,false).GetSign() == KH::_INT || GetWord(3,false).GetSign() == KH::_FLOAT ) { Sa.PushVariable(GetLine(),GetWord(1,false).GetValue()); //Gen , int a = 11 if(GetWord(3,false).GetSign() == KH::_INT) GenPush("const int " + GetWord(1,false).GetValue() + " = " + GetWord(3,false).GetValue() + "; " ); else GenPush("const float " + GetWord(1,false).GetValue() + " = " + GetWord(3,false).GetValue() + "; " ); skip(4,false); } else { Error( result, " Const Loop Error : " + GetWord(false).GetValue() + GetWord(1,false).GetValue() + GetWord(2,false).GetValue() + GetWord(3,false).GetValue() ); break; } } if( GetWord(false) == KH::_SEMICOLON) skip(1); else{ Error( result, " Const Not End : " + GetWord(false).GetValue() ); } } else { Error( result, " Const sentence Error : " + GetWord(false).GetValue() ); } } else { Error( result, " Const Identifier Error : " + GetWord(false).GetValue() + GetWord(1,false).GetValue() + GetWord(2,false).GetValue() ); } }//End of if const ; if( GetWord(false).GetSign() == KH::_VAR)//如果单词是"var" { skip(1);//取下一个单词 if( GetWord(false).GetSign() == KH::_IDENTIFIER){ Sa.PushVariable(GetLine(),GetWord(false).GetValue()); //Gen var a GenPush("double " + GetWord(false).GetValue() + " = 0 ; " ); skip(1); while( GetWord(false).GetSign() == KH::_COMMA){ if( GetWord(1,false).GetSign() == KH::_IDENTIFIER ) { Sa.PushVariable(GetLine(),GetWord(1,false).GetValue()); //Gen var .. , a GenPush("double " + GetWord(1,false).GetValue() + " = 0 ; " ); skip(2); } else { Error( result," Var Loop Error : " + GetWord(false).GetValue() + GetWord(1,false).GetValue()); break; } } if( GetWord(false).GetSign() == KH::_SEMICOLON){ skip(1); } else { Error( result," Var Not End : " + GetWord(false).GetValue() ); } } else { Error( result," Var Identifier Error : " + GetWord(false).GetValue() ); } }//End of if var while ( GetWord(false).GetSign() == KH::_PROC)//如果单词是"procedure",则进入"函数定义"语法分析 { skip(1); if( GetWord(false).GetSign() == KH::_IDENTIFIER && GetWord(1,false).GetSign() == KH::_SEMICOLON)//"procedure"后应为标识符 { Sa.PushVariable(GetLine(),GetWord(false).GetValue()); //Gen var .. , a GenPush("double " + GetWord(false).GetValue() + "( ) { " ); //注意闭合! funcNames.push_back(GetWord(false).GetValue()); skip(2); Block(); //Gen var .. , a GenPush(" return 0 ; } " ); //注意闭合! } else{ Error( result," Proc define Error : " + GetWord(false).GetValue() + GetWord(1,false).GetValue() ) ; } }//End of if procedure if(!StatementParsing()){ Error( result," Parsing Error . " ); }//End of if Parsing return result; }