Versions Compared

Key

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

Memory er et spill hvor en prøver å huske og gjenta en så lang sekvens som mulig med tall, bilder eller andre "objekter". Sekvensen blir lengre og lengre og spillet fortsetter helt til en gjentar den feil. Dette kodeeksemplet viser hvordan vi kan implementere en enkel tekstlig versjon av spillet.

Selv om et slikt enkelt spill kan implementeres med én klasse, så legger vi opp til en klassisk todeling i én hovedprogram-klasse, som håndterer kommunikasjone med brukeren, og én logikk-klasse, som håndterer spill-logikken. Dersom logikk-klassen gjøres anvendelig og generell nok, vil en senere kunne gjenbruke den i en grafisk versjon. Todelingen illustreres under med et objektdiagram:

...

Code Block
Scanner scanner = new Scanner(System.in);
do {
	Memory memory = new Memory();				// new game instance
	while (true) {								// repeat as long as the user does not make a mistake
		int nextItem = memory.nextItem();		// extend sequence with another value
		System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");	// scroll previous dialog away
		System.out.println("Element nr. " + memory.getItemCount() + " er " + nextItem);
		Boolean result = null;
		do {									// get another number from the user
			System.out.println("Gjenta element nr. " + (memory.getAcceptedCount() + 1) + " av " + memory.getItemCount());
			int nextInt = Integer.valueOf(scanner.nextLine().trimnextInt());
			result = memory.acceptItem(nextInt);	// check item
		} while (result == null);					// repeat until there is a definite result, either a mistake or a complete and correct sequence
		if (result == Boolean.FALSE) {				// if the user made a mistake, break out of loop
			System.out.println("Feil, den lengste sekvensen du klarte var på " + (memory.getItemCount() - 1) + " elementer.");
			break;
		}
	}
	System.out.println("Vil du prøve på nytt (ja/nei)?");
} while (scanner.nextLinenext().trim().equals("ja"));	// repeat as long as the user wants to play another game
scanner.close();

...

Code Block
public class MemoryProgram {

	private Memory   privatememory;

    public void init() {
		memory = new Memory();	// new game instance
    }

    public void run() {
		... // insert the code above
    }

	// entry point for Java program    
    public static void main(String[] args) {
        new MemoryProgram().run();	// instantiate program object and call its run() method
    }
}

I versjon 2 av Memory-programmet så ser vi på hvordan koden kan gjøres litt mer generell og gjenbrukbar. I versjon 3 bytter vi ut det tekstlige brukergrensesnittet med et minimalistisk grafisk grensesnitt bygget på JavaFX-rammeverket. Dette videreutvikles i versjon 4 til et rikere brukergrensesnitt, hvor flere JavaFX-mekanismer prøves ut.