Advertisement
losnato

Jogo da Velha

Nov 6th, 2013
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.60 KB | None | 0 0
  1. package game;
  2.  
  3. import java.util.Scanner;
  4. import java.util.Random;
  5.  
  6. public class Game {
  7.     public static void main(String[] args) {
  8.         Scanner entry = new Scanner(System.in);
  9.         int matrizJogo[][] = new int[3][3];
  10.         int caracterPlayer = 0, jogadasVeia = 0, jogadasPlayer = 0, jogadasOutroPlayer = 0;
  11.         boolean jogoAcabado = false;
  12.        
  13.         System.out.println("Velha ~> Olá desconhecido, bem vindo ao meu jogo! \nVelha ~> Digite seu nome para começar a jogar.");
  14.         System.out.print("Meu nome é: ");
  15.         String username = entry.next();
  16.        
  17.         System.out.println("\nVelha ~> Oi " + username + "! Agora que já nos conhecemos melhor, que tal jogar comigo ou com um amigo?!");
  18.         System.out.print("Você quer jogar com a velha ou com um amigo? ");
  19.         String spmp = entry.next();
  20.  
  21.         while(!spmp.equals("velha") && !spmp.equals("amigo")) {
  22.             System.out.println("\nVelha ~> " + username + ", eu não consegui entender com quem você quer jogar, tá com medo?");
  23.             System.out.print("Você quer jogar com a velha ou com um amigo? ");
  24.             spmp = entry.next();
  25.         }
  26.        
  27.         char caracter = '-';
  28.         String secondPlayerName = "-";
  29.        
  30.         if(!spmp.equals("velha")) {
  31.             System.out.print("\nQual é o nome do seu amigo? ");
  32.             secondPlayerName = entry.next();
  33.         }
  34.         Random rand = new Random();
  35.         int carac = rand.nextInt(2);
  36.         System.out.println("debug: "+ carac);
  37.        
  38.         int outroCarac = 0;
  39.        
  40.         switch(carac) {
  41.             case 0: { carac = 1; outroCarac = 2; break; }
  42.             case 1: { carac = 2; outroCarac = 1; break; }
  43.             default: carac = 0;
  44.         }
  45.        
  46.         caracterPlayer = carac;
  47.        
  48.         desenharJogo(matrizJogo);
  49.         System.out.println("\nVelha ~> Ok " + username + ", agora vamos jogar!");
  50.        
  51.         if(secondPlayerName.equals("-")) {
  52.             comecarJogoVeia(matrizJogo, carac, outroCarac, caracterPlayer, username);
  53.         } else {
  54.             comecarJogoVersus(matrizJogo, carac, outroCarac, caracterPlayer, username, secondPlayerName);
  55.         }
  56.     }
  57.     public static void desenharJogo(int mat[][]) {
  58.         char caracter[][] = new char[3][3];
  59.        
  60.         for(int i = 0; i <= 2; i++) {
  61.             for(int j = 0; j <= 2; j++) {
  62.                 if(mat[i][j] == 1) {
  63.                     caracter[i][j] = 'X';
  64.                 } else  if(mat [i][j] == 2) {
  65.                     caracter[i][j] = 'O';
  66.                 } else {
  67.                     caracter[i][j] = '-';
  68.                 }
  69.             }
  70.         }
  71.        
  72.         System.out.println("\n   A  B  C");
  73.         System.out.println("1  " + caracter[0][0] + "  " + caracter[0][1] + "  " + caracter[0][2] +
  74.                            "\n2  " + caracter[1][0] + "  " + caracter[1][1] + "  " + caracter[1][2] +
  75.                            "\n3  " + caracter[2][0] + "  " + caracter[2][1] + "  " + caracter[2][2]);
  76.     }
  77.     public static void vezJogador(String uName, int mat[][], int carc) {
  78.         Scanner entry = new Scanner(System.in);
  79.         System.out.print("\nVelha ~> Digite a coluna em que você quer jogar (A/B/C): ");
  80.         char coluna = entry.next().charAt(0);
  81.        
  82.         int col = -255, lin = -255;
  83.        
  84.         switch(coluna) {
  85.             case 'a': case 'A': {
  86.                 col = 0;
  87.                 break;
  88.             }
  89.             case 'b': case 'B': {
  90.                 col = 1;
  91.                 break;
  92.             }
  93.             case 'c': case 'C': {
  94.                 col = 2;
  95.                 break;
  96.             }
  97.             default: col = -255;
  98.         }
  99.        
  100.         while(col == -255) {
  101.             System.out.println("\nVelha ~> " + uName + ", eu não consegui entender esta coluna! Tá confuso?");
  102.             System.out.print("Digite a coluna que você quer jogar (A/B/C): ");
  103.             coluna = entry.next().charAt(0);
  104.            
  105.             switch(coluna) {
  106.                 case 'a': case 'A': {
  107.                     col = 0;
  108.                     break;
  109.                 }
  110.                 case 'b': case 'B': {
  111.                     col = 1;
  112.                     break;
  113.                 }
  114.                 case 'c': case 'C': {
  115.                     col = 2;
  116.                     break;
  117.                 }
  118.                 default: col = -255;
  119.             }
  120.         }
  121.        
  122.         System.out.print("Velha ~> Agora digite em qual linha você quer jogar (1/2/3): ");
  123.         int linha = entry.nextInt();
  124.        
  125.         while(linha != 1 && linha != 2 && linha != 3) {
  126.             System.out.println("\nVelha ~> " + uName + ", eu não consegui entender esta linha! Tá confuso?");
  127.             System.out.print("Agora digite em qual linha você quer jogar (1/2/3): ");
  128.             linha = entry.nextInt();
  129.         }
  130.        
  131.         if(linha == 1) lin = 0;
  132.         else if(linha == 2) lin = 1;
  133.         else lin = 2;
  134.        
  135.         while(mat[lin][col] != 0) {
  136.             System.out.println("\nNão é possível jogar aí, " + uName +"\nVamos tentar de novo.");
  137.             vezJogador(uName, mat, carc);
  138.             break;
  139.         }
  140.        
  141.         mat[lin][col] = carc;
  142.         desenharJogo(mat);
  143.     }
  144.     public static void vezSegundoJogador(String uName, int mat[][], int carc) {
  145.         Scanner entry = new Scanner(System.in);
  146.         System.out.print("\nVelha ~> Digite a coluna em que você quer jogar (A/B/C): ");
  147.         char coluna = entry.next().charAt(0);
  148.        
  149.         int col = -255, lin = -255;
  150.        
  151.         switch(coluna) {
  152.             case 'a': case 'A': {
  153.                 col = 0;
  154.                 break;
  155.             }
  156.             case 'b': case 'B': {
  157.                 col = 1;
  158.                 break;
  159.             }
  160.             case 'c': case 'C': {
  161.                 col = 2;
  162.                 break;
  163.             }
  164.             default: col = -255;
  165.         }
  166.        
  167.         while(col == -255) {
  168.             System.out.println("\nVelha ~> " + uName + ", eu não consegui entender esta coluna! Tá confuso?");
  169.             System.out.print("Digite a coluna que você quer jogar (A/B/C): ");
  170.             coluna = entry.next().charAt(0);
  171.            
  172.             switch(coluna) {
  173.                 case 'a': case 'A': {
  174.                     col = 0;
  175.                     break;
  176.                 }
  177.                 case 'b': case 'B': {
  178.                     col = 1;
  179.                     break;
  180.                 }
  181.                 case 'c': case 'C': {
  182.                     col = 2;
  183.                     break;
  184.                 }
  185.                 default: col = -255;
  186.             }
  187.         }
  188.        
  189.         System.out.print("Velha ~> Agora digite em qual linha você quer jogar (1/2/3): ");
  190.         int linha = entry.nextInt();
  191.        
  192.         while(linha != 1 && linha != 2 && linha != 3) {
  193.             System.out.println("\nVelha ~> " + uName + ", eu não consegui entender esta linha! Tá confuso?");
  194.             System.out.print("Agora digite em qual linha você quer jogar (1/2/3): ");
  195.             linha = entry.nextInt();
  196.         }
  197.        
  198.         if(linha == 1) lin = 0;
  199.         else if(linha == 2) lin = 1;
  200.         else lin = 2;
  201.        
  202.         while(mat[lin][col] != 0) {
  203.             System.out.println("\nNão é possível jogar aí, " + uName +"\nVamos tentar de novo.");
  204.             vezSegundoJogador(uName, mat, carc);
  205.         }
  206.        
  207.         mat[lin][col] = carc;
  208.         desenharJogo(mat);
  209.     }
  210.     public static void vezVelha(int mat[][], int carc) {
  211.         Random rand = new Random();
  212.         int col = rand.nextInt(3);
  213.         int lin = rand.nextInt(3);
  214.        
  215.         boolean validate = false;
  216.        
  217.         switch(mat[lin][col]) {
  218.             case 0: {
  219.                 validate = true;
  220.                 break;
  221.             }
  222.         }
  223.        
  224.         while(!validate) {
  225.             col = rand.nextInt(3);
  226.             lin = rand.nextInt(3);
  227.            
  228.             switch(mat[lin][col]) {
  229.                 case 0: {
  230.                     validate = true;
  231.                     break;
  232.                 }
  233.             }
  234.         }
  235.        
  236.         mat[lin][col] = carc;
  237.         System.out.println("\nVelha ~> Minha vez.");
  238.         desenharJogo(mat);
  239.     }
  240.     public static int checarGanhador(int mat[][], int carc) {
  241.         int retorn = 0;
  242.         if(mat[0][0] == mat[0][1] && mat[0][1] == mat[0][2] && mat[0][0] != 0) retorn = mat[0][0];
  243.         else if(mat[1][0] == mat[1][1] && mat[1][1] == mat[1][2] && mat[1][0] != 0) retorn = mat[1][0];
  244.         else if(mat[2][0] == mat[2][1] && mat[2][1] == mat[2][2] && mat[2][0] != 0) retorn = mat[2][0];
  245.         else if(mat[0][0] == mat[1][0] && mat[1][0] == mat[2][0] && mat[0][0] != 0) retorn = mat[0][0];
  246.         else if(mat[0][1] == mat[1][1] && mat[1][1] == mat[2][1] && mat[0][1] != 0) retorn = mat[0][1];
  247.         else if(mat[0][2] == mat[1][2] && mat[1][2] == mat[2][2] && mat[0][2] != 0) retorn = mat[0][2];
  248.         else if(mat[0][0] == mat[1][1] && mat[1][1] == mat[2][2] && mat[0][0] != 0) retorn = mat[0][0];
  249.         else if(mat[2][0] == mat[1][1] && mat[1][1] == mat[0][2] && mat[2][0] != 0) retorn = mat[2][0];
  250.         else retorn = 0;
  251.        
  252.         return retorn;
  253.     }
  254.     public static void falasVeia(int ganhador, int jogadasVeia, int jogadasPlayer, boolean deuVelha) {
  255.         Random rand = new Random();
  256.         int fala = rand.nextInt(4);
  257.        
  258.         if(!deuVelha && ganhador != 0) {
  259.             if(ganhador == 1) {//Primeiro Jogador
  260.                 if(jogadasPlayer == 3) {
  261.                     switch(fala) {
  262.                         case 0: System.out.println("Velha ~> Nossa! Você é muito bom e essa foi muito rápida, parabéns!"); break;
  263.                         case 1: System.out.println("Velha ~> O que você andou fazendo pra ficar bom assim?"); break;
  264.                         case 2: System.out.println("Velha ~> Acho que te subestimei! Essa foi muito rápida"); break;
  265.                         case 3: System.out.println("Velha ~> Acho que vou voltar a fazer tricô. Você ganhou muito rápido"); break;
  266.                     }
  267.                 }
  268.                 else if(jogadasPlayer >= 4) {
  269.                     switch(fala) {
  270.                         case 0: System.out.println("Velha ~> Ah, minha novela já vai começar mesmo..."); break;
  271.                         case 1: System.out.println("Velha ~> Ganhei, mas foi difícil! Você andou estudando minhas jogadas, né?"); break;
  272.                         case 2: System.out.println("Velha ~> Essa foi quase!"); break;
  273.                         case 3: System.out.println("Velha ~> Aposto que isso é efeito do chá que eu fiz para você."); break;
  274.                     }
  275.                 }
  276.             }
  277.             else if(ganhador == 2) {//veia
  278.                 if(jogadasPlayer == 3) {
  279.                     switch(fala) {
  280.                         case 0: System.out.println("Velha ~> AHA! A véia aqui não é fraca não!"); break;
  281.                         case 1: System.out.println("Velha ~> Chupa essa jovem."); break;
  282.                         case 2: System.out.println("Velha ~> E ai, gostou?"); break;
  283.                         case 3: System.out.println("Velha ~> Na próxima agente aposta cinquentinha."); break;
  284.                     }
  285.                 }
  286.                 else if(jogadasPlayer >= 4) {
  287.                     switch(fala) {
  288.                         case 0: System.out.println("Velha ~> Essa foi suada hein! Vamos mais uma?"); break;
  289.                         case 1: System.out.println("Velha ~> A véia aqui ainda sabe jogar!"); break;
  290.                         case 2: System.out.println("Velha ~> E então, aprendeu?"); break;
  291.                         case 3: System.out.println("Velha ~> Aposto que você não conhecia essa jogada."); break;
  292.                     }
  293.                 }
  294.             }
  295.         } else {
  296.             switch(fala) {
  297.                 case 0: System.out.println("Velha ~> Nós 2 estamos em um nível muito parecido, meu jovem!"); break;
  298.                 case 1: System.out.println("Velha ~> Meu jovem, essa foi difícil!"); break;
  299.                 case 2: System.out.println("Velha ~> Deu véia."); break;
  300.                 case 3: System.out.println("Velha ~> Empate?! Não acredito!"); break;
  301.             }
  302.         }
  303.     }
  304.     public static void comecarJogoVeia(int mat[][], int carac, int outroCarac, int caracterPlayer, String username) {
  305.         Scanner entry = new Scanner(System.in);
  306.         int jogadasTotal = 9, jogadasPlayer = 0, jogadasVeia = 0;
  307.         boolean jogoAcabado = false, deuVeia = false;
  308.        
  309.         while(!jogoAcabado) {
  310.             System.out.println("\nSua vez.");
  311.            
  312.             vezJogador(username, mat, carac);
  313.             jogadasPlayer++;
  314.            
  315.             int test = checarGanhador(mat, carac);
  316.             if(test == carac) {
  317.                 System.out.println("");
  318.                 falasVeia(1, jogadasVeia, jogadasPlayer, false);
  319.                 jogoAcabado = true;
  320.                 deuVeia = false;
  321.                 break;
  322.             }
  323.            
  324.             jogadasTotal--;
  325.  
  326.             vezVelha(mat, outroCarac);
  327.             jogadasVeia++;
  328.            
  329.             int test2 = checarGanhador(mat, outroCarac);
  330.             if(test2 == outroCarac) {
  331.                 System.out.println("");
  332.                 falasVeia(2, jogadasVeia, jogadasPlayer, false);
  333.                 jogoAcabado = true;
  334.                 deuVeia = false;
  335.                 break;
  336.             }
  337.            
  338.             jogadasTotal--;
  339.            
  340.             if(jogadasTotal == 0 && jogoAcabado == false) {
  341.                 falasVeia(0, jogadasVeia, jogadasPlayer, true);
  342.                 jogoAcabado = true;
  343.                 deuVeia = true;
  344.                 break;
  345.             }
  346.         }
  347.        
  348.         for(int i = 0; i <= 2; i++) {
  349.             for(int j = 0; j <= 2; j++) {
  350.                 mat[i][j] = 0;  
  351.             }
  352.         }
  353.        
  354.         System.out.println("Velha ~> Quer jogar outra antes que o chá esfrie?");
  355.         System.out.print("(1 - sair | 2 - jogar novamente | 3 - jogar multiplayer): ");
  356.         int jogarOutra = entry.nextInt();
  357.        
  358.         switch(jogarOutra) {
  359.             case 1: break;
  360.             case 2: {
  361.                 desenharJogo(mat);
  362.                 comecarJogoVeia(mat, carac, outroCarac, caracterPlayer, username);
  363.                 break;
  364.             }
  365.             case 3: {
  366.                 System.out.print("\nQual é o nome do seu amigo?");
  367.                 String secondPlayerName = entry.next();
  368.  
  369.                 System.out.print("O jogo começou.\n");
  370.                 desenharJogo(mat);
  371.                 comecarJogoVersus(mat, carac, outroCarac, caracterPlayer, username, secondPlayerName);
  372.                 break;
  373.             }
  374.             default: {
  375.                 System.out.println("Velha ~> Não identifiquei essa opção meu jovem!");
  376.                 System.out.println("O jogo foi encerrado.");
  377.                 break;
  378.             }
  379.         }
  380.     }
  381.     public static void comecarJogoVersus(int mat[][], int carac, int outroCarac, int caracterPlayer, String username, String secondUser) {
  382.         Scanner entry = new Scanner(System.in);
  383.         int jogadasTotal = 9, jogadasPlayer = 0, jogadasSegundoJogador = 0;
  384.         boolean jogoAcabado = false, deuVeia = false;
  385.        
  386.         while(!jogoAcabado) {
  387.             System.out.println("\n" + username + ", sua vez.");
  388.             vezJogador(username, mat, carac);
  389.             jogadasPlayer++;
  390.            
  391.             int test = checarGanhador(mat, carac);
  392.             if(test == carac) {
  393.                 System.out.println("");
  394.                 System.out.println(username + " ganhou.");
  395.                 jogoAcabado = true;
  396.                 deuVeia = false;
  397.                 break;
  398.             }
  399.            
  400.             jogadasTotal--;
  401.  
  402.             System.out.println("\n" + secondUser + ", sua vez.");
  403.             vezSegundoJogador(secondUser, mat, outroCarac);
  404.             jogadasSegundoJogador++;
  405.            
  406.             int test2 = checarGanhador(mat, outroCarac);
  407.             if(test2 == outroCarac) {
  408.                 System.out.println("");
  409.                 System.out.println(secondUser + " ganhou.");
  410.                 jogoAcabado = true;
  411.                 deuVeia = false;
  412.                 break;
  413.             }
  414.            
  415.             jogadasTotal--;
  416.            
  417.             if(jogadasTotal == 0 && jogoAcabado == false) {
  418.                 falasVeia(0, jogadasSegundoJogador, jogadasPlayer, true);
  419.                 jogoAcabado = true;
  420.                 deuVeia = true;
  421.                 break;
  422.             }
  423.         }
  424.        
  425.         for(int i = 0; i <= 2; i++) {
  426.             for(int j = 0; j <= 2; j++) {
  427.                 mat[i][j] = 0;  
  428.             }
  429.         }
  430.        
  431.         System.out.println("Velha ~> Quer jogar outra antes que o chá esfrie?");
  432.         System.out.print("(1 - sair | 2 - jogar novamente | 3 - jogar singleplayer): ");
  433.         int jogarOutra = entry.nextInt();
  434.        
  435.         switch(jogarOutra) {
  436.             case 1: break;
  437.             case 2: {
  438.                 desenharJogo(mat);
  439.                 comecarJogoVeia(mat, carac, outroCarac, caracterPlayer, username);
  440.                 break;
  441.             }
  442.             case 3: {
  443.                 desenharJogo(mat);
  444.                 comecarJogoVeia(mat, carac, outroCarac, caracterPlayer, username);
  445.                 break;
  446.             }
  447.             default: {
  448.                 System.out.println("Velha ~> Não identifiquei essa opção meu jovem!");
  449.                 System.out.println("O jogo foi encerrado.");
  450.                 break;
  451.             }
  452.         }
  453.     }
  454. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement