necesito ayuda ....
Si alguien me ayudara en un juego de damas con las opciones de guardar una partida a medias y abrir una partida comenzada que haya sido guardada, se lo agradeceria.
Por favor si pueden me responden por aqui mismo.
Por favor si pueden me responden por aqui mismo.
Debes usar serializacion es mucho mas facil abrir y guardar un objeto que un conjunto de atributos:
Aqui tienes un ejemplo:
import java.io.Serializable;
//AlumnoSerializacion es el objeto a ser serializado
public class AlumnoSerializacion implements Serializable
{
String nombre,direccion;
int codigoSIS,telefono;
public void AlumnoSerializacion()
{
nombre="";
direccion="";
codigoSIS=-1;
telefono=-1;
}
public void establecerDatos(String nom,String dir,int cod,int tel)
{
nombre=nom;
direccion=dir;
codigoSIS=cod;
telefono=tel;
}
}
----------------------------------------------------------------------
import java.io.*;
//CLASE QUE ABRE Y GUARDA UN OBJETO
public class RegistroSerializacion
{
ObjectInputStream abrir;
ObjectOutputStream guardar;
public void RegistroSerializacion()
{
abrir=null;
guardar=null;
}
//metodos para inicializar los objetos
public void crearFlujoLectura(String nombre)
{
//cuando trabajamos con archivos puede haber errores
try
{
abrir=new ObjectInputStream(new FileInputStream(nombre));
}
catch(Exception e){}
}
public void cerrarFlujoLectura()
{
try
{
abrir.close();
}
catch(Exception e){}
}
//el objeto abrir solo es un camino
//metodos para inicializar el objeto abrir
public void crearFlujoEscritura(String nombre)
{
//cuando trabajamos con archivos puede haber errores
try
{
guardar=new ObjectOutputStream(new FileOutputStream(nombre));
}
catch(Exception e){}
}
public void cerrarFlujoEscritura()
{
try
{
guardar.flush();//vacia el contenido del archivo
guardar.close();
}
catch(Exception e){}
}
//el objeto guardar solo es un camino
//metodos de abrir y guardar el objeto
public Object abrirObjeto(String nombre)//enviar el nombre del archivo que quiero abrir
{
Object objeto=null;
crearFlujoLectura(nombre);
//instruccion para abrir el objeto
try
{
objeto=abrir.readObject();
}
catch(Exception e){}
cerrarFlujoLectura();
return objeto;
}
public void guardarObjeto(Object objeto,String nombre)
{
crearFlujoEscritura(nombre);
try
{
guardar.writeObject(objeto);
}
catch(Exception e){}
cerrarFlujoEscritura();
}
}
-----------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class VentanaSerializacion extends JFrame implements ActionListener
{
JLabel rotuloNombre,rotuloDireccion,rotuloCodigo,rotuloTelefono;
JTextField cajaNombre,cajaDireccion,cajaCodigo,cajaTelefono;
JButton botonAbrir,botonGuardar;
RegistroSerializacion registro;
public VentanaSerializacion()
{
resize(300,200);
Container contenedor=getContentPane();
contenedor.setLayout(new GridLayout(5,2));
rotuloNombre=new JLabel("NOMBRE");
rotuloDireccion=new JLabel("DIRECCION");
rotuloCodigo=new JLabel("CODIGO SIS");
rotuloTelefono=new JLabel("TELEFONO");
cajaNombre=new JTextField();
cajaDireccion=new JTextField();
cajaCodigo=new JTextField();
cajaTelefono=new JTextField();
contenedor.add(rotuloNombre);
contenedor.add(cajaNombre);
contenedor.add(rotuloDireccion);
contenedor.add(cajaDireccion);
contenedor.add(rotuloCodigo);
contenedor.add(cajaCodigo);
contenedor.add(rotuloTelefono);
contenedor.add(cajaTelefono);
botonAbrir=new JButton("ABRIR");
botonGuardar=new JButton("GUARDAR");
botonAbrir.addActionListener(this);
botonGuardar.addActionListener(this);
contenedor.add(botonAbrir);
contenedor.add(botonGuardar);
registro=new RegistroSerializacion();
setVisible(true);
}
public static void main(String arg[])
{
new VentanaSerializacion();
}
//metodo de la interface ActionListener
public void actionPerformed(ActionEvent e)
{
Object objeto=e.getSource();
if(objeto==botonAbrir)
abrir();
else
if(objeto==botonGuardar)
guardar();
}
//metodos abrir y guardar
public void abrir()
{
AlumnoSerializacion persona;
//no puedo igualar objeto con persona hay que hacer un casting
persona=(AlumnoSerializacion)(registro.abrirObjeto("archivo1"));
if(persona!=null)
{
cajaNombre.setText(persona.nombre);
cajaDireccion.setText(persona.direccion);
cajaCodigo.setText("" + persona.codigoSIS);
cajaTelefono.setText("" + persona.telefono);
}
}
public void guardar()
{
AlumnoSerializacion persona=new AlumnoSerializacion();
String nom,dir;
int cod,telf;
nom=cajaNombre.getText();
dir=cajaDireccion.getText();
cod=Integer.parseInt(cajaCodigo.getText());
telf=Integer.parseInt(cajaTelefono.getText());
persona.establecerDatos(nom,dir,cod,telf);
registro.guardarObjeto(persona,"archivo1");
}
}
Aqui tienes un ejemplo:
import java.io.Serializable;
//AlumnoSerializacion es el objeto a ser serializado
public class AlumnoSerializacion implements Serializable
{
String nombre,direccion;
int codigoSIS,telefono;
public void AlumnoSerializacion()
{
nombre="";
direccion="";
codigoSIS=-1;
telefono=-1;
}
public void establecerDatos(String nom,String dir,int cod,int tel)
{
nombre=nom;
direccion=dir;
codigoSIS=cod;
telefono=tel;
}
}
----------------------------------------------------------------------
import java.io.*;
//CLASE QUE ABRE Y GUARDA UN OBJETO
public class RegistroSerializacion
{
ObjectInputStream abrir;
ObjectOutputStream guardar;
public void RegistroSerializacion()
{
abrir=null;
guardar=null;
}
//metodos para inicializar los objetos
public void crearFlujoLectura(String nombre)
{
//cuando trabajamos con archivos puede haber errores
try
{
abrir=new ObjectInputStream(new FileInputStream(nombre));
}
catch(Exception e){}
}
public void cerrarFlujoLectura()
{
try
{
abrir.close();
}
catch(Exception e){}
}
//el objeto abrir solo es un camino
//metodos para inicializar el objeto abrir
public void crearFlujoEscritura(String nombre)
{
//cuando trabajamos con archivos puede haber errores
try
{
guardar=new ObjectOutputStream(new FileOutputStream(nombre));
}
catch(Exception e){}
}
public void cerrarFlujoEscritura()
{
try
{
guardar.flush();//vacia el contenido del archivo
guardar.close();
}
catch(Exception e){}
}
//el objeto guardar solo es un camino
//metodos de abrir y guardar el objeto
public Object abrirObjeto(String nombre)//enviar el nombre del archivo que quiero abrir
{
Object objeto=null;
crearFlujoLectura(nombre);
//instruccion para abrir el objeto
try
{
objeto=abrir.readObject();
}
catch(Exception e){}
cerrarFlujoLectura();
return objeto;
}
public void guardarObjeto(Object objeto,String nombre)
{
crearFlujoEscritura(nombre);
try
{
guardar.writeObject(objeto);
}
catch(Exception e){}
cerrarFlujoEscritura();
}
}
-----------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class VentanaSerializacion extends JFrame implements ActionListener
{
JLabel rotuloNombre,rotuloDireccion,rotuloCodigo,rotuloTelefono;
JTextField cajaNombre,cajaDireccion,cajaCodigo,cajaTelefono;
JButton botonAbrir,botonGuardar;
RegistroSerializacion registro;
public VentanaSerializacion()
{
resize(300,200);
Container contenedor=getContentPane();
contenedor.setLayout(new GridLayout(5,2));
rotuloNombre=new JLabel("NOMBRE");
rotuloDireccion=new JLabel("DIRECCION");
rotuloCodigo=new JLabel("CODIGO SIS");
rotuloTelefono=new JLabel("TELEFONO");
cajaNombre=new JTextField();
cajaDireccion=new JTextField();
cajaCodigo=new JTextField();
cajaTelefono=new JTextField();
contenedor.add(rotuloNombre);
contenedor.add(cajaNombre);
contenedor.add(rotuloDireccion);
contenedor.add(cajaDireccion);
contenedor.add(rotuloCodigo);
contenedor.add(cajaCodigo);
contenedor.add(rotuloTelefono);
contenedor.add(cajaTelefono);
botonAbrir=new JButton("ABRIR");
botonGuardar=new JButton("GUARDAR");
botonAbrir.addActionListener(this);
botonGuardar.addActionListener(this);
contenedor.add(botonAbrir);
contenedor.add(botonGuardar);
registro=new RegistroSerializacion();
setVisible(true);
}
public static void main(String arg[])
{
new VentanaSerializacion();
}
//metodo de la interface ActionListener
public void actionPerformed(ActionEvent e)
{
Object objeto=e.getSource();
if(objeto==botonAbrir)
abrir();
else
if(objeto==botonGuardar)
guardar();
}
//metodos abrir y guardar
public void abrir()
{
AlumnoSerializacion persona;
//no puedo igualar objeto con persona hay que hacer un casting
persona=(AlumnoSerializacion)(registro.abrirObjeto("archivo1"));
if(persona!=null)
{
cajaNombre.setText(persona.nombre);
cajaDireccion.setText(persona.direccion);
cajaCodigo.setText("" + persona.codigoSIS);
cajaTelefono.setText("" + persona.telefono);
}
}
public void guardar()
{
AlumnoSerializacion persona=new AlumnoSerializacion();
String nom,dir;
int cod,telf;
nom=cajaNombre.getText();
dir=cajaDireccion.getText();
cod=Integer.parseInt(cajaCodigo.getText());
telf=Integer.parseInt(cajaTelefono.getText());
persona.establecerDatos(nom,dir,cod,telf);
registro.guardarObjeto(persona,"archivo1");
}
}
Hola, no se' exactamente como estaras implementando el tablero. Yo hace unos anhos programe un juego de ajedrez en C (no entorno grafico) y lo que tenia era una tabla 8x8 de characteres que era donde iba almacenando las posiciones de las piezas, y demas. Por ejemplo blancas en mayusculas y negras en minusculas. En cada celda guardas la pieza tal cual, o ' ' si no hay pieza. Despues cuando quieras guardar partida, en un fichero de texto por ejemplo guardas esa tabla de caracteres poniendo un salto de linea al final de cada fila, y sustituyendo el caracter vacio por un numero por ejemplo, para no confundirlo con piezas o para evitar problemas a la hora de leer lineas del fichero de texto para cargar la partida. Ahora mismo no tengo aqui codigo, lo buscare e intentare enviartelo.