Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Excerpt

I denne oppgaven vil vi gå ut ifra allerede implementerte spill. Vi vil bygge på tidligere implementerte rutenettbaserte spill og legge til nye kommandoer.

...

  • finne en måte å representere brukerhandlinger, dvs. lage en klasse som kan lagre informasjon om handlinger
  • implementere logikk for å reversere og gjenta handlingen som slike objekter representerer
  • administrere angre- og gjenta-stack'er som forklart over (eller tilsvarende logikk)

Obs! For slagskip-spillet skal man ikke implementere angre og gjenta. Se egen artikkel for slagskip.

Del 2 (50%)

I denne delen skal du implementere lagring av spill og innlesing av tidligere lagrede spill, slik at en kan fortsette der en slapp, f.eks. med et vanskelig Sokoban-brett. Du må altså definere et egnet filformat, og støtte dette formatet både ved skriving til fil og lesing fra fil. Merk at det kun er nødvendig å lagre nå-tilstanden til spillet, en trenger ikke lagre tilstand knyttet til angring (undo). Det naturlige vil være å ha et tekstlig (i motsetning til binært) format, med én linje pr. rad i spillet og én eller flere tegn pr. rute i raden. Sokoban har forøvrig et definert standardformat (se http://sokobano.de/wiki/index.php?title=Level_format), som det kan være lurt å støtte for å forenkle bruk av eksisterende brett.

...

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 (morsomt, men ikke obligatorisk)

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 å

...

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. Når emfs-pakken er importert så må du

  1. implementere det nødvendige grensesnittet og
  2. legge navnet på din spill-klasse inn i fxml-fila for app

...

  1. -en (se instruksjoner i fila).

Så kan du starte app-en ved å høyreklikke på java-fila med samme navn som fxml-fila og (som vanlig) velge Run As->Java Application.

Nedlastingspakker

Fellespakke (brukes av alle)

...

Code Block
emfs
/games/ #java #package
    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
Code Block
emfs
/games/        ;
    #java #package
	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;
            ;
        sample.sok    @ git@github.com:hallvard/javafx/games/src/games/sokoban/sample.sok;
        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;

Sudoku
Code Block
emfs
/games/ #java #package
	sudoku/ #java #package
		sudoku2/ #java #package
            ISudoku.java    @ git@github.com:hallvard/javafx/games/src/games/sudoku/sudoku2/ISudoku.java;
            SudokuFX.java    @ git@github.com:hallvard/javafx/games/src/games/sudoku/sudoku2/SudokuFX.java;
            SudokuFX.fxml    @ git@github.com:hallvard/javafx/games/src/games/sudoku/sudoku2/SudokuFX.fxml;
TicTacToe
Code Block
emfs
/games/ #java #package
	tictactoe/ #java #package
		tictactoe2/ #java #package
            ITicTacToe.java    @ git@github.com:hallvard/javafx/games/src/games/tictactoe/tictactoe2/ITicTacToe.java;
            TicTacToeFX.java    @ git@github.com:hallvard/javafx/games/src/games/tictactoe/tictactoe2/TicTacToeFX.java;
            TicTacToeFX.fxml    @ git@github.com:hallvard/javafx/games/src/games/tictactoe/tictactoe2/TicTacToeFX.fxml;

Slagskip

Se egen artikkel. 

 

Include Page
Bunntekst for oppgaver
Bunntekst for oppgaver

...