necesito ayuda ....

aruizz
25 de Junio del 2006
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.

erick_java
25 de Junio del 2006
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");
}

}



derneume
25 de Junio del 2006
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.