fork download
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <thread> // Para delay
  5. #include <chrono> // Para delay
  6.  
  7. class Carro {
  8. private:
  9. std::string nome;
  10. int posicao;
  11. public:
  12. Carro(std::string nome) : nome(nome), posicao(0) {}
  13.  
  14. void mover(int movimento) {
  15. posicao += movimento;
  16. }
  17.  
  18. int getPosicao() const {
  19. return posicao;
  20. }
  21.  
  22. std::string getNome() const {
  23. return nome;
  24. }
  25. };
  26.  
  27. void printBandeira() {
  28. std::cout << "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";
  29. std::cout << " ._________ \n";
  30. std::cout << " | | \n";
  31. std::cout << " | | \n";
  32. std::cout << " | | \n";
  33. std::cout << " | | \n";
  34. std::cout << " | | \n";
  35. std::cout << " | | \n";
  36. std::cout << " | | \n";
  37. std::cout << " |________| \n";
  38. }
  39.  
  40. void printPosicao(const Carro& carro) {
  41. std::cout << carro.getNome() << " está na posição " << carro.getPosicao() << std::endl;
  42. }
  43.  
  44. int main() {
  45. srand(time(0));
  46.  
  47. Carro carroAmarelo("Carro Amarelo"), carroVermelho("Carro Vermelho"), carroAzul("Carro Azul"), carroVerde("Carro Verde");
  48.  
  49. // Simulação dos movimentos
  50. for (int i = 0; i < 10; ++i) { // Aumentei o número de iterações para melhor visualização
  51. int movimento_carroAmarelo = rand() % 2 == 0 ? 1 : -1; // Movimento aleatório entre frente e trás
  52. int movimento_carroVermelho = rand() % 2 == 0 ? 1 : -1;
  53. int movimento_carroAzul = rand() % 2 == 0 ? 1 : -1;
  54. int movimento_carroVerde = rand() % 2 == 0 ? 1 : -1;
  55.  
  56. carroAmarelo.mover(movimento_carroAmarelo);
  57. carroVermelho.mover(movimento_carroVermelho);
  58. carroAzul.mover(movimento_carroAzul);
  59. carroVerde.mover(movimento_carroVerde);
  60.  
  61. // Imprime as posições dos carros após cada movimento
  62. printPosicao(carroAmarelo);
  63. printPosicao(carroVermelho);
  64. printPosicao(carroAzul);
  65. printPosicao(carroVerde);
  66.  
  67. // Delay para visualização
  68. std::this_thread::sleep_for(std::chrono::milliseconds(500));
  69. }
  70.  
  71. // Verifica o vencedor
  72. int maxPos = std::max(carroAmarelo.getPosicao(), std::max(carroVermelho.getPosicao(), std::max(carroAzul.getPosicao(), carroVerde.getPosicao())));
  73. if (carroAmarelo.getPosicao() == maxPos) {
  74. std::cout << "\n" << carroAmarelo.getNome() << " venceu!" << std::endl;
  75. }
  76. if (carroVermelho.getPosicao() == maxPos) {
  77. std::cout << "\n" << carroVermelho.getNome() << " venceu!" << std::endl;
  78. }
  79. if (carroAzul.getPosicao() == maxPos) {
  80. std::cout << "\n" << carroAzul.getNome() << " venceu!" << std::endl;
  81. }
  82. if (carroVerde.getPosicao() == maxPos) {
  83. std::cout << "\n" << carroVerde.getNome() << " venceu!" << std::endl;
  84. }
  85.  
  86. // Indica o(s) carro(s) que ficou/ficaram em último lugar
  87. int minPos = std::min(carroAmarelo.getPosicao(), std::min(carroVermelho.getPosicao(), std::min(carroAzul.getPosicao(), carroVerde.getPosicao())));
  88. if (carroAmarelo.getPosicao() == minPos) {
  89. std::cout << carroAmarelo.getNome() << " ficou em último lugar." << std::endl;
  90. }
  91. if (carroVermelho.getPosicao() == minPos) {
  92. std::cout << carroVermelho.getNome() << " ficou em último lugar." << std::endl;
  93. }
  94. if (carroAzul.getPosicao() == minPos) {
  95. std::cout << carroAzul.getNome() << " ficou em último lugar." << std::endl;
  96. }
  97. if (carroVerde.getPosicao() == minPos) {
  98. std::cout << carroVerde.getNome() << " ficou em último lugar." << std::endl;
  99. }
  100.  
  101. // Imprime a bandeira animada indicando o fim da corrida
  102. for (int i = 0; i < 3; ++i) {
  103. printBandeira();
  104. std::this_thread::sleep_for(std::chrono::milliseconds(500));
  105. system("pause"); // Pausa a execução até que o usuário pressione uma tecla
  106. system("cls"); // Limpa a tela (Windows)
  107. std::this_thread::sleep_for(std::chrono::milliseconds(500));
  108. }
  109.  
  110. return 0;
  111. }
Success #stdin #stdout #stderr 0.01s 5304KB
stdin
Standard input is empty
stdout
Carro Amarelo está na posição -1
Carro Vermelho está na posição 1
Carro Azul está na posição -1
Carro Verde está na posição -1
Carro Amarelo está na posição 0
Carro Vermelho está na posição 0
Carro Azul está na posição -2
Carro Verde está na posição -2
Carro Amarelo está na posição -1
Carro Vermelho está na posição -1
Carro Azul está na posição -3
Carro Verde está na posição -3
Carro Amarelo está na posição 0
Carro Vermelho está na posição 0
Carro Azul está na posição -2
Carro Verde está na posição -2
Carro Amarelo está na posição 1
Carro Vermelho está na posição -1
Carro Azul está na posição -1
Carro Verde está na posição -1
Carro Amarelo está na posição 0
Carro Vermelho está na posição 0
Carro Azul está na posição -2
Carro Verde está na posição -2
Carro Amarelo está na posição 1
Carro Vermelho está na posição 1
Carro Azul está na posição -3
Carro Verde está na posição -3
Carro Amarelo está na posição 2
Carro Vermelho está na posição 0
Carro Azul está na posição -4
Carro Verde está na posição -4
Carro Amarelo está na posição 1
Carro Vermelho está na posição 1
Carro Azul está na posição -3
Carro Verde está na posição -5
Carro Amarelo está na posição 2
Carro Vermelho está na posição 0
Carro Azul está na posição -2
Carro Verde está na posição -6

Carro Amarelo venceu!
Carro Verde ficou em último lugar.









































        ._________ 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |________| 









































        ._________ 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |________| 









































        ._________ 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |        | 
        |________| 
stderr
sh: 1: pause: not found
sh: 1: cls: not found
sh: 1: pause: not found
sh: 1: cls: not found
sh: 1: pause: not found
sh: 1: cls: not found