Si necesitas ayuda, crea una aplicación de backgammon Java o de contabilidad para Android.

1. Tablero de backgammon

[java] ¿Ver impresión de copias normal?

Paquete cn.edu.ouc.fivechess;

Importar Java.awt.color;

Importar Java.awt.cursor;

Importar Java .awt .dimensión;

Importar Java .awt . ;

Importar Java . awt .pintura de gradiente radial;

Importar Java . p>Importar Java .evento .evento del mouse;

Importar evento Java . p>Importar Java.awt.geom.ellipse2d;

Importar javax.swing.*;

/**

*Tablero de ajedrez Gomoku

p>

*/

El tablero de ajedrez de clase pública extiende JPanel para implementar MouseListener {

Public static final int MARGIN = 30 //Margen

public static final int GRID_SPAN = 35; // Espaciado de la cuadrícula

Public static final int ROWS = 15; //Número de filas del tablero de ajedrez

Public static final int COLS = 15; //Número de filas del tablero de ajedrez columnas

Punto[]lista de ajedrez = nuevo punto[(ROWS+1)*(COLS+1)] //Inicialmente, cada elemento de la matriz está vacío.

boolean isBlack = true//El inicio predeterminado es negro.

Boolean gameOver = false//¿Se acabó el juego?

int chessCount//El número actual de tableros de ajedrez

int xIndex, yIndex//El índice de la pieza de ajedrez que acaba de colocar.

Imagen img

Sombra de imagen;

Color colortemp

Tablero de ajedrez público(){

//set background(color . blue); //Establece el color de fondo en naranja.

img=Toolkit.getDefaultToolkit(). getImage(" tablero . jpg ");

sombras = kit de herramientas .

getImage(" sombras . jpg ");

addmouse listener(this);

addMouseMotionListener(new MouseMotionListener(){

ratón vacío público arrastrado (evento del mouse) e){

}

ratón vacío público movido (evento del mouse e){

int x 1 =(e . getx()-MARGIN+GRID _ SPAN/2)/GRID _ SPAN;

//Convierte la posición de coordenadas del clic del mouse en un índice de cuadrícula

int y 1 =(e . gety()-MARGIN+. . GRID _ SPAN/2)/GRID _ SPAN;

//El juego ha terminado, no puedes salir del juego

//No puedes jugar si soltar el tablero

//Ya hay piezas de ajedrez en las posiciones X e Y y no se pueden eliminar

if(x 1 <0 | | 1> COLS | | juego terminado | encontrar ajedrez(x 1, y1))

setCursor(new cursor(cursor.DEFAULT_cursor));

//Establecer es el estado predeterminado

else setCursor(new cursor(cursor.hand_cursor));

}

});

}

//Dibujar

componente de pintura vacía pública(Gráficos g){

super .componente de pintura (g); //Dibuja un tablero de ajedrez

int img ancho = img. (this);

int img height = img . get height(this); //Obtiene el ancho y alto de la imagen.

int FWidth = getWidth();

int FH height = getHeight() //Obtiene el ancho y alto de la ventana.

int x =(FWidth-img ancho)/2;

int y =(FH alto-img alto)/2

g.drawImage( img,x,y,null);

for(int I = 0;i<=line;I++){//Dibuja una línea horizontal

g.drawLine(MARGIN, MARGIN +i*GRID_SPAN,MARGIN+COLS*GRID_SPAN,MARGIN+I *GRID_SPAN);

}

for(int I = 0;i<= COLSI++){ //Dibuja una vertical line

g.drawLine(MARGIN+i*GRID_SPAN, MARGIN, MARGIN+i*GRID_SPAN, MARGIN+ROWS * GRID _ SPAN

}

//Dibujar piezas de ajedrez

for(int I = 0; I & ltchessCounti++){

//Intersección de cuadrícula coordenadas x, y

int xPos=chessList [i]. getX()* GRID _ SPAN+MARGIN;

int yPos=chessList[i].

getY()* GRID _ SPAN+MARGIN;

g.setColor(chessList[i].getColor()); //Establecer color

// g.fillOval(xPos- Punto/2, yPos-Point.DIAMETER/2,

//Punto Diámetro, Punto Diámetro);

//g.drawImage(Sombra, xPos-Point. .DIAMETER/2, yPos-Point.DIAMETER/2, diámetro del punto, diámetro del punto, vacío

colortemp=chessList[i]. getColor();

if(colortemp==Color.black){

pintura de degradado radial pintura = nueva pintura de degradado radial (xPos-Point. Diámetro/2+25, yPos- Point.DIAMETER/2+10, 20, nuevo flotador[]{0f, 1f}

, nuevo color[]{color.white,color.black});

( (Gráficos2D) g). setPaint(pintura);

((Graphics2D) g). setRenderingHint(sugerencias de renderizado. KEY_Anti-aliasing, sugerencias de renderizado. VALUE_ANTIALIAS_ON);

((Graphics2D) g). setRenderingHint(sugerencias de renderizado. KEY _ ALPHA _ interpolación, sugerencias de renderizado. VALUE _ ALPHA _ interpolación _ default

}

else if(color temp = = color . white){

pintura de degradado radial = nueva pintura de degradado radial (xPos-Point. Diámetro/2+25, yPos-Point.DIAMETER/2+10, 70, nuevo flotador[]{0f, 1f}

, nuevo color[]{color.white,color.black});

((Graphics2D) g). setPaint(pintura);

((Graphics2D) g). setRenderingHint(sugerencias de renderizado. KEY_Anti-aliasing, sugerencias de renderizado. VALUE_ANTIALIAS_ON);

((Graphics2D) g). setRenderingHint(sugerencias de renderizado. KEY _ ALPHA _ interpolación, sugerencias de renderizado. VALUE _ ALPHA _ interpolación _ default

}

Ellipse2D e = new Ellipse2D). Float(xPos-Point.DIAMETER/2, yPos-Point.DIAMETER/2, 34, 35);

((Graphics2D) g). Fill(e);

//El cuadro rectangular rojo que marca la última pieza de ajedrez.

If(i==chessCount-1){//Si es la última pieza de ajedrez,

g set color(color . red). > g.drawRect(xPos-Point.

Diámetro/2, yPos-Point.DIAMETER/2,

34, 35);

}

}

}

mouse vacío público presionado (evento del mouse e){// Se llama cuando se presiona el mouse sobre el componente.

//El juego ha terminado y ya no se puede descargar.

if(gameOver) devuelve;

String colorName=isBlack? "Ajedrez negro": "Ajedrez blanco";

//Convierte la posición de las coordenadas del clic del mouse en un índice de cuadrícula.

xIndex =(e . getx()-MARGIN+GRID _ SPAN/2)/GRID _ SPAN

yIndex =(e . gety()-MARGIN+GRID _ SPAN; /2)/GRID _ SPAN;

//No puedes jugar si dejas caer el tablero de ajedrez.

if(xIndex & lt; 0 | | xIndex & gtnúmero de filas | | yIndex & lt0 | Si una pieza ya existe en las posiciones X e Y, no se puede eliminar.

if(findChess(xIndex, yIndex)) regresa;

//Procesamiento que se puede completar en curso

Punto ch = nuevo punto (xIndex, yIndex) , isBlack? Color.black: color.white);

lista de ajedrez[ches count++]= ch

repintar();

//Si ganas, se te avisará y no podrás seguir jugando al ajedrez.

if(isWin()){

String msg=String.format("¡Felicitaciones, %s ganó!", nombre del color);

joptionpane . showmessagedialog(this, msg);

gameOver = true

}

isBlack=! isBlack

}

//Anular el método mouseListener

se hace clic con el mouse en vacío público (evento del mouse e){

//Se llama cuando se hace clic con el botón del mouse en el componente.

}

public void mouse enter(mouse event e){

//Se llama cuando el mouse ingresa al componente.

}

public void mouse salió (evento del mouse e){

//Se llama cuando el mouse sale del componente.

}

mouse public void liberado (evento del mouse e){

//Se llama cuando se suelta el botón del mouse en el componente.

}

// Descubra si hay una pieza de ajedrez con índice x, y en la matriz de piezas de ajedrez.

buscar ajedrez booleano privado(int x, int y){

for(c punto:lista de ajedrez){

if (c!= null & amp& ampgetx( )= = x & & ampc.getY()==y)

Devuelve verdadero

}

Devuelve falso

}

Booleano privado isWin(){

int continue count = 1; //El número de segmentos consecutivos

//Mirando hacia el oeste horizontalmente

for(int x = xIndex-1; x & gt=0;x - ){

Color c=esNegro? Color.Negro:Color.Blanco;

if(getChess(x,yIndex,c)!=null){

continuar contando++;

}else

Descanso;

}

//Mira hacia el este horizontalmente

for(int x = xIndex+1; x & lt= COLSx++ ) {

Color c=esNegro? Color.Negro:Color.Blanco;

if(getChess(x,yIndex,c)!=null){

continuar contando++;

}else

Romper;

}

if(continuar contando & gt;=5){

devuelve verdadero

} De lo contrario

continuar contando = 1;

//Continuar otra búsqueda vertical.

//Buscar hacia arriba

for(int y = yIndex-1; y & gt=0;y - ){

Color c=isBlack? Color.Negro:Color.Blanco;

if(getChess(xIndex, y, c)!=null){

continuar contando++;

}else

Descanso;

}

//Mira verticalmente hacia abajo

for(int y = yIndex+1; y & lt=line ; y++){

Color c=esNegro? Color.Black:Color.White;

if(getChess(xIndex, y, c)!=null)

continuar contando++;

Otros

Romper;

}

if(continuar contando & gt;=5)

Devuelve verdadero

Otro p>

continuar conteo = 1;

//Continuar la búsqueda en otro caso: diagonal.

//Buscar noreste

for(int x=xIndex+1, y = yIndex-1; y & gt= 0 & amp& ampx & lt= COLSx++, y - ){

¿Color c=esNegro? Color.Negro:Color.Blanco;

if(getChess(x, y, c)!=null){

continuar contando++;

}

else break

}

//Buscar suroeste

for(int x=xIndex-1, y = yIndex+1; x & gt= 0 &&y<=line;x-,y++){

Color c=esNegro? Color.Negro:Color.Blanco;

if(getChess(x, y, c)!=null){

continuar contando++;

}

de lo contrario romper

}

si(continuar contando & gt;=5)

devolver verdadero

de lo contrario continuar count = 1;

//Continuar buscando en otro caso: diagonal.

//Buscar noroeste

for(int x=xIndex-1, y = yIndex-1; x & gt= 0 & amp& ampy & gt=0; x -, y - ){

Color c=esNegro? Color.Negro: Color.Blanco;

if(getChess(x, y, c)!=null)

continuar contando++;

si no, romper p>

}

//Encuentra la dirección sureste

for(int x=xIndex+1, y = yIndex+1; x & lt= COLS & amp& ampy & lt =row;x++,y++){

Color c=isBlack? Color.Negro: Color.Blanco;

if(getChess(x, y, c)!=null)

continuar contando++;

si no, romper p>

}

if(continuar contando & gt;=5)

Devuelve verdadero

De lo contrario continuar contando = 1;

Devuelve falso

}

Punto privado getChess(int xIndex, int yIndex, Color color){

for(point p:chessList){

if (p!= null & amp& ampp . getx()= xIndex & & ampp.getY()==yIndex

& amp& ampp.getColor()==color)

Devolver p;

}

Devolver nulo

}

reiniciar juego vacío público(){

//Borrar piezas de ajedrez

for(int I = 0;i<chess list . length;i++){

lista de ajedrez[I]= null;

p>

}

//Restaurar valores de variables relacionadas con el juego

isBlack = true

gameOver = false//¿Se acabó el juego?

ches count = 0; //Número actual de tableros de ajedrez

repaint();

}

//Arrepentimiento del ajedrez

p>

Public void goback(){

if(chessCount==0)

Regresar;

lista de ajedrez[ cuenta de ajedrez-1]= null;

cuenta de ajedrez-;

if (cuenta de ajedrez & gt; 0){

xIndex = lista de ajedrez[cuenta de ajedrez -1]. getX();

yIndex = lista de ajedrez[cuenta de ajedrez-1]. getY();

}

isBlack=! isBlack

repaint();

}

//Dimensión rectangular

Dimensión pública getPreferredSize(){

Devolver nuevas dimensiones (MARGIN*2+GRID_SPAN*COLS, MARGIN*2

+GRID_SPAN*ROWS);

}

}