\documentclass[12pt,a4paper]{article}

\usepackage[cm,empty]{fullpage}
\usepackage{parskip}
\usepackage{url}

\begin{document}

\emph{\LARGE Individuel aflevering - Opgave med JavaFX (uge 11)}
Rasmus Rosendahl-Kaa (S255955)

%Skriv et JavaFX-program \verb+RandomWalk+, der indeholder et vindue med en knap midtpå og en label i bunden, der viser et heltal initialiseret med 0. På knappen skal der enten stå "Up" eller "Down" -- der startes med en tilfældig mulighed (50\,\% sandsynlighed hver), og hver gang der trykkes på knappen, skal der eksekveres en optælling ($+1$) eller nedtælling ($-1$) på labelen afhængig af knappens tekst. Efter klikket skal knappens tekst igen ændres tilfældigt. Du skal bruge \verb+BorderPane+ til layoutet og lambda-udtryk til at håndtere museklik på knappen.

%Udover at aflevere en PDF-fil med JavaFX-programmet skal du lave en videooptagelse, der viser, hvordan du kompilerer og starter programmet fra kommandolinjen og hvordan labelen ændrer sig, mens du klikker mindst 10 gange på knappen. Videoen må maks.\ vare 30 sekunder og skal lægges op i \verb+.mp4+-format.

%\emph{Hint:} Man kan bruge det indbyggede \emph{Snipping Tool} i Windows (Windows+Shift+R) eller \emph{Screen Recording Tool} på Mac (Shift+Command+5) til at lave videoen.


% INDSÆT KILDEKODEN AF DIT JAVA-PROGRAM HERUNDER MELLEM \begin{verbatim} og \end{verbatim}

% Slet den givne opgavetekst i dokumentet (altså alt bortset fra selve løsningen); LaTeX-præamblen og document-miljøet beholdes selvfølgelig.
% Der skal afleveres en PDF-fil genereret af LaTeX (benyt fx Overleaf) samt den ovennævnte videooptagelse
% LaTeX-filen skal ikke afleveres (men den bør dog gemmes)

\begin{verbatim}
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
import java.util.Random;

public class RandomWalk extends Application {
    private Button button = new Button();
    private int counter = 0;
    private Label label = new Label("" + this.counter);
    private final Random random = new Random();
    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle("Random Walk");
        this.button.setText((random.nextBoolean() ? "Up" : "Down"));
        BorderPane borderPane = new BorderPane();
        borderPane.setPadding(new Insets(20, 20,20,20));
        borderPane.setCenter(this.button);
        BorderPane.setAlignment(this.button, Pos.CENTER);
        borderPane.setBottom(label);
        BorderPane.setAlignment(label, Pos.BOTTOM_CENTER);
        Scene scene = new Scene(borderPane, 300, 250);
        primaryStage.setScene(scene);
        this.button.setOnAction(e -> {
                counter += (button.getText().equals("Up") ? 1 : -1);
                button.setText((random.nextBoolean() ? "Up" : "Down"));
                label.setText("" + counter);
            });
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

\end{verbatim}

\end{document}
