Sem dúvida, uma das áreas que mais chamam atenção e despertam o interesse das pessoas é o desenvolvimento de jogos.
Visando esclarecer um pouco mais dessa área, nosso site base Programação Progressiva fez uma entrevista com um profissional e professor da área de criação de jogos digitais.
Enviar um café pro programador
Pode me ajudar a transformar cafeína em código?
Mostrando postagens com marcador Jogos. Mostrar todas as postagens
Mostrando postagens com marcador Jogos. Mostrar todas as postagens
Como fazer Jogos em Java
Em diversos momentos de nosso curso, demos uma pausa na teoria para partir para a prática de uma forma bem interessante: criando Jogos em Java! Com base nos conhecimentos que já tínhamos estudado em nossos tutoriais.
Segue uma compilação dos Jogos que já criamos! Em breve, mais jogos virão!
Se tem algum que gostaria de ver aqui, não deixe de sugerir nos comentários.
Segue uma compilação dos Jogos que já criamos! Em breve, mais jogos virão!
Se tem algum que gostaria de ver aqui, não deixe de sugerir nos comentários.
Tags:
Aplicativos,
Jogos
Campo Minado em Java: código comentado
Vamos agora explicar, em detalhes, como fazer, entender e programar toda a lógica de um campo minado na linguagem de programação Java.
O código do jogo se encontra em nosso artigo passado de nosso curso online de Java:
Jogo: Campo Minado em Java
O código do jogo se encontra em nosso artigo passado de nosso curso online de Java:
Jogo: Campo Minado em Java
Jogo: Campo Minado em Java
Dando continuidade aos games que estamos fazendo, e ensinando a fazer, vamos agora mostrar como fazer e programar o famoso jogo Campo Minado em Java.
Se não acompanhou os outros jogos feitos em nosso curso de Java, veja:
Como fazer o Jogo da Velha em Java
Como fazer o jogo Batalha Naval em Java
Aqui mostraremos as classes e código do jogo, no próximo artigo vamos explicar em detalhes como programar o jogo:
Código comentado sobre a criação do Campo Minado em Java
Como jogar o nosso Campo Minado em Java
Existe um tabuleiro 8x8, onde estão localizadas 10 minas.
A cada rodada você irá fornecer o número da linha e da coluna (ou seja, números de 1 até 8).
A cada rodada você irá fornecer o número da linha e da coluna (ou seja, números de 1 até 8).
Caso exista uma mina naquele lugar, você perde o jogo.
Caso não exista uma mina naquela posição, será exibido número naquele local e números nos locais vizinhos aquele que você escolheu, exceto onde há minas.
Esses números informam quantos minas existem ao redor daquele local.
Por exemplo, se você escolhe um local e aparece o número '2' lá, é porque existem duas minas nas vizinhanças daquele local. Vale salientar que 'ao redor' e 'vizinhança' significam todos os blocos ao redor, incluindo na diagonais.
Objetivo: Deixar os 10 campos que possuem minas livres. Ou seja, onde você deduzir que existe mina, não marque, simplesmente deixe o '_' lá, pois quando existem 10 underlines você ganhará o jogo.
Código do jogo Campo Minado em Java
-->campoMinado.java
public class campoMinado { public static void main(String[] args) { Jogo jogo = new Jogo(); } }
-->Jogo.java
public class Jogo { private Tabuleiro board; boolean terminar = false; boolean ganhou = false; int[] jogada; int rodada=0; public Jogo(){ board = new Tabuleiro(); Jogar(board); jogada = new int[2]; } public void Jogar(Tabuleiro board){ do{ rodada++; System.out.println("Rodada "+rodada); board.exibe(); terminar = board.setPosicao(); if(!terminar){ board.abrirVizinhas(); terminar = board.ganhou(); } }while(!terminar); if(!board.ganhou()){ System.out.println("Havia uma mina ! Você perdeu!"); board.exibeMinas(); } else { System.out.println("Parabéns, você deixou os 8 campos de minas livres em "+rodada+" rodadas"); board.exibeMinas(); } } }
-->Tabuleiro.java
import java.util.Random; import java.util.Scanner; public class Tabuleiro { private int[][] minas; private char[][] tabuleiro; private int linha, coluna; Random random = new Random(); Scanner entrada = new Scanner(System.in); public Tabuleiro(){ minas = new int[10][10]; tabuleiro = new char[10][10]; iniciaMinas(); // coloca 0 em todas as posições do tabuleiro de minas sorteiaMinas(); //coloca, aleatoriamente, 10 minas no tabuleiro de minas preencheDicas();//preenche o tabuleiro de minas com o número de minas vizinhas iniciaTabuleiro();//inicia o tabuleiro de exibição com _ } public boolean ganhou(){ int count=0; for(int line = 1 ; line < 9 ; line++) for(int column = 1 ; column < 9 ; column++) if(tabuleiro[line][column]=='_') count++; if(count == 10) return true; else return false; } public void abrirVizinhas(){ for(int i=-1 ; i<2 ; i++) for(int j=-1 ; j<2 ; j++) if( (minas[linha+i][coluna+j] != -1) && (linha != 0 && linha != 9 && coluna != 0 && coluna != 9) ){ tabuleiro[linha+i][coluna+j]=Character.forDigit(minas[linha+i][coluna+j], 10); } } public int getPosicao(int linha, int coluna){ return minas[linha][coluna]; } public boolean setPosicao(){ do{ System.out.print("\nLinha: "); linha = entrada.nextInt(); System.out.print("Coluna: "); coluna = entrada.nextInt(); if( (tabuleiro[linha][coluna] != '_') && ((linha < 9 && linha > 0) && (coluna < 9 && coluna > 0))) System.out.println("Esse campo já está sendo exibido"); if( linha < 1 || linha > 8 || coluna < 1 || coluna > 8) System.out.println("Escolha números de 1 até 8"); }while((linha < 1 && linha > 8) && (coluna < 1 && coluna > 8) || (tabuleiro[linha][coluna] != '_') ); if(getPosicao(linha, coluna)== -1) return true; else return false; } public void exibe(){ System.out.println("\n Linhas"); for(int linha = 8 ; linha > 0 ; linha--){ System.out.print(" "+linha + " "); for(int coluna = 1 ; coluna < 9 ; coluna++){ System.out.print(" "+ tabuleiro[linha][coluna]); } System.out.println(); } System.out.println("\n 1 2 3 4 5 6 7 8"); System.out.println(" Colunas"); } public void preencheDicas(){ for(int line=1 ; line < 9 ; line++) for(int column=1 ; column < 9 ; column++){ for(int i=-1 ; i<=1 ; i++) for(int j=-1 ; j<=1 ; j++) if(minas[line][column] != -1) if(minas[line+i][column+j] == -1) minas[line][column]++; } } public void exibeMinas(){ for(int i=1 ; i < 9; i++) for(int j=1 ; j < 9 ; j++) if(minas[i][j] == -1) tabuleiro[i][j]='*'; exibe(); } public void iniciaTabuleiro(){ for(int i=1 ; i<minas.length ; i++) for(int j=1 ; j<minas.length ; j++) tabuleiro[i][j]= '_'; } public void iniciaMinas(){ for(int i=0 ; i<minas.length ; i++) for(int j=0 ; j<minas.length ; j++) minas[i][j]=0; } public void sorteiaMinas(){ boolean sorteado; int linha, coluna; for(int i=0 ; i<10 ; i++){ do{ linha = random.nextInt(8) + 1; coluna = random.nextInt(8) + 1; if(minas[linha][coluna] == -1) sorteado=true; else sorteado = false; }while(sorteado); minas[linha][coluna] = -1; } } }
Código comentado sobre como criar um Jogo da Velha em Java
No tutorial passado mostramos um print do Jogo da Velha em Java, modo texto e Humano x Humano, bem como o código de 6 classes necessárias para rodar o programa:
Jogo da Velha em Java
Agora vamos comentar, em detalhes, cada classe, método e idéia que usamos para criar o jogo.
Jogo da Velha em Java
Agora vamos comentar, em detalhes, cada classe, método e idéia que usamos para criar o jogo.
Jogo da Velha em Java
Após estudar Herança, Polimorfismo, Classes e Métodos Abstratos chegou a hora de colocarmos nossos conhecimentos em prática para fazer algo realmente útil e bacana:
um jogo da velha.
Essa é uma versão simples, para ser jogada com duas pessoas. Note que, em uma aplicação Java simples como esta, o resultado saiu por volta de 300 linhas de código.
Mas deixamos as classes e tudo pronto para que, em um próximo tutorial de Java, possamos adicionar o computador em dois modos: modo fácil e modo infalível.
Sim, existe uma estratégia que podemos adotar (ou o computador pode adotar) para nunca perder uma partida de jogo da velha:
http://pt.wikihow.com/Ganhar-no-Jogo-da-Velha
um jogo da velha.
Essa é uma versão simples, para ser jogada com duas pessoas. Note que, em uma aplicação Java simples como esta, o resultado saiu por volta de 300 linhas de código.
Mas deixamos as classes e tudo pronto para que, em um próximo tutorial de Java, possamos adicionar o computador em dois modos: modo fácil e modo infalível.
Sim, existe uma estratégia que podemos adotar (ou o computador pode adotar) para nunca perder uma partida de jogo da velha:
http://pt.wikihow.com/Ganhar-no-Jogo-da-Velha
Jogo: Batalha Naval em Java

Java Progressivo em PDF(download da Apostila)
Usaremos tudo que aprendemos até o momento em nosso curso de Java: if else, laço do while, laço for, métodos, números aleatórios, arrays, arrays multidimensionais e muita criatividade.
Jogo: adivinhe o número sorteado pelo computador
Jogar é bom...mas jogar um jogo que você mesmo criou, é um prazer que poucos tem.
A linguagem de programação Java é conhecida por ser bastante usada para criação de jogos. Muito provavelmente você já jogou algum jogo, mesmo que seja aqueles online, feito em Java.Com base nos conhecimentos obtidos em nosso curso online de Java, já é possível criarmos um jogo.
Embora bem simples, é bem engenhoso e legal:
O computador vai sortear um número, entre 1 e 1000 e você terá que adivinhar que número é esse.
A cada rodada você entra com um número e o computador vai te dar as dicas, dizendo se o número que você digitou é maior ou menor ao número que ele sorteou.
Termina quando você acerta, e ele guarda o número de tentativas que você fez. Consegue bater seu próprio record?
Sabe qual é a melhor estratégia?
PASSO 1: Computador gera um número entre 1 e 1000
Para gerar um número, necessitamos importar a classe Random:import java.util.Random;
Precisamos criar um objeto do tipo Random para que ele possa gerar os números, vamos chamar de 'geradorDeAleatorios':
Random geradorDeAleatorios = new Random();
Agora precisamos que esse gerador nos forneça um número aleatório no intervalo de 1000 números. Vamos armazenas esse valor na variável inteira 'sorteado':
sorteado = geradorDeAleatorios.nextInt(1000);
Porém, dessa maneira, ele vai gerar um número entre 0 e 999. Para ser entre 1 e 1000, somamos 1:
sorteado = geradorDeAleatorios.nextInt(1000) + 1;
PASSO 2: looping principal do programa
Número gerado!Agora o usuário vai dar os palpites. Como o usuário vai tentar adivinhar o número pelo menos uma vez, o looping precisa rodar pelo menos uma vez. Portanto, usamos o do ... while.
Esse laço ocorre enquanto não adivinharmos o número, ou seja, enquanto nosso palpite for diferente do número sorteado:
do{
// laço
}while( palpite != sorteado);
PASSO 3: tentativa incrementada
A cada tentativa que damos, a variável 'tentativas', que contabiliza nossas tentativas é incrementada em uma unidade:tentativas++;
PASSO 4: analisando o palpite
Vamos mandar 3 números para o método dica(): o nosso palpite, o número sorteado pelo computador e o número de tentativas que fizemos.Para o nosso jogo dar a dica certa, usaremos os testes condicionais if else.
O método testa se o nosso palpite foi maior que o número gerado pelo computador, se for, dá tal dica:
if(palpite > numero){
System.out.println("Seu palpite é maior que o número sorteado.");
Case não seja, o palpite será menor ou igual ao número sorteado. Então vai pro else.
Caso o palpite do usuário seja menor que o número sorteado pelo computador, tal dica é exibida:
if(palpite < numero){
System.out.println("Seu palpite é menor que o número sorteado.");
Por fim, se o palpite não for maior nem menor que o número sorteado é porque é igual.
Ora, se é igual, você acertou e é exibida a mensagem de acerto e o número de tentativas realizadas:
System.out.println("Parabéns, você acertou! O número era " + numero);
System.out.println("Você tentou " + tentativas + " vezes antes de acertar!");
Quando você acerta, o método dica não é mais chamado, pois 'palpite != sorteado' retornará um valor falso, já que estes números serão iguais (palpite = sorteado), então o laço acaba, acabando o nosso jogo em Java.
Nosso jogo/aplicativo Java ficará assim:
import java.util.Random;
import java.util.Scanner;
public class JogoAdivinhaNumero {
public static void dica(int palpite, int numero, int tentativas){
if(palpite > numero){
System.out.println("Seu palpite é maior que o número sorteado.");
} else {
if(palpite < numero){
System.out.println("Seu palpite é menor que o número sorteado.");
} else {
System.out.println("Parabéns, você acertou! O número era " + numero);
System.out.println("Você tentou " + tentativas + " vezes antes de acertar!");
}
}
}
public static void main(String[] args) {
int palpite=0,
sorteado,
tentativas=0;
Scanner entrada = new Scanner(System.in);
Random geradorDeAleatorios = new Random();
sorteado = geradorDeAleatorios.nextInt(1000) + 1;
System.out.println("Número entre 1 e 1000 sorteado!");
do{
System.out.printf("\n\n\n\n-----------------\n");
System.out.println("Número de tentativas: " + tentativas);
System.out.print("Qual seu palpite: ");
palpite = entrada.nextInt();
tentativas++;
dica(palpite,sorteado, tentativas);
}while (palpite != sorteado);
}
}
Tags:
Aplicativos,
Controle de fluxo,
Jogos,
Laços,
Métodos
Criando um jogo em Java: GUI, Events, Listeners, Handlers e programação gráfica em Java
Aprenda a usar Events, Listeners, Handlers, JFrame, JButton, JLabel e JTextField criando um jogo em GUI (interface gráfica) do início ao fim em Java!
ActionListener, ActionEvent, Handlers...essas coisas só se aprendem na prática!
Nada melhor que criar seu jogo para aprender Java.
Nada melhor que criar seu jogo para aprender Java.
Tags:
Aplicativos,
Gráficos e 2D,
Jogos
Assinar:
Postagens (Atom)


