Java implementa minijogo de gamão
package Gomoku; import java.awt.Toolkit; import javax.swing.JFrame; public class GomokuFrame estende JFrame { //Definir um painel de operação OperatorPane op=null; public GomokuFrame() { //Definir o nome this.setTitle("Gomoku " ); //Definir o tamanho da janela this.setSize(510,510); //Definir a posição da janela//Obter o tamanho da tela do computador int computer_width=Toolkit.getDefaultToolkit().getScreenSize().width; int computer_height=Toolkit.getDefaultToolkit().getScreenSize().height; System.out.println("A largura da tela do computador:/n"+computer_width+"/ Altura da tela do computador:/n"+altura_do_computador); //Center this.setLocation((computer_width-510)/2, (computer_height-510)/2); //Instanciar a cortina op=new OperatorPane(); Adicionar Mouse ouvindo this.addMouseListener(op); //Definir a exibição da janela this.setVisible(true); //Definir o fechamento normal da janela this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE } //Executar o teste public static void main(String[] args) { new GomokuFrame() } };
pacote Gomoku; importar java.awt.Color;importar java.awt.Font;importar java.awt.Graphics;importar java.awt.Image;importar java.awt.event.MouseEvent;importar java.awt.event.MouseListener; java.awt.image.BufferedImage;importar java.awt.image.BufferedImageFilter; javax.swing.ImageIcon;import javax.swing.JOptionPane;import javax.swing.JPanel; public class OperatorPane estende JPanel implements MouseListener,Runnable{ //Define o objeto de imagem de fundo Image imageBackground = null; a grade do tabuleiro de xadrez int boardrows=18; //define o número de colunas da grade do tabuleiro de xadrez int boardcols=18; boardsize=20; //Salva as coordenadas das peças de xadrez int x=0,y=0; //Salva as coordenadas de todas as peças de xadrez jogadas antes//O conteúdo dos dados 0: significa que não há nenhuma peça de xadrez neste momento ponto, 1: significa que este ponto é uma peça preta, 2: Indica que este ponto é uma peça branca int allchess[][]=new int [19][19] //Marca se o próximo passo é preto; ou branco boolean isBlack=true //Julga se o jogo pode continuar boolean canPlay=true ; //Salva as informações exibidas String message="Preto vai primeiro"; //Salva o tempo máximo (segundos) int maxTime = 0; //Classe de thread para contagem regressiva Thread t = new Thread(this); com White int blackTime = 0; int whiteTime = 0; // Salva as informações de exibição do tempo restante de ambas as partes String blackMessage = "Unlimited" String whiteMessage = "Unlimited"; @SuppressWarnings("depreciação") public OperatorPane() { t.start(); t.suspend(); imageBackground=new ImageIcon("image/background.jpg").getImage(); { //Tecnologia de buffer duplo BufferedImage b1=new BufferedImage(495,475,BufferedImage.TYPE_INT_ARGB); Graphics g2=b1.createGraphics(); //Desenha a imagem de fundo g2.drawImage(imageBackground, 0, 0,495,475,null); ); g2.setColor(Color.BLACK); i=0;i<=boardrows;i++) { g2.drawLine(10,50+boardsize*i,10+boardsize*boardrows,50+boardsize*i } for(int i=0;i<=boardcols; i++) { g2.drawLine(10+boardsize*i,50,10+boardsize*i,50+boardsize*boardcols }); //Desenhe a posição três-três g2.fillOval(67, 107, 6, 6); g2.fillOval(67, 347, 6, 6); ( 307, 347, 6, 6); //Desenha pontos adicionais g2.fillOval(67, 227, 6, 6); g2.fillOval(307, 227, 6, 6); g2.fillOval(187, 107, 6, 6); fillOval(187, 227, 6, 6); //Desenhar prompt de texto/*Fonte f=new Font("黑体", Font.BOLD, 24); g.setFont(f);*/ g2.setFont(new Font("黑体", Font.BOLD, 20)); g2.drawString("Informações do jogo:"+mensagem, 130, 40); g2.setFont(new Font("宋体", Font.ITALIC, 15)); g2.drawString("Tempo preto:"+blackMessage,25, 445); g2.drawString("Tempo branco:"+whiteMessage,245, 445); ;i<=boardrows;i++) { for(int j=0;j<=boardcols;j++) { //Armazenamento de xadrez preto if(allchess[i][j]==1) { int tempX=i*20-10; int tempY=j*20+30; //Desenhar preto g2.setColor(Color.BLACK); //Armazenamento de xadrez branco if(allchess[i][j]==2) { int tempX=i*20-10; tempY=j*20+30; //Desenhe a peça branca g2.setColor(Color.BLACK); g2.drawOval(tempX+12, tempY+13, 15, 15); .fillOval(tempX+12, tempY+13, 15, 15); g2.setColor(c); g.drawImage(b1,0,0,this } private boolean checkWin() { boolean flag=false; int color = allchess[x][y]; mesmo Quantas peças de xadrez da cor estão conectadas int count1=1; int count3=1; int count4=1; // Determina se há 5 peças de xadrez conectadas na direção horizontal. características são as mesmas. Ou seja, os valores de y em allChess[x][y] são iguais // Use um loop para determinar se as peças de xadrez estão conectadas int i = 1 while (color == allchess[x+i][y; ]) { contagem1++; i++ } / /Redefinir valor i = 1; while (cor == allchess[xi][y]) { contagem1++ } if(count1 >= 5) { flag = true } //Julgue a direção vertical, ou seja, os valores de x em allChess[x][y] são iguais int j = 1 while (color == allchess[x][y+j]) { count2++; ; } //Redefinir o valor de j j = 1; while (color == allchess[x][yj]) { count2++ } if(count2>= 5) { flag = true; "/" interno m1=1; int n1=1 enquanto (cor == todo xadrez[x+m1][y+n1]) { contagem3++; -m1][y-n1]) { count3++; m1++; n1++; } if(count3>= 5) { flag = true } //Julgar a direção oblíqua "/" int m2=1; int n2=1; enquanto (cor == todo xadrez[x+m2][y-n2]) { contagem4++; x-m2][y+n2]) { contagem4++; m2++; //Julgamento horizontal count=this.checkCount(1, 0, color); if(count>=5) { flag = true } else { //Julgamento vertical count=this.checkCount(0, 1, color); (contagem>=5) { flag = true } else { //Inclinação "/" contagem=this.checkCount(1, 1, color); inclinação "/" contagem=this.checkCount(1, -1, color); if(count>=5) { flag = true; } } } } return flag; =1; int tempX=xAlterar; int tempY=yAlterar; while (cor==todoxadrez[x+xAlterar][y+yAlterar]) { contagem++; if(xChange!=0) { xChange++ } if(yChange!=0) { if(yChange<0) { yChange-- } else { yChange++; (color==allchess[x-xChange][y-yChange]) { contagem++; } if(yChange!=0) { if(yChange<0) { yChange-- } else { yChange++; } return count; +e.getX()+"y:"+e.getY()); if(x>=10&&x<=(10+boardsize*boardrows+20)&&y>=50&&y<=(50+boardsize*boardcols+40)) { //System.out.println("O ponto está no quadro. "); ==0) { if(isBlack==true) { allchess[x][y]=1; isBlack=false; message="Vez das brancas"; } else { allchess[x][y]=2; éPreto =verdadeiro; message="Vez das Pretas"; // Determine se esta peça de xadrez está conectada com outras peças de xadrez em uma conexão 5, ou seja, se o jogo acabou. verdadeiro) { JOptionPane.showMessageDialog (this,"Fim de jogo!"+ (allchess[x][y]==1?"Preto":"Branco")+"Vencer."); JOptionPane.showMessageDialog(this, "Já existe uma peça de xadrez na posição atual, coloque-a novamente!"); e.getX() >=400&&e.getX()<=470&&e.getY()>=80&&e.getY()<=110) { int result=JOptionPane.showConfirmDialog(this, "Configurações concluídas, deseja reiniciar o jogo?"); if(result==0) { //Reinicia a operação, todas as informações no array allchess[][] são 0 // Limpe o tabuleiro de xadrez for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; //Outra maneira allChess = new int[19][19]; blackTime = maxTime = maxTime; { blackMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); whiteMessage = maxTime / 3600 + ":" + (maxTime / 60 - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); t.resume() } else { blackMessage = "whiteMessage = "Ilimitado" } mensagem =; "Preto vai primeiro"; isBlack = true; this.canPlay = true; //Clique no botão de configurações do jogo if(e.getX()>=400&&e.getX()<=470&&e.getY()>=130&&e.getY()<=160) { String input = JOptionPane .showInputDialog("Por favor, insira o tempo máximo do jogo (unidade: minutos), se você inserir 0, significa que não há limite de tempo: "); try { maxTime = Integer.parseInt(input) * 60; if (maxTime < 0) { JOptionPane.showMessageDialog(this, "Por favor, insira as informações corretas, números negativos não são permitidos!"); concluído, reinicie o jogo?"); if (resultado == 0) { for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0; } } // Outra maneira allChess = new int[19][19]; blackTime = maxTime; whiteTime = blackMessage = "Sem limite" = "Sem limite"; 0) { int result = JOptionPane.showConfirmDialog(this, "Configurações concluídas, deseja reiniciar o jogo?"); { for (int i = 0; i < 19; i++) { for (int i = 0; i < 19; i++) { for (int j = 0; j < 19; j++) { allchess[i][j] = 0 } } // Outra forma allChess = new; int[19][19];mensagem = "Preto vai primeiro"; isBlack = true; maxTime = maxTime; ) + ":" + (maxTime - maxTime / 60 * 60); - maxTime / 3600 * 60) + ":" + (maxTime - maxTime / 60 * 60); this.canPlay = true; / TODO Bloco catch gerado automaticamente JOptionPane.showMessageDialog(this, "Por favor, insira as informações corretamente!"); //Clique no botão de descrição do jogo if(e.getX()>=400&&e.getX()<=470&&e.getY()>=180&&e.getY()<=210) { JOptionPane.showMessageDialog(this, "This is a Programa de jogo de gamão, os lados preto e branco se revezam para jogar xadrez. Quando um lado atinge cinco peças seguidas, o jogo termina. "); } //Clique no botão admitir derrota if(e.getX()>=400&&e.getX()<=470&&e.getY()>=280&&e.getY()<=310) { int result=JOptionPane.showConfirmDialog (this,"Tem certeza que deseja admitir a derrota?"); if (resultado == 0) { if (isBlack) { JOptionPane.showMessageDialog(this, "As pretas cederam, o jogo acabou!"); } else { JOptionPane.showMessageDialog(this, "As brancas cederam, o jogo acabou!"); //Clique no botão Sobre if(e.getX()>=400&&e.getX()<=470&&e.getY()>=330&&e.getY()<=360) { JOptionPane.showMessageDialog(this,"Este jogo é fornecido por Nanmu Produzido pelo estúdio, se você tiver dúvidas relacionadas, visite www.yiyiinformation.com"); } //Clique no botão de saída if(e.getX()>=400&&e.getX()<=470&&e.getY()>=380&&e.getY()<=410) { JOptionPane.showMessageDialog(this, "Game Over") ; System.exit(0); //************************// @Override public void mouseEntered(MouseEvent arg0) { // TODO stub de método gerado automaticamente } @Override public void mouseExited(MouseEvent arg0) { // TODO stub de método gerado automaticamente } @Override public void mousePressed(MouseEvent arg0) { // TODO stub de método gerado automaticamente } @Override public void mouseReleased (MouseEvent arg0) { // TODO stub do método gerado automaticamente } @Override public void run() { if (maxTime > 0) { while (true) { if (isBlack) { blackTime--; if (blackTime == 0) { JOptionPane.showMessageDialog(this, "Black expirou, o jogo acabou! "); } } else { whiteTime--; if (whiteTime == 0) { JOptionPane.showMessageDialog(this, "As brancas expiraram, o jogo acabou!"); } } blackMessage = blackTime / 3600 + ":" + (blackTime / 60 - blackTime / 3600 * 60) + ":" + (blackTime - blackTime / 60 * 60); / 3600 * 60) + ":" + (whiteTime - whiteTime / 60 * 60); this.repaint(); try { Thread.sleep(1000 } catch (InterruptedException e) { // TODO bloco de captura gerado automaticamente e.printStackTrace() } System.out.println(blackTime + " -- " + tempobranco); } } } }
Imagem de demonstração:
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para todos dominarem Java com proficiência.