J'ai une question concernant comment sauvegarder et charger le jeu automatiquement. Dans cet exemple, comme Temple Run, il sauvegardait automatiquement le jeu sur tout (les records, l'argent gagné, et les goodies débloqués) aussi simple que cela puisse paraître. Par exemple, comparé au jeu PlayStation 1, disons Abe's Exodus par exemple, il n'a pas de fonction de sauvegarde/chargement automatique, mais il peut sauvegarder le jeu sur l'emplacement exact de la zone dans le niveau du jeu où Abe est parti et Lorsque vous chargez le jeu, il démarre automatiquement le jeu sur le dernier emplacement restant dans ce niveau.Auto Save et Auto Load Game Concept sur les jeux Android et l'économie sur le Vs interne. Externe (carte SD A.K.A.)
Maintenant, je suis en train de tester cette fonction de la charge automatique et enregistrer jeu par cette simple application que je l'ai fait, voici la séquence que j'ai attendre pour réussir ce qui suit:
- Ouvrez l'application pour la première fois et si cette application est nouvelle, le sprite mobile commencera au centre par défaut.
- Ensuite, j'ai essayé de déplacer le sprite en inclinant l'appareil et je ne l'ai pas placé en haut.
- Puis, quand je ferme l'application en utilisant le RETOUR clé et non la HOME touche pour fermer l'application par élimination.
- Enfin, lorsque je rouvre l'application, chaque fois que cette coordonnée je l'ai placée sur l'image-objet sera le nouveau point de départ.
Mon programme contient des bogues. Au lieu de l'image-objet en haut et cet emplacement est censé sauver cette coordonnée, l'image-objet retourne au centre une fois que j'ai rouvert! J'ai essayé le mot-clé Préférences dans la méthode render() sur l'espace de travail de code directement pour tester la capacité du jeu de sauvegarde mais confus car il semble qu'il ne lit que la valeur.
Voici mes quelques questions sur ce sujet ci-dessus:
- Est-ce une bonne idée d'utiliser le SQL Lite pour Java dans LibGDX pour sauver le jeu?
- smartphones Android comme le Samsung Galaxy la SIII a la fente pour carte SD, mais pas dans le Google Nexus Tablet et la question principale est: est-il vraiment un lecteur externe dans les tablettes Android? Puis-je sauvegarder le jeu sur interne au lieu de le coder?
- L'utilisation des préférences est la seule façon de sauvegarder automatiquement tout (caractères, enregistrements, éléments, paramètres, niveaux, etc.) et de charger automatiquement tout uniquement après avoir fermé l'application et l'avoir rouvert?
J'espère que vous pouvez m'aider.
Voici mon code:
Save_Load_Test.java
package com.test.save_and_load_test;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.Texture.TextureFilter;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Rectangle;
import com.badlogic.gdx.utils.GdxRuntimeException;
public class Save_and_Load_Test implements Screen
{
private OrthographicCamera camera;
private Texture texture;
private Texture background;
private SpriteBatch batch;
private Rectangle pos;
private Rectangle BG_pos;
private float w = 720;
private float h = 1280;
Start game;
public Save_and_Load_Test(Start game)
{
this.game = game;
}
@Override
public void render(float delta)
{
// TODO render()
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
batch.setProjectionMatrix(camera.combined);
batch.begin();
batch.draw(background, BG_pos.x, BG_pos.y);
batch.draw(texture, pos.x, pos.y);
batch.end();
if(Gdx.input.getAccelerometerX() >= 1 && pos.x >= 0)
{
pos.x -= 20;
}
if(Gdx.input.getAccelerometerX() <= -1 && pos.x <= (720 - pos.width))
{
pos.x += 20;
}
if(Gdx.input.getAccelerometerY() >= 1 && pos.y >=0)
{
pos.y -= 20;
}
if(Gdx.input.getAccelerometerY() <= -1 && pos.y <= (1280 - pos.height))
{
pos.y += 20;
}
if(Gdx.input.isKeyPressed(Keys.RIGHT) && pos.x <= (720 - pos.width - 35))
{
pos.x += 20;
}
if(Gdx.input.isKeyPressed(Keys.LEFT) && pos.x >=0)
{
pos.x -= 20;
}
if(Gdx.input.isKeyPressed(Keys.UP) && pos.y <= (1280 - pos.height - 35))
{
pos.y += 20;
}
if(Gdx.input.isKeyPressed(Keys.DOWN) && pos.y >= 0)
{
pos.y -= 20;
}
Preferences prefs = Gdx.app.getPreferences("my-preferences");
prefs.putFloat("X", pos.x);
prefs.putFloat("Y", pos.y);
prefs.flush();
}
@Override
public void resize(int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void show()
{
// TODO show()
camera = new OrthographicCamera();
camera.setToOrtho(false, w, h);
texture = new Texture(Gdx.files.internal("Jeff_the_Happy_Clown.png"));
background = new Texture(Gdx.files.internal("babe_BG.png"));
texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
background.setFilter(TextureFilter.Linear, TextureFilter.Linear);
batch = new SpriteBatch();
pos = new Rectangle();
pos.width = 100;
pos.height = 100;
pos.x = (w/2) - (pos.width/2);
pos.y = (h/2) - (pos.height/2);
BG_pos = new Rectangle();
BG_pos.width = background.getWidth();
BG_pos.height = background.getHeight();
BG_pos.x = (w/2) - (BG_pos.width/2);
BG_pos.y = (h/2) - (BG_pos.height/2);
}
@Override
public void hide() {
// TODO Auto-generated method stub
}
@Override
public void pause() {
// TODO Auto-generated method stub
}
@Override
public void resume() {
// TODO Auto-generated method stub
}
@Override
public void dispose()
{
// TODO dispose
batch.dispose();
texture.dispose();
}
}
Démarrer.java
package com.test.save_and_load_test;
import com.badlogic.gdx.Game;
public class Start extends Game
{
@Override
public void create()
{
setScreen(new Save_and_Load_Test(this));
}
@Override
public void resume()
{
// Is this method involved for loading the last file game saved?
}
}
Si ces deux classes java sont longues à analyser, je suggère de regarder la méthode render(), j'ai mis le code de préférence à la dernière ligne; et, vérifiez le "Start.java" parce que j'utilise le remplacement du resume(). Cela chargera automatiquement le dernier fichier enregistré. –
S'il vous plaît, aidez-moi! (T_T) –