Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Dominik Fürst Geändert vor über 5 Jahren
1
Raphael Fischer fischrap@student.ethz.ch 10.04.2014
Informatik II - Übung 07 Raphael Fischer
2
Heute ArrayList und Generics Spielbäume Binäre Suchbäume Reversi
Raphael Fischer
3
ArrayList und Generics
Raphael Fischer
4
ArrayList Wie Array, aber kann mehr: Kann Array nicht
import java.util.ArrayList; ArrayList array = new ArrayList(5); array.set(2, ";-)"); String contentOf2 = (String)array.get(2); array.add("Hi there!"); Kann Array nicht Raphael Fischer
5
ArrayList + Generics Mit Generics: Integers:
import java.util.ArrayList; ArrayList<String> array = new ArrayList<String>(5); array.set(2, ";-)"); String contentOf2 = array.get(2); array.add("Hi there!"); Integers: ArrayList<Integer> array = new ArrayList<Integer>(5); Keine primitiven Typen möglich Integer verwenden, wie int benutzen Raphael Fischer
6
Eigene Klasse mit Generics
class GenericList<T>{ GenericList<T> next; T value; public GenericList(T value, GenericList<T> next){ this.value = value; this.next = next; } } Einfach T wie Klassenname benutzen Raphael Fischer
7
Vererbung mit Generics
class BinarySearchTreeUtils<T> implements IBinarySearchTreeUtils<T> Raphael Fischer
8
Spielbäume Raphael Fischer
9
U7.A2: Spielbäume (Beispiel)
Nimm 1 oder 2 Streichhölzer. Wer das letzte Streichholz nimmt, verliert 9 I I I I I I I I I I 1 2 Endsituation, in diesem Fall auch gleichzeitig Gewinner Raphael Fischer
10
U7.A2: Spielbäume markieren
Markieren: Bei Blättern anfangen 1 Sieg, -1 Niederlage Wie obere Knoten markieren? Annahme: Beide Spieler spielen optimal Frage bei jeder Spielsituation: Gegeben diese Situation und Ich (bzw. der Gegner) ist dran, was wird herauskommen? Raphael Fischer
11
U7.A2: Tic-Tac-Toe Raphael Fischer
12
U7.A3 Binäre Suchbäume Jeder Knoten enthält:
Key Thing (Generic) Zeiger auf linken Nachfolger Zeiger auf rechten Nachfolger Key(linker Nachfolger) < Key Key(rechter Nachfolger) > Key Raphael Fischer
13
U7.A3: Tree Utils: Einfache Methoden
public int height(BinarySearchTree<T> tree); public boolean isLeaf(BinarySearchTree<T> tree); public boolean hasOneChild(BinarySearchTree<T> tree); Slide 653 Raphael Fischer
14
U7.A3 Tree Utils: Pre- / In- / Post-order
PreOrder: Bearbeite eigenen Knoten PreOrder(linker Knoten) PreOrder(rechter Knoten) InOrder: InOrder(linker Knoten) Bearbeite eigenen Knoten InOrder(rechter Knoten) PostOrder: PostOrder(linker Knoten) PostOrder(rechter Knoten) Bearbeite eigenen Knoten Knoten „bearbeiten“: Ausgeben An Liste anhängen Etc. Raphael Fischer
15
U7.A3 Tree Utils Aufgabe public ArrayList<T> preOrder(BinarySearchTree<T> tree); public ArrayList<T> inOrder(BinarySearchTree<T> tree); public ArrayList<T> postOrder(BinarySearchTree<T> tree); Tipps: ArrayList<T> list = new ArrayList<T>(); list.add(object); list.addAll(anotherArrayList); list.get(index); list.set(index, object); Raphael Fischer
16
U7.A3 – Tree Utils public BinarySearchTree<T> insert(BinarySearchTree<T> tree, int key, T thing); -> Immer als Blatt einfügen, siehe Slide 658 public T find(BinarySearchTree<T> tree, int key); public BinarySearchTree<T> remove(BinarySearchTree<T> tree, int key); Wenn Element gefunden und... …es keinen oder einen Nachfolger hat: Einfach aushängen …es zwei Nachfolger hat: Hänge kleinstes Element in rechtem Teilbaum aus Finde dazu Element, wo tree.left.left == null (Hilfsfunktion!) Raphael Fischer
17
U7.A4: Reversi! 😍 Serie von Aufgaben Spielregeln und weitere Infos:
Login für Literatur: username: i2bib password: reversi Turnier am Ende des Semesters Super Preise! Raphael Fischer
18
U7.A4: Reversi! 😍 Zunächst: Grundprinzipien
Später: „Strategien“ für den Computerspieler Spieltheorie Prüfungsrelevanter Stoff (MinMax, Alpha-Beta-Suche, ...), der in der Reversi-Übung vertieft wird Raphael Fischer
19
U7.A4: Reversi! 😍 Nur in Eclipse möglich
Setup: Folgt Anleitung aus Übung Raphael Fischer
20
U7.A4: Reversi! 😍 Implementierung „Random Player“
Neue Klasse: Ändert Run-Configurations Schaut euch die Möglichkeiten des Gameboard gb; an Ändert nextMove(GameBoard gb) Gültiger Move? gb.checkMove(int color, Coordinates c) Dann: Zufallsauswahl Raphael Fischer
21
…viel Spass! Informatik II - Übung 06
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.