Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Før du går i gang med denne delen kan det være lurt å ta en titt på wikisiden for Lesing fra og skriving til fil.

 

JavaFX-apper for spillene

Som for første trinn av spillene, som det er lenket til over, så har vi laget JavaFX-apper for spillene. I tillegg til grafisk visning av rutenettet, er det nå støtte for å

  • lese inn spill-tilstand fra fil, nettadresse (URL) eller fra innholdet i et tekstfelt
  • lagring av spill-tilstand til fil, eller i tekstfelt (mest for debugging)
  • angre (undo) og gjenta (redo)
Image Added

Eksempel på JavaFX-app (Sokoban).

Øverst kan en velge en fil eller skrive inn en nettadresse som en laster spill-tilstanden fra.

På høyre side kan en skrive inn spill-tilstanden i et tekstfelt, evt. lime inn noen en har klippet ut fra en annen applikasjon og starte spillet med denne tilstanden. En kan også kopiere spill-tilstanden som er i spill inn i tekstfeltet (mest for debugging) og evt. kopiere den over i en annen applikasjon.

Til venstre er det knapper for angring (undo) og gjenta siste angrede handling (redo).

For at din spill-implementasjon skal kunne kobles til vår JavaFX-app, så må spillklassen din implementere et tilhørende grensesnitt. Dette er en utvidet (og kanskje modifisert) utgave av grensesnittet fra trinn 1, ved at de utvider/bygger på to grensesnitt:

  • IPersistable (lagrebar) har metoder for lesing/skriving av tilstand fra/til hhv. InputStream og OutputStream. Metodene brukes av appen til lesing fra fil, nettadresse og tekstfelt og skriving til fil og tekstfelt.
  • IUndoable (angrebar) har metoder for angring (spole et hakk tilbake) og gjentaking av siste angrede handling (spole et hakk frem). Metodene er knyttet til tilsvarende knapper.

Spillklassen din må altså implementere både de spill-spesifikk metodene og de to metode-parene fra IPersistable og IUndoable.

For hvert spill har vi laget en "nedlastningspakke" som gjør det lett å importere de nødvendige filene med Digital Compendium-tillegget. Disse finner du under, én for hver app.

Code Block
titleSokoban-pakke
emfs
/games/ #java #package $repo="@github.com:hallvard/javafx/games/src/games/"
    FxmlApp.java                 @ git@github.com:hallvard/javafx/games/src/games/FxmlApp.java;
    FxmlBuilderFactory.java     @ git@github.com:hallvard/javafx/games/src/games/FxmlBuilderFactory.java;
    FxmlGame.java                @ git@github.com:hallvard/javafx/games/src/games/FxmlGame.java;
    IPersistable.java            @ git@github.com:hallvard/javafx/games/src/games/IPersistable.java;
    IUndoable.java                @ git@github.com:hallvard/javafx/games/src/games/IUndoable.java;
    IUpdateable.java            @ git@github.com:hallvard/javafx/games/src/games/IUpdateable.java;
    PersistableController.java    @ git@github.com:hallvard/javafx/games/src/games/PersistableController.java;
    UndoableController.java        @ git@github.com:hallvard/javafx/games/src/games/UndoableController.java;
    Persistable.fxml            @ git@github.com:hallvard/javafx/games/src/games/Persistable.fxml;
    Undoable.fxml                @ git@github.com:hallvard/javafx/games/src/games/Undoable.fxml;

    imagegrid/ #java #package
        ImageGrid.java        @ git@github.com:hallvard/javafx/games/src/games/imagegrid/ImageGrid.java;
        ImageGridGame.java        @ git@github.com:hallvard/javafx/games/src/games/imagegrid/ImageGridGame.java;
        ;
    sokoban/ #java #package
        sokoban2/ #java #package
            ISokoban.java    @ git@github.com:hallvard/javafx/games/src/games/sokoban/sokoban2/ISokoban.java;
            SokobanFX.java    @ git@github.com:hallvard/javafx/games/src/games/sokoban/sokoban2/SokobanFX.java;
            SokobanFX.fxml    @ git@github.com:hallvard/javafx/games/src/games/sokoban/sokoban2/SokobanFX.fxml;
            ;
        box_on_target16x16.png    @ git@github.com:hallvard/javafx/games/src/games/sokoban/box_on_target16x16.png;
        box16x16.png            @ git@github.com:hallvard/javafx/games/src/games/sokoban/box16x16.png;
        empty16x16.png            @ git@github.com:hallvard/javafx/games/src/games/sokoban/empty16x16.png;
        player_on_target16x16.png    @ git@github.com:hallvard/javafx/games/src/games/sokoban/player_on_target16x16.png;
        player16x16.png            @ git@github.com:hallvard/javafx/games/src/games/sokoban/player16x16.png;
        target16x16.png            @ git@github.com:hallvard/javafx/games/src/games/sokoban/target16x16.png;
        wall16x16.png            @ git@github.com:hallvard/javafx/games/src/games/sokoban/wall16x16.png;

 

 

Include Page
Bunntekst for oppgaver
Bunntekst for oppgaver

...