Bonjour à tous !
Avant de commencer, je tiens à vous remercier de votre lecture et de votre aide.
J'ai actuellement une carte de jeu vidéo qui s'organise avec trois classes des plus classiques :
- Une classe Case qui représente les cases d'un plateau de jeu :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import java.io.Serializable;
public class Case implements Serializable {
private static final long serialVersionUID = 1L;
private int x, y;
public Case (int x, int y) {
this.x = x;
this.y = y;
}
public int getX () {
return x;
}
public int getY () {
return y;
}
} |
- Une classe PlateauDeJeu où sont incorporées les cases précédentes :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import java.io.Serializable;
public class PlateauDeJeu implements Serializable {
private static final long serialVersionUID = 1L;
private Case [][] plateau;
public PlateauDeJeu () {
plateau = new Case [10][10];
for (int y = 0; y < plateau.length; y++) {
for (int x = 0; x < plateau[0].length; x++) {
plateau[y][x] = new Case (x, y);
}
}
}
public Case getCase (int x, int y) {
return plateau[y][x];
}
public Case [][] getPlateau () {
return plateau;
}
} |
- Et enfin une classe Carte qui contient des plateaux de jeu :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import java.io.Serializable;
public class Carte implements Serializable {
private static final long serialVersionUID = 1L;
private PlateauDeJeu [][] monde;
public Carte () {
monde = new PlateauDeJeu [100][100];
for (int y = 0; y < monde.length; y++) {
for (int x = 0; x < monde[0].length; x++) {
monde[y][x] = new PlateauDeJeu ();
}
}
}
public PlateauDeJeu getPlateauDeJeu (int x, int y) {
return monde[y][x];
}
} |
Je souhaiterais que le jeu se déroule ainsi :
Quand le personnage évolue sur la carte, le programme charge les zones de couleur jaune (représentant des plateaux de jeu)
de ma classe sérializée Carte ; les zones rouges représentent les plateaux de jeu dont je n'ai pas besoin à ce moment, tout ceci, afin de
rendre le chargement des zones de jeu plus légères pour mon PC plutôt que de charger en totalité la carte.
Je me permet juste de rappeler ici que je suis un programmeur débutant, donc il-y-a beaucoup de subtilités qui m'échappent bien
évidemment dans le comportement de mes objets et surtout dans les solutions potentielles que je ne verais pas : Aussi, pour résoudre mon problème,
j'étais partit sur l'idée de crée autant de fichiers PlateauDeJeu que nécessite ma Carte, pour allez les chercher selon les déplacements du personnage
pour le jeu, mais cela représente juste pour une Carte de 100 x 100 PlateauDeJeu un nombre de 10.000 fichiers de sauvegardes différents et je doute
très fortement que cette méthode soit la bonne.
Alors, je ne sais pas si il existe un moyen quand on a sauvegardé tout un monde de jeu, comme celui que je vous ai présenté, dans
un même fichier de sauvegarde, tout en conservant une rapidité de sauvegarde / chargement (donc un déroulement dynamique de cette phase) pour
permettre à un joueur d'y évoluer sans de temps de chargements trop lourds.
Et je me permet de vous soumettre mon problème, en espérant que vous saurez peut-être m'orienter vers une façon de faire qui m'aiderait
grandement, car là je vous avouerais que je ne vois pas du tout comment me dépétrer de cette situation.
Encore une fois, je vous remercie de votre lecture et de votre aide.
Edit :
Je vous prie de bien vouloir m'excuser pour cet ajout, mais c'était pour préciser une chose qui pourrait vous paraître étrange : C'est que
mes cases incorporont par la suite un identificateur pour y associer une image propre et ainsi construire un plateau de jeu plus esthétique que de simples
carrés noirs sur un fond blanc.
Voilà, c'était juste pour prévenir toute question, parfaitement justifiée par ailleurs, de pourquoi vouloir sauvegarder des cases qui en soit sont présentées
ici comme vides.
Merci.
Partager