LibGDX – Liczenie punktów i naprawa gita
W tym odcinku napisaliśmy liczenie punktów w grze i popsuliśmy branch w gicie… 😉 przy okazji pokazałem jak to później naprawić.
Kod źródłowy odcinka: https://github.com/JavaDevMatt/tutorialclicker/tree/tut5
Klasa TutorialClickerGame
package pl.javadevmatt.tutorialclicker; import pl.javadevmatt.tutorialclicker.screens.SplashScreen; import com.badlogic.gdx.Game; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; public class TutorialClickerGame extends Game { public final static String GAME_PREFS = "pl.javadevmatt.preclicker.prefs"; public final static String GAME_SCORE = "pl.javadevmatt.preclicker.prefs.score"; public final static String GAME_NAME = "Tutorial Clicker"; public final static int WIDTH = 480; public final static int HEIGHT = 700; private boolean paused; private Preferences prefs; private int points; @Override public void create () { init(); this.setScreen(new SplashScreen(this)); } private void init() { prefs = Gdx.app.getPreferences(GAME_PREFS); loadScore(); } private void loadScore() { points = prefs.getInteger(GAME_SCORE); } public void addPoint(){ points++; updateSavedScoreInPrefs(); } public void resetGameScore() { points = 0; updateSavedScoreInPrefs(); } private void updateSavedScoreInPrefs() { prefs.putInteger(GAME_SCORE, points); prefs.flush(); } /** * --------------------- * getters and setters * */ public boolean isPaused() { return paused; } public void setPaused(boolean paused) { this.paused = paused; } public int getPoints() { return points; } }
Klasa GameplayScreen
package pl.javadevmatt.tutorialclicker.screens; import pl.javadevmatt.tutorialclicker.TutorialClickerGame; import pl.javadevmatt.tutorialclicker.entities.Player; import com.badlogic.gdx.graphics.g2d.BitmapFont; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.Button; import com.badlogic.gdx.scenes.scene2d.ui.Button.ButtonStyle; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; public class GameplayScreen extends AbstractScreen{ private Player player; private Button playerButton, resetScoreButton; private Label scoreLabel; public GameplayScreen(TutorialClickerGame game) { super(game); } @Override protected void init() { initPlayer(); initPlayerButton(); initResetScoreButton(); initScoreLabel(); } private void initResetScoreButton() { resetScoreButton = new Button(new ButtonStyle()); resetScoreButton.setWidth(100); resetScoreButton.setHeight(100); resetScoreButton.setX(330); resetScoreButton.setY(560); resetScoreButton.setDebug(true); stage.addActor(resetScoreButton); resetScoreButton.addListener(new ClickListener(){ @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { game.resetGameScore(); return super.touchDown(event, x, y, pointer, button); } }); } private void initScoreLabel() { LabelStyle labelStyle = new LabelStyle(); labelStyle.font = new BitmapFont(); scoreLabel = new Label("", labelStyle); scoreLabel.setX(20); scoreLabel.setY(650); stage.addActor(scoreLabel); } private void initPlayerButton() { playerButton = new Button(new ButtonStyle()); playerButton.setWidth(460); playerButton.setHeight(360); playerButton.setX(10); playerButton.setY(170); playerButton.setDebug(true); stage.addActor(playerButton); playerButton.addListener(new ClickListener(){ @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { player.reactOnClick(); game.addPoint(); return super.touchDown(event, x, y, pointer, button); } }); } private void initPlayer() { player = new Player(); stage.addActor(player); } @Override public void render(float delta) { super.render(delta); update(); spriteBatch.begin(); stage.draw(); spriteBatch.end(); } private void update() { scoreLabel.setText("Score: " + game.getPoints()); stage.act(); } }