Build-Your-Own-World / byow / Core / Game.java
Game.java
Raw
package byow.Core;

import edu.princeton.cs.introcs.StdDraw;

import java.awt.*;
import java.io.File;
import java.io.IOException;

public class Game {
    public static final File CWD = new File(System.getProperty("user.dir"));

    public static final File SAVEFILE_DIR = Utils.join(CWD, "saveFile.txt");
    public static final File SEED = Utils.join(SAVEFILE_DIR, "seed.txt");
    public static final File AVATAR_POSX = Utils.join(SAVEFILE_DIR, "avatarPositionX.txt");
    public static final File AVATAR_POSY = Utils.join(SAVEFILE_DIR, "avatarPositionY.txt");
    public static final File AVATAR_NAME = Utils.join(SAVEFILE_DIR, "avatarName.txt");
    public static final File REPLAY_MOVEMENTS = Utils.join(SAVEFILE_DIR, "replayMoves.txt");

    public static void setupPersistence() {
        if (!SAVEFILE_DIR.exists()) {
            SAVEFILE_DIR.mkdir();
            try {
                SEED.createNewFile();
                AVATAR_POSX.createNewFile();
                AVATAR_POSY.createNewFile();
                AVATAR_NAME.createNewFile();
                REPLAY_MOVEMENTS.createNewFile();
            } catch (IOException e) {
                return;
            }
        }
    }


    public static void mainMenu() {
        setupPersistence();
        StdDraw.setCanvasSize(50 * 16, 50 * 16);
        Font font = new Font("Monaco", Font.BOLD, 30);
        StdDraw.setFont(font);
        StdDraw.setXscale(0, 50);
        StdDraw.setYscale(0, 50);
        StdDraw.clear(Color.BLACK);
        StdDraw.enableDoubleBuffering();
        StdDraw.setPenColor(Color.WHITE);
        StdDraw.text(25, 35, "CS61B WORLD: DELUXE EDITION");
        StdDraw.text(25, 25, "NEW GAME (press N)");
        StdDraw.text(25, 23, "LOAD GAME (press L)");
        StdDraw.text(25, 21, "REPLAY GAME (press P)");
        StdDraw.text(25, 19, "RENAME AVATAR (press R)");
        StdDraw.text(25, 17, "QUIT (press Q)");
        StdDraw.show();
    }

    public static void seedMenu() {
        StdDraw.setCanvasSize(50 * 16, 50 * 16);
        Font font = new Font("Monaco", Font.BOLD, 30);
        StdDraw.setFont(font);
        StdDraw.setXscale(0, 50);
        StdDraw.setYscale(0, 50);
        StdDraw.clear(Color.BLACK);
        StdDraw.enableDoubleBuffering();
        StdDraw.setPenColor(Color.WHITE);
        StdDraw.text(25, 35, "ENTER SEED (press S when done)");
        StdDraw.show();
    }

}