Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.JFrame;
- public class Main {
- public static void main( String args[] ){
- Menu application = new Menu();
- application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
- application.setLocationRelativeTo( null );
- }
- }
- public class Jogador {
- private String nome; //Nome do jogador
- private int pontos; //Quantos pontos o jogador tem
- public Jogador(String nomeJogador){ //Construtor
- super();
- nome = nomeJogador;
- pontos = 0;
- }
- public String getNome(){ //Metodo para retornar o nome do jogador
- return nome;
- }
- public int getPontos(){ //Metodo para retornar a quantidade de pontos do Jogador
- return pontos;
- }
- public void incrementarPontos(){ //Metodo para incrementar pontos a cada acerto do jogador
- pontos = pontos + 10;
- }
- public void decrementarPontos(){ //Metodo para decrementar pontos a cade erro do Jogador
- pontos = pontos - 2;
- }
- }
- import javax.swing.Icon;
- import javax.swing.JButton;
- public class Botao extends JButton {
- private Icon imagemPadrao; //Icone Default para a imagem
- private Icon imagemBotao; //Icone Default para o botao
- public Botao(Icon imagemPadrao, Icon imagemBotao){ //Construtor
- super();
- this.imagemPadrao = imagemPadrao;
- this.imagemBotao = imagemBotao;
- setImagemPadrao(); //Faz com que todos os botoes settem a imagem default
- }
- public void setImagemPadrao(){ //Metodo da classe Icon, setta im icone a imagem
- this.setIcon(imagemPadrao);
- }
- public void setImagemBotao(){ //Metodo da classe Icon, setta im icone ao botao
- this.setIcon(imagemBotao);
- }
- public Icon getImagemBotao(){ //Metodo Get padrao, retorna a imagem do botao
- return this.imagemBotao;
- }
- public Icon getImagemPadrao(){ //Metodo Get padrao, retorna a imagem padrao
- return this.imagemPadrao;
- }
- }
- import java.awt.BorderLayout;
- import java.awt.Color;
- import java.awt.Container;
- import java.awt.GridLayout;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.ItemListener;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- public class Menu extends JFrame implements ActionListener, ItemListener {
- private Container container; //Atributo do tipo Container, para armazenar todas as informacoes da classe
- private JButton botaoSair, botaoIniciarJogo, botaoLog; //Atributo do tipo JButton, serve para, como o nome diz, Sair do jogo ou Iniciar o jogo
- private JPanel painelBotoes, painelDados, painelCabecalho; //Atributo do tipo JPanel, serve para mostrar a Tela do jogo com as informacoes
- private JPanel painelCentro, painelRodape, painelImagem; //Idem para o de cima, com a diferenca que este eh estetica
- private Icon imagemPainel, imagemJogar, imagemTitulo, imagemSair; //Serve para settar imagens ao JPanel
- private JLabel labelImagemPainel, labelNomeJogador, labelTemaJogo; //Serve para que apareca o nome do jogador no jogo
- private JLabel labelCreditos, labelTitulo; //Estetica, titulo do jogo e creditos de quem o desenvolveu
- private GridLayout gridBotoes, gridCentro, gridCabecalho, gridRodape; //Grades para organizar os componentes
- private JComboBox temasJogo; //O JComboBox serve para o usuario selecionar uma opcao de um "scroll-down" menu, neste caso, para escolher o tema do jogo
- private int indiceTema = 1; //Para selecionar o tema do jogo 1 = Pokemon
- private JTextField fieldNomeJogador; //Serve para o usuario escrever seu nome no jogo
- private boolean jogoFacil = false;
- private JMenu menuDificuldade; //Botao que quando clicado junto com o JMenu mostra as dificuldades que podem ser selecionadas, e somente ela podera ser selecionada
- //enquanto as outras permanecem desligadas, tipo um "Switch Case", um "tick"
- private JMenuBar barraMenu; ////Mostra com um "pop-up" os componentes do menuDificuldade, para selecionarmos
- private JRadioButtonMenuItem radioFacil, radioDificil; //As Dificuldades Facil e Dificil podem ser selecionadas atravez de checks
- private JLabel nivelDificuldade; //Mostrar uma string, neste caso Dificil ou Facil
- private Jogador objJogador; //Instanciar a Classe Jogador
- private TelaJogo objTelaJogo; //Instancia a Classe TelaJogo
- private String nomeObjJogador; //String para armazenar o nome do jogador
- private String temas[] = {"Pokemon", "Mortal Kombat"}; //Array de String para armazenar o nome dos Temas do jogo
- private int indiceTemas[] = {1, 2}; //Array de int para armazenar qual indice corresponde a qual Tema, ex.: 1 - Pokemon; 2 - Mortal Kombat
- BufferedReader br = null;
- public Menu(){
- super();
- /*public GridLayout(int rows,
- int cols,
- int hgap,
- int vgap)
- rows - the rows, with the value zero meaning any number of rows
- cols - the columns, with the value zero meaning any number of columns
- hgap - the horizontal gap
- vgap - the vertical gap
- */
- //Grades do Menu para settar o Layout
- gridBotoes = new GridLayout(1, 2, 5, 5);
- gridCentro = new GridLayout(6, 1, 10, 10);
- gridCabecalho = new GridLayout( 1, 1, 10, 10 );
- gridRodape = new GridLayout( 1, 1, 10, 10 );
- //Imagem do Painel a Esquerda
- imagemPainel = new ImageIcon(getClass().getResource("/imagens/jogo/painel.gif"));
- labelImagemPainel = new JLabel(imagemPainel);
- painelImagem = new JPanel();
- painelImagem.add(labelImagemPainel);
- //Imagem dos Botoes;
- //Imagem do Botao Jogar
- imagemJogar = new ImageIcon(getClass().getResource("/imagens/jogo/jogar.gif"));
- //Imagem do Botao Sair
- imagemSair = new ImageIcon(getClass().getResource("/imagens/jogo/sair.gif"));
- //Configuracao dos Botoes;
- //Botao Jogar
- botaoIniciarJogo = new JButton("Start Game", imagemJogar);
- botaoIniciarJogo.addActionListener(this);
- botaoIniciarJogo.setSize(250, 15);
- botaoIniciarJogo.setHorizontalAlignment( SwingConstants.LEFT );
- //Botao Sair
- botaoSair = new JButton("Exit Game" , imagemSair);
- botaoSair.addActionListener(this);
- botaoSair.setSize(250, 15);
- botaoSair.setHorizontalAlignment( SwingConstants.RIGHT );
- //Botao Log
- botaoLog = new JButton("Log do jogo");
- botaoLog.addActionListener(this);
- botaoLog.setSize(50, 15);
- botaoLog.setHorizontalAlignment(SwingConstants.CENTER);
- //Painel de Botoes Inferior
- painelBotoes = new JPanel();
- painelBotoes.setLayout(gridBotoes);
- painelBotoes.add(botaoSair);
- painelBotoes.add(botaoIniciarJogo);
- //Labels(instrucoes, informacoes, etc);
- //Label para mostrar o nivel de Dificuldade, padrao eh Facil
- nivelDificuldade = new JLabel("Nivel de Dificuldade: Dificil");
- nivelDificuldade.setForeground(Color.red);
- //Titulo/Cabecalho
- imagemTitulo = new ImageIcon(getClass().getResource("/imagens/jogo/titulo2.gif"));
- labelTitulo = new JLabel(imagemTitulo);
- labelTitulo.setHorizontalAlignment(SwingConstants.CENTER);
- //Painel para conter o Titulo
- painelCabecalho = new JPanel();
- painelCabecalho.setLayout(gridCabecalho);
- painelCabecalho.add(labelTitulo);
- painelCabecalho.add(botaoLog);
- //Label para escolha do Nome
- labelNomeJogador = new JLabel("Insira aqui seu nome desejado");
- //Campo de texto para informar o nome
- fieldNomeJogador = new JTextField(40);
- //Label para Escolher o tema do Jogo
- labelTemaJogo = new JLabel("Escolha qual o tema do jogo");
- //ComboBox dos temas do jogo, drop-down menu para escolha dos temas
- temasJogo = new JComboBox(temas);
- temasJogo.addItemListener(this);
- //Painel Central com todos os dados e basicamente os botoes
- painelCentro = new JPanel();
- painelCentro.setLayout(gridCentro);
- painelCentro.add(labelTemaJogo);
- painelCentro.add(temasJogo);
- painelCentro.add(labelNomeJogador);
- painelCentro.add( fieldNomeJogador );
- painelCentro.add(nivelDificuldade);
- //Configuracao dos Menus;
- //Menu de Dificuldade
- menuDificuldade = new JMenu("Nível de Dificuldade");
- barraMenu = new JMenuBar();
- setJMenuBar(barraMenu);
- barraMenu.add(menuDificuldade);
- //Opcao JRadioButton Dificil
- radioDificil = new JRadioButtonMenuItem("Jogo 6x6");
- radioDificil.setSelected(true);
- radioDificil.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent ae){
- jogoFacil = false; //modifica o atributo jogoFacil para falso
- nivelDificuldade.setText("Nível de dificuldade: DIFÍCIL"); //Modifica o JLabel para mostrar que o jogo foi settado pra Dificil
- nivelDificuldade.setForeground(Color.red); //Modifica a Cor do texto para vermelho; Vermelho eh a cor universal de dificuldade elevada pois representa fogo, sangue, etc. inutil
- }
- });
- //Opcao JRadioButton Facil
- radioFacil = new JRadioButtonMenuItem("Jogo 4x4");
- radioFacil.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent ae){
- jogoFacil = true;
- nivelDificuldade.setText("Nivel de dificuldade: FACIL");
- nivelDificuldade.setForeground(Color.blue);
- }
- });
- //Adiciona as opcoes de dificuldade ao menu
- menuDificuldade.add(radioDificil);
- menuDificuldade.add(radioFacil);
- //Adiciona um Label/texto de creditos do Programa
- labelCreditos = new JLabel("Feito por Salvatore Amore & Ricardo Sell - 2015");
- //Configura o rodape do jogo
- painelRodape = new JPanel();
- painelRodape.setLayout(gridRodape);
- painelRodape.add(labelCreditos);
- //Configuracao de Layout do Painel Principal de Dados
- painelDados = new JPanel();
- painelDados.setLayout( new BorderLayout( 10, 10 ));
- painelDados.add( painelCabecalho, BorderLayout.NORTH);
- painelDados.add( painelCentro, BorderLayout.CENTER );
- painelDados.add( painelBotoes, BorderLayout.SOUTH );
- //Container
- container = getContentPane();
- container.setLayout( new BorderLayout( 5, 5 ) );
- container.setBackground( Color.lightGray );
- container.add( painelRodape, BorderLayout.SOUTH );
- container.add( painelImagem, BorderLayout.WEST );
- container.add( painelDados );
- //Configuracao da Tela de Menu
- setSize( 550, 380 );
- setVisible( true );
- setResizable( false );
- }
- private void saidaPrograma(){
- System.exit( 0 );
- }
- public void lerLog(){
- try {
- String sCurrentLine;
- br = new BufferedReader(new FileReader("Ranking.txt"));
- while ((sCurrentLine = br.readLine()) != null) {
- System.out.println(sCurrentLine);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (br != null)br.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- }
- public void actionPerformed(ActionEvent event){
- //Se o evento for o botao de saida;
- if ( event.getSource() == botaoSair ){
- saidaPrograma();
- }
- //Se o evento for o botao de Log;
- else if(event.getSource() == botaoLog){
- lerLog();
- }
- //Se entao o evento for o botao de Inicio de Jogo
- else if(event.getSource() == botaoIniciarJogo){
- nomeObjJogador = fieldNomeJogador.getText(); //o nomeObjJogador, ou seja, o nome do jogador pega essa informacao na area de Texto em que o usuario escreveu
- objJogador = new Jogador(nomeObjJogador); //Cria um novo Jogador e passa como parametro o nome pego antes
- if(jogoFacil)
- objTelaJogo = new TelaJogo( objJogador, indiceTema, 4 );
- else
- objTelaJogo = new TelaJogo( objJogador, indiceTema, 6 );
- }
- }
- public void itemStateChanged(ItemEvent event){
- if(event.getSource() == temasJogo){
- if(event.getStateChange() == ItemEvent.SELECTED){
- indiceTema = indiceTemas[ temasJogo.getSelectedIndex() ];
- }
- }
- }
- }
- import java.awt.*;
- import java.awt.event.*;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- import java.io.BufferedWriter;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.Random;
- import javax.swing.*;
- public class TelaJogo extends JFrame implements ActionListener{
- private Object botaoClicadoUm = new Object();
- private Object botaoClicadoDois = new Object();
- private JLabel pontosJogador, labelPontosJogador;
- private JPanel painelImagens, painelPontos;
- private JButton botaoSair;
- private Icon imagemSair, imagens[], imagemPadrao, imagensGuarda[];
- private GridLayout grid;
- private Container container;
- private String tema, resumoJogo = "";
- private Jogador objJogadorJogada;
- private int fator, qtdeAcerto, qtdeTentativas = 0;
- private boolean primeiroClique = true;
- private boolean acertou = true;
- private Botao botaoUm, botaoDois, posicoesFiguras[];
- Random gerador = new Random();
- /*
- * objJogador - Objeto jogador, com os dados do jogador
- * indiceTema - O tema escolhido
- * fatorJogo - Inteiro que determina se o jogo é 4X4 ou 6X6
- */
- public TelaJogo( Jogador objJogador, int indiceTema, int fatorJogo ){
- super( "Jogo da Memória");
- setLocation( 200, 10 );
- fator = fatorJogo;
- objJogadorJogada = objJogador;
- temaJogada( indiceTema );
- preparaArrayImagens();
- container = getContentPane();
- labelPontosJogador = new JLabel( "Jogador: " + objJogadorJogada.getNome() + " >> Pontos: " );
- pontosJogador = new JLabel( ""+objJogadorJogada.getPontos() );
- imagemSair = new ImageIcon(getClass().getResource("/imagens/jogo/sair.gif"));
- // configura o botão sair
- botaoSair = new JButton(" Sair do Jogo ", imagemSair);
- botaoSair.addActionListener( this );
- painelImagens = new JPanel();
- painelPontos = new JPanel();
- // configura o painel superior
- painelPontos.add( labelPontosJogador );
- painelPontos.add( pontosJogador );
- grid = new GridLayout( fator, fator, 5, 5 );
- painelImagens.setLayout( grid );
- imagemPadrao = new ImageIcon(getClass().getResource("/imagens/jogo/standard.gif"));
- posicoesFiguras = new Botao[( fator * fator )];
- for ( int ctrl = 0; ctrl < ( fator * fator ); ctrl++ ){
- posicoesFiguras[ ctrl ] = new Botao(imagemPadrao, imagens[ctrl]);
- posicoesFiguras[ ctrl ].addActionListener( this );
- painelImagens.add( posicoesFiguras[ ctrl ] );
- }
- container.add( painelPontos, BorderLayout.NORTH);
- container.add( botaoSair, BorderLayout.SOUTH );
- container.add( painelImagens );
- double d_largura;
- if(fator == 4){
- d_largura = 85;
- }
- else{
- d_largura = 80;
- }
- d_largura *= fator;
- int i_largura = (int) d_largura;
- setSize( i_largura, i_largura+70 );
- setVisible( true );
- setResizable( false );
- }
- /**
- * Prepara o Array de Imagens
- *
- */
- public void preparaArrayImagens(){
- int posicaoNoArray, x, y;
- this.imagensGuarda = new Icon[(fator * fator)/2];
- for ( x = 0; x < ((fator*fator)/2); x++ ){
- this.imagensGuarda[ x ] = new ImageIcon(getClass().getResource(tema + ( x + 1 ) + ".GIF"));
- }
- this.imagens = new Icon[ (fator*fator) ];
- for ( x = 0; x < 2; x++ ){
- for ( y = 0; y < ((fator*fator)/2); y++ ){
- do{
- posicaoNoArray = gerador.nextInt(fator*fator);
- }while( this.imagens[ posicaoNoArray ] != null );
- this.imagens[ posicaoNoArray ] = imagensGuarda[ y ];
- }
- }
- }
- //Descobre o tema escolhido com Switch Case
- private void temaJogada( int codTema ){
- switch( codTema ){
- case 1: this.tema = "/imagens/Pokemon/";
- break;
- case 2: this.tema = "/imagens/MortalKombat/";
- break;
- }
- }
- //Mostrar pontuacao e tentativas do jogador
- private void mostrarResumoJogo(){
- resumoJogo = "Jogador: " + objJogadorJogada.getNome() + " " +
- "Pontos: " + objJogadorJogada.getPontos() + " " +
- "Quantidade de tentativas: " + qtdeTentativas + " \n --" +
- " Jogo do tipo: " + fator + "x" + fator ;
- JOptionPane.showMessageDialog( null, ""+resumoJogo, "Resumo do Jogo",
- JOptionPane.INFORMATION_MESSAGE );
- BufferedWriter writer = null;
- try
- {
- writer = new BufferedWriter( new FileWriter( "Ranking.txt", true));
- writer.write( resumoJogo);
- writer.newLine();
- }
- catch ( IOException e)
- {
- }
- finally
- {
- try
- {
- if ( writer != null)
- writer.close( );
- }
- catch ( IOException e)
- {
- }
- }
- setVisible( false );
- }
- public void actionPerformed( ActionEvent event ){
- // Se o evento for do botão Sair
- if ( event.getSource() == botaoSair ){
- mostrarResumoJogo();
- }
- // Caso contrário eh evento de botões de imagem
- else{
- // testa se eh o primeiro clique
- if( primeiroClique ){
- // testa se o jogador errou na jogada anterior
- if ( !acertou ){
- botaoUm = (Botao) botaoClicadoUm;
- botaoDois = (Botao) botaoClicadoDois;
- botaoUm.setImagemPadrao();
- botaoDois.setImagemPadrao();
- }
- botaoClicadoUm = event.getSource();
- botaoUm = (Botao) botaoClicadoUm;
- botaoUm.setImagemBotao();
- // indica que este foi o primeiro clique
- primeiroClique = !primeiroClique;
- }
- // se nao for o primeiro clique
- else{
- botaoClicadoDois = event.getSource();
- botaoDois = (Botao) botaoClicadoDois;
- qtdeTentativas++;
- // verifica se o jogador clicou no mesmo botão
- if ( botaoClicadoDois == botaoClicadoUm ){
- acertou = false;
- JOptionPane.showMessageDialog( null, "Ação não permitida!",
- "Ação Não Permitida", JOptionPane.WARNING_MESSAGE );
- }
- // se não for o mesmo botao
- else{
- // coloca a imagem no botao
- botaoDois.setImagemBotao();
- // compara com o primeiro botão clicado
- if ( botaoUm.getImagemBotao().equals( botaoDois.getImagemBotao())){
- acertou = true;
- qtdeAcerto++;
- // Desabilita os botões
- botaoUm.setEnabled( false );
- botaoDois.setEnabled( false );
- // incrementar pontos
- objJogadorJogada.incrementarPontos();
- pontosJogador.setText( ""+objJogadorJogada.getPontos() );
- // se foi o último par encontrado, apresenta resumo do jogo e fecha a janela
- if ( qtdeAcerto == ((fator*fator)/2) ){
- mostrarResumoJogo();
- setVisible( false );
- }
- }
- // se não for o mesmo botão
- else{
- acertou = false;
- //decrementar pontos
- objJogadorJogada.decrementarPontos();
- pontosJogador.setText( ""+objJogadorJogada.getPontos() );
- }
- // indica que este foi o segundo clique
- primeiroClique = !primeiroClique;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement