main() { reset(); enable_interrupt(); while() { elegir_luz(); encender_luz(); } /***** rutina de interrupcion *****/ if (scan_inter () != 1) { if (shift_reg == FLAG) { switch (p_buffer) { case (0) : comienzo = 1; break; case (1) : if (comienzo==1) { p_buffer = 0; device = gchar(); if ( device == IDENTIFICATIVO) { acknowledge(); p_out = 0; wserial( gout () ); more = 1; } } break; default : if ( device == IDENTIFICATIVO ) { if (verificar() == NAK) no_acknowledge (); else { ack_nak = interpretar (); if ( ack_nak == ACK ) acknowledge (); else no_acknowledge (); } p_out = 0; wserial( gout () ); more = 1; } break; } p_buffer = 0; } else pchar(shift_reg); } else { if (more == 0) goto RTI; wserial( gout () ); if (shift_reg == 'f') { p_out = 1; more = 0; } } RTI (); }
/**Função interpretador*/ void interpretador() { int resultado = 0; string input = ""; int ciclo = 1; for (printf("$motor3D > "); ciclo && getline(cin, input); printf("$motor3D > ")){ if (input.compare("") != 0){ resultado = interpretar(input); if (resultado == 0) ciclo = 0; } } }
int YUKON_CLI::run(){ int estado = 1; string comando; string mensagem = "Jogo começou"; do { //logica principal cout << mensagem << endl; imprimeCartas(); cout << endl << ">> "; cin >> comando; system("clear"); switch( interpretar(comando) ){ case 0: estado=1; mensagem = "Movendo..."; break; case 1: estado=2; mensagem = "Erro de interpretação."; break; case 3: estado=0; cout << "Fechando jogo..." << endl; break; case 4: estado=1; mensagem = "Gerando novo jogo."; break; } if (verificaFimJogo()){ cout << "Você ganhou !!!\tFim do jogo.\tEnter para fechar." << endl; cin.ignore(); while(cin.get()!='\n'){ cout << endl; } estado=0; } } while (estado != 0); return 0; }
/**Funcão interpretar*/ int interpretar(string linha){ istringstream ss(linha); string token; int cont = 0; vector<string> playerInfoVector; while (std::getline(ss, token, ' ')) { token = removeSpaces(token); if (token.compare("") != 0){ playerInfoVector.push_back(token); cont++; } } // Comando gerar if (playerInfoVector.at(0).compare("gerador") == 0 && cont != 0){ return gerador(playerInfoVector); } else if(playerInfoVector.at(0).compare("desenhar") == 0 && cont != 0){ return gerar_cena(playerInfoVector); } else if(playerInfoVector.at(0).compare("solar") == 0 && cont != 0){ vector<string> planetas = makeSolarSystem(); for(int i = 0; i < planetas.size(); i++) interpretar(planetas.at(i)); playerInfoVector.push_back("solar.xml"); return gerar_cena(playerInfoVector); } else if (playerInfoVector.at(0).compare("help") == 0 && cont != 0){ cout << MESSAGE_HELP; } else if (playerInfoVector.at(0).compare("exit") == 0 && cont != 0){ return 0; } else { // Como o comando invocado não é nenhum dos anteriores, devolve o erro correspondente cout << ERROR_COMMAND_NO_EXISTS; return -1; } }
int YUKON_CLI::run(){ int estado = 1; string comando; string mensagem = "Jogo começou"; //string &msg = mensagem; system("clear"); do { cout << mensagem << endl << endl; imprimeCartas(); cout << endl << ">> "; cin >> comando; system("clear"); mensagem = ""; switch( interpretar(comando, mensagem) ){ case 0: estado=1; //mensagem = "Movendo..."; break; case 1: estado=2; mensagem = "Erro de interpretação."; break; case 3: estado=0; cout << "Fechando jogo..." << endl; break; case 4: estado=3; mensagem = "Reiniciar jogo"; novoJogo(); break; } } while (estado != 0); return 0; }