SchülerInnen-Uni 2015 Dr. Holger Eichelberger eichelberger@sse.uni-hildesheim.de
Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App? 10 5. War das smart? Geht es smarter? 23 6. Ist Informatik etwas für mich? 27 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 1
Wer ist das? Wer ist das? Geboren in Franken WDR Computerecke Erster Computer Schule: Wahlkurs Informatik Studium in Würzburg Abschluss und Doktorarbeit in Würzburg Jetzt: SSE Uni Hildesheim 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 12
Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App? 10 5. War das smart? Geht es smarter? 23 6. Ist Informatik etwas für mich? 27 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 3
Software Was ist ein Smartphone? 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 4
Was ist ein Smartphone? Sind alle Smartphones gleich? Gerät: Display, Sensoren, Akku Betriebssystem Apple ios: iphone Google Android: HTC, Samsung, Sony, LG, Motorola, Windows Phone: HTC, LG, Samsung, Nokia, Apps (~2013) Apple App Store > 580.000 Google Play > 360.000 Microsoft Marketplace ~20.000 jeder kann Apps entwickeln. 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 15
Was ist ein Smartphone? Ist das was für mich? Ich habe kein Smartphone Ich kann aber nicht Programmieren Geht dabei mein Smartphone kaputt? Java! Ziel: Kleines Spiel Zutaten: Man nehme ein wenig Idee Mathematik Programmierverständnis Folien und Beispiele auf der Webseite der SchülerInnen-Uni 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 16
Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App? 10 5. War das smart? Geht es smarter? 23 6. Ist Informatik etwas für mich? 27 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 7
Wie entwickelt man für Smartphones? Wie funktioniert App-Entwicklung? Anforderungen Entwurf Smart? Die Entwicklungsumgebung ist kostenlos Download Programm (Quelltext) Android: Java iphone: ObjectiveC Ausführbares Programm Android: IntelliJ / Eclipse iphone: xcode (nur Mac) Test 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 18
Wie entwickelt man für Smartphones? Was sind unsere Anforderungen? Das Spiel muss aus einem einfachen Spielfeld bestehen. Das Spiel muss eine Schlange darstellen. Die Schlange muss sich bewegen. Die Schlange soll durch Neigung des Smartphones gesteuert werden. Das Spiel kann Spielregeln haben Nicht heute! Punkte (positiv, negativ) Spielende (Game over) Das Spiel kann weitere Funktionalität bereitstellen. Highscore-Tabelle Hauptmenü, Hilfe, Einstellungen Ein Spiel? Mehrere Spiele? 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 9
Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App? 10 5. War das smart? Geht es smarter? 23 6. Ist Informatik etwas für mich? 27 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 10
Wie bauen wir die App? Wie zeichnen wir eine Schlange mit dem Smartphone? (1) Mathematik: Koordinatensystem 0,0 34 72 104 20 320 x Was können wir damit machen? Linien, Rechtecke, Text, Bilder 2D und 3D Grafik und Schatten (nicht jetzt) Was passiert wenn das Display eine andere Größe hat? Zwischenschicht, die sich darum kümmert Ggf. geeignete(re) Bilder bereitstellen 480 y 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 11
Wie bauen wir die App? Die Zwischenschicht Wir arbeiten nicht direkt mit Android Wir verwenden eine Zwischenschicht, die uns Arbeit abnimmt Das Spiel Die Zwischenschicht (framework.jar) Das Android Betriebssystem 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 13
Wie bauen wir die App? Wie zeichnen wir eine Hintergrund und Schlange? Relevanter Ausschnitt: public void present(float deltatime) { Graphics g = game.getgraphics(); g.drawpixmap(assets.background, 0, 0); } g.drawpixmap(assets.headup, 20, 34); g.drawpixmap(assets.tail, 20, 72); g.drawpixmap(assets.tail, 20, 104); 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 14
Wie bauen wir die App? Wie bewegen wir die Schlange? links! links! runter! rechts! hoch! rechts! Erkenntnisse: Rasterpositionen vereinfachen die Bewegung Wir benötigen vier Richtungen Die Richtung bestimmt die nächste Position des Kopfes Plan: Alle restlichen Teile werden jeweils auf die Position des Vorgängers gesetzt Dann wird die Position des Kopfes gesetzt 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 15
Wie bauen wir die App? Was passiert an den Kanten des Spielfelds? hoch! hoch! Wenn Kopf-Position kleiner 0, dann mache an größter Raster-Position weiter. rechts! rechts! Wenn die Kopf-Position größer als Raster, dann mache an Raster- Position 0 weiter 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 16
Wie bauen wir die App? Wie verwalten wir die Schlange? Wir beschreiben eine Schlange durch Bewegungsrichtung des Kopfes Ihre Teile als Liste, wobei jedes Teil x-position (Ganzzahl, in Rastereinheiten) y-position (Ganzzahl, in Rastereinheiten) Teile In Java (vereinfacht) class SnakePart { class Snake { int x, y; Direction direction; } List<SnakePart> parts; } 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 17
Wie bauen wir die App? Wie sieht der Bewegungs-Algorithmus aus (update-methode)? SnakePart head = parts.get(0); // Setze alle Teile auf die Position des Vorgängerteils for (int i = parts.size(); i > 0; i--) { before = parts.get(i-1); part = parts.get(i); part.x = before.x; part.y = before.y; } // Setze neue Kopfposition aufgrund der Liste if (direction == Direction.UP) { head.y -= 1; } // analog DOWN, LEFT, RIGHT // Korrigiere Randpositionen falls notwendig if (head.x < 0) { head.x = WORLD_WIDTH; } // analog x>word_width, y<0, y>world_height 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 18
Wie bauen wir die App? Wie wird die Schlange gezeichnet (present-methode)? Zeichnen der Schlange Für alle Teile in der Liste: zeichne an (x * Rasterbreite, y * Rasterhöhe) In Java SnakePart head = parts.get(0); drawpixmap(head.getpixmap(), head.x * WORLD_CELL_WIDTH, head.y * WORLD_CELL_HEIGHT); for (int i = parts.size(); i > 0; i--) { drawpixmap (Assets.tail, parts.get(i).x * WORLD_CELL_WIDTH, parts.get(i).y * WORLD_CELL_HEIGHT); } 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 19
Wie bauen wir die App? Smart? Wie können wir mit dem Smartphone die Schlange steuern? (1) Beschleunigungssensor Drei Achsen Werte als Anteile der Erdbeschleunigung g Für die Schlange bedeutet x < -1 rechts x > 1 links y < -1 hoch y > 1 runter. Sonst steht die Schlange 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 20
Wie bauen wir die App? Wie können wir mit dem Smartphone die Schlange steuern? (2) float accelx = game.getinput().getaccelx(); float accely = game.getinput().getaccely(); dir = Direction.UNDEFINED; if (accelx < -1) { dir = Direction.RIGHT; } else if (accelx > 1) { dir = Direction.LEFT; } else { //accelx == 0 if (accely < -1) { dir = Direction.UP; } else if (accely > 1) { dir = Direction.DOWN; } } 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 21
Apps selbst entwickeln? Wie kann ich nun zuhause selbst entwickeln? Java installieren (oracle.com) Android SDK installieren (developer.android.com) Mindestens: 2.3.3 (API 10), 2.2 (API 8), 1.5 (API 3) Android Virtual Device (AVD) konfigurieren (für Android 2.3) Android Studio installieren (developer.android.com) Ggf. Treiber für Smartphone / Tablet installieren Beispiele importieren 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 22
Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App? 10 5. War das smart? Geht es smarter? 23 6. Ist Informatik etwas für mich? 27 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 23
Smart? Was war denn eigentlich smart? (1) Wir haben nicht drauflos gehackt! Wir haben Android nicht direkt verwendet sondern über eine Bibliothek. Skaliert die Ausgaben Gleicht Unterschiede der Betriebssysteme aus War das smart? Geht es smarter? Ist wiederverwendbar In Industrie: Konzentrieren auf das Wichtige Beispiel: Physik-Engines wie phys2d, emini, metali Wir haben Android-Sensoren verwendet 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 24
Smart? Was war denn eigentlich smart? (2) Und wenn wir ähnliche Spiele entwickeln wollen? Kopieren und ändern? Keine gute Idee! Und was tut man dann? Idee: Ähnlichkeiten analysieren Ähnlichkeiten konfigurierbar machen Spiel generisch mit Alternativen entwickeln Nicht benötigte Alternativen anhand Konfiguration vor Auslieferung entfernen 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 25
Smart? Was war denn eigentlich smart? (2) Energie Smartphones sind anders Wunsch: Automatische Optimierung des Energieverbrauchs Wunsch: Entwicklung für mehrere Plattformen Android, Windows, iphone 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 27
Inhalt 1. Wer ist das? 1 2. Was ist ein Smartphone? 3 3. Wie entwickelt man für Smartphones? 7 4. Wie bauen wir die App? 10 5. War das smart? Geht es smarter? 23 6. Ist Informatik etwas für mich? 27 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 28
Ist Informatik etwas für mich? Was macht ein Informatiker? Programmieren? Berater (Consultants) Software Entwicklung Lehre / Forschung Gibt es Stellen? Männerberuf? 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 29
Ist Informatik etwas für mich? Ist das was für mich? Spaß am Problemlösen Interesse an Mathematik Keine Abneigung gegen Englisch Informatik ist nicht nur Programmieren! 03.07.2015, SchülerInnenUni Dr. Holger Eichelberger, AG SSE 30