Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Raphael Fischer fischrap@student.ethz.ch 10.04.2014 Informatik II - Übung 07 Raphael Fischer fischrap@student.ethz.ch 10.04.2014.

Ähnliche Präsentationen


Präsentation zum Thema: "Raphael Fischer fischrap@student.ethz.ch 10.04.2014 Informatik II - Übung 07 Raphael Fischer fischrap@student.ethz.ch 10.04.2014."—  Präsentation transkript:

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


Herunterladen ppt "Raphael Fischer fischrap@student.ethz.ch 10.04.2014 Informatik II - Übung 07 Raphael Fischer fischrap@student.ethz.ch 10.04.2014."

Ähnliche Präsentationen


Google-Anzeigen