Witam!
Javy uczę się od kilku dni, więc postanowiłem że napiszę sobie krótką grę, najpierw zacząłem od stworzenia konsoli za pomocą java swing, dodałem tam m.in menu, w którym jest opcja zapisu i odczytu stanu gry.
Sam kod zapisu i odczytu wygląda tak:
import java.awt.Color;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Postać implements Serializable {
private static final long serialVersionUID = 1L;
String imię;
int Życie;
int Exp;
public void _saveGame(){
Postać saveMe = new Postać();
try {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d://saveGame.dat"));
oos.writeObject(saveMe);
oos.flush();
oos.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public void _loadGame(){
Panel_Okien okno = new Panel_Okien();
Postać loadMe;
try
{
FileInputStream fileIn = new FileInputStream("d://saveGame.dat");
ObjectInputStream in = new ObjectInputStream(fileIn);
loadMe = (Postać)in.readObject();
in.close();
}catch(IOException i)
{
i.printStackTrace();
return;
}catch(ClassNotFoundException c)
{
System.out.println("Nie odnaleziono klasy");
c.printStackTrace();
return;
}
System.out.print(loadMe.imię); // tutaj po wpisaniu w konsoli imienia "Łukasz", zapisania za pomocą _saveGame() oraz wczytania zwraca wartość null
}
}
Konsola jest prosta, kiedy stworzę do niej jakiś przykładowy kod, np. do wczytywania imienia, to będzie można je normalnie wyświetlić, ale kiedy próbuję je zapisać powyższym kodem, to zwraca wartość null.
public void WPROWADZENIE() {
okno.setTitle("Gra");
okno.setVisible(true);
okno.println("Twoje imię to: "+imię, false,Color.GRAY);
okno.println("Coś tam", false, Color.GREEN);
boolean prawda = true;
while(prawda){
String text = okno.WCZYTAJ_KOMENDE(true);
if(text.equals("dalej")){
prawda = false;
}
}
dalej();
}
public void dalej(){
okno.println("Podaj swoje imię: ", false);
imię = okno.WCZYTAJ_KOMENDE(true);
okno.print("Twoje imię to: ", false);
okno.println(imię, false,Color.RED);
WPROWADZENIE();
}
Próbuję to zrobić od wczoraj, ale dalej nie chce mi odczytać..
Jako że się uczę i pierwszy raz napotkałem problem, to wszelkie zwracanie uwagi na błędy będzie mile widziane.