Das Streichholzspiel.

Slides:



Advertisements
Ähnliche Präsentationen
Vom graphischen Differenzieren
Advertisements

Microsoft Netmeeting Christian Carls / Robert Hladik Zentrum für Allgemeine Wissenschafltiche Weiterbildung der Universität Ulm Eine Einführung.
Ultris Version 8: Erzeugen der Formen und Anzeigen der Vorschau
Seite 1Maria, Philipp, Herbert Seite 1 Fitnessplaner Ziele: >Fitnessplaner für Onlinebetrieb >Registrierung >individuelle Trainingsplanerstellung.
Java News and Music GAME 18 & 3 SS03 / C. Kreienbrinck.
Ein Beispiel in Java.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Polymorphie (Vielgestaltigkeit)
Softwaretechnologie II WS 08/09 SpieleProgrammieren UlTris V07 Reihen vorbelegen, Spielfeld anzeigen und Punktestand ausrechnen Sibylle C. Schellhorn,
Windows Explorer.
Die Türme von Hanoi Die Lösungsfindung nach dem Prinzip der Rekursion wird noch einmal textuell und grafisch erläutert
Cascading Style Sheets
Das Nim-Spiel es wird auf der ganzen Welt gespielt
TD Hilfe Für neue TD`S die Hilfe brauchen. Hier rauf um ein Turnier Zu Erstellen.
Aus dem Leben eines Hotline-Mitarbeiters
PDC – OLC Cup Bearbeiten und Online stellen von Flügen Eine Kurze Anleitung die du maximal für dein erstes Mal brauchst!
Klicken Sie in der Meldungsleiste auf Bearbeitung aktivieren,
Login auf dem E-Learning Server der TUHH Das Institut für Verkehrsplanung und Logistik hat das Vorlesungsmaterial jetzt.
Wie erstelle ich einen Spielplan von unserer Homepage? Der Schlüssel liegt hinter dem Button Spiele, Ergebnisse Hier alle Spiele wählen. Hier das gewünschte.
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
G.Meininghaus, Konstanz1 Bilder / Fotos per verschicken.
Ich möchte gerne mehrere Bilder auf ein Folie
WAS ZUM NACHDENKEN!.
Wie man eine einfache Präsentation erstellt...
Willkommen bei Sycarus – dem Mathematikprogramm, das neue Wege geht.
Unterwegs im Internet.
Hallo! Ich zeige dir, wie du eine eigene Präsentation gestalten kannst! Beginne eine neue Präsentation mit einer leeren Folie. Wie das geht, steht auf.
Arbeiten mit Javascript Eine einführende Vortragsübung Referentin: Christin Püschel 29. Juni 2005.
Wie kommt Facebook in mein Wohnzimmer?. HTML Sprache zum formatieren von Text Nur TEXT!
JavaScript.
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Was ist ein Broadcast? Lernziel: To be able to understand broadcasts and apply them to your game.
Was macht eigentlich dieses ExsoForm? Ein Beispiel für eine Dokumentendefinition in Screenshots.
Game Programming mit Lua
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Gruppe: Gewinnt Überblick 1.0 (Martin Kapfhammer)
Hallo Ich möchte einen Text einer Folie nicht einfach nur einfliegen lassen, sondern genau diesen Text, der schon an einer bestimmten Stelle steht, vergrößern.
CGI (Common Gateway Interface)
WAS ZUM NACHDENKEN !.
Wie man eine einfache Präsentation erstellt...
Von Oliver Richard. Video aussuchen Video Tag Video Pfad angeben Höhe, Breite angeben Optional Buttons für play und pause, definiert mit einer ID.
Arbeiten mit der Anzahl Wörter in Ihrem Dokument j drücken Sie dann F5, oder klicken Sie auf Bildschirmpräsentation > Von Beginn an, um den Kurs zu starten.
Aufgaben Version 1: Es soll eine Wetterstation mit folgenden zwei Anzeigen implementiert werden: Aktuelle Wetterbedingungen mit Temperatur und.
PHP Basic.
Grundkonzepte des Programmierens (mit ActionScript)
Erste Schritte in DELPHI
Vortrag: Frames & Javascript.
Wie funktionieren Internetseiten? Html und Co – Teil 2 Heimo Reiter.
HTML, CSS und JavaScript
document document Hier wird das document Objekt definiert. Alle anderen Objekte sind innerhalb des Objektes document angesiedelt. In diesem „rohen“ Dokument.
Tutorium zur LV Forschungspraktikum II (Higher Education) Ein Computerprogramm tut, was Du schreibst, nicht was Du willst.
Vom graphischen Differenzieren
Lektion 1 - Lektion 2 - Lektion 3 - Lektion 4
01 - Schaltflächen- 1 Schaltfläche Cosmic Schaltflächen Ändern Sie die Größe des Hintergrunds auf 140x40 Pixel und die Farbe auf Schwarz.
Installation, Konfiguration, Online stellen, Zugriff © by Lars Koschinski 2003.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
A Workshop About this chapter General description Units Time Schedule
Webserver Apache & Xampp Referenten: Elena, Luziano und Sükran
A&D Persa K TB Herzlich Willkommen zum Flash 4 - Seminar.
Webserver einrichten mit Konfiguration, online stellen, Zugang © by Lars Koschinski 2003.
Dreamweaver MX Rechenzentrum Universität Hohenheim Hani Sahyoun.
Musterlösung IT-Struktur an Schulen © M. Stütz, F. Wrede LEU - Zentrale Planungsgruppe Netze am Kultusministerium Baden-Württemberg zwei Programme im.
MAYA K. Canvas-Projekt. In HTML- body: Canvas tag öffnen seamntsiches HTML) Canvas bekommt eine id (1mal verwenden, mit # angesprochen) Höhe und breite.
Referat zu Hyperlink in Excel mit Grafik und Text
Titeldetailseite Mit dieser Anleitung werden Ihre Titel zu einem echten.
Softwareprojektpraktikum E-learning in der Schule Kürzeste Wege – Spiel Wintersemester 2015/2016 Florian Kettel Lea Christ Mustafa Sezer.
DER LETZTE STRICH Michael Plattner; Simon Hofer. Spielregeln Es werden fünf Zeilen lang Striche angeordnet In der untersten fünf Striche, dann vier, dann.
 Präsentation transkript:

Das Streichholzspiel

Das Spiel und die Regeln Es liegen n Streichhölzer auf dem Tisch. Reihum muss jeder Spieler entweder 1, 2 oder 3 Streichhölzer vom Tisch nehmen. Kann ein Spieler kein Streichholz mehr ziehen, hat er verloren.

Mock-Up Streichholzspiel Spieler 1 Spieler 2 Spieler 3 Jeder Spieler sieht den virtuellen Spieltisch mit den Streichhölzern vor sich. Es wird reihum gespielt.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Auswahldialog beim ersten Spieler einblenden, damit er 1, 2 oder 3 Streichhölzer ziehen kann.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Spieler eins zieht 1 Streichholz.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Ein Streichholz wird überall entfernt.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Der zweite Spieler ist an der Reihe.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Der zweite Spieler zieht 3.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Es werden 3 Streichhölzer entfernt.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Ziehe: 1 2 3 Spieler 1 ist wieder an der Reihe.

Mock-Up - Spielverlauf Spieler 1 Spieler 2 Spieler 3 Spieler 1 verliert Spieler 1 verliert Spieler 1 verliert Spieler 1 hat kein Streichholz mehr und verliert.

Anforderungen Alle Spieler sehen immer die gleiche, aktuelle Anzahl Streichhölzer auf dem Spieltisch. Nur der Spieler, der an der Reihe ist, kann und muss den nächsten Spielzug vornehmen. Er nimmt 1,2 oder 3 Streichhölzer. Will ein Spieler mehr Streichhölzer wegnehmen als auf dem Spieltisch liegen wird eine Fehlermeldung angezeigt. Wenn kein Streichholz mehr auf dem Spieltisch liegt, verliert der Spieler der als nächstes an der Reihe ist. Das Spiel wird beendet.

Das Spiel auf einem einzelnen Computer (Webbrowser) umzusetzen wäre nicht so schwierig. Interessant ist jedoch die Umsetzung als Multiplayer-Game (verteilte Anwendung) auf mehreren Webbrowsern.

Webbrowser auf verschiedenen Geräten miteinander koordinieren Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser Ziehe: 1 2 3

Webbrowser auf verschiedenen Geräten miteinander koordinieren Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser Ziehe: 1 2 3 Mitteilung von Spieler1 an alle Spieler (Browser) schicken, dass 1 Streichholz entfernt wurde.

Webbrowser auf verschiedenen Geräten miteinander koordinieren Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser Ziehe: 1 2 3 Mitteilung von Spieler1 an alle Spieler (Browser) schicken, dass 1 Streichholz entfernt wurde.

Webbrowser auf verschiedenen Geräten miteinander koordinieren Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser Ziehe: 1 2 3 Wichtig: Mitteilung vom Spieler1 auch an Spieler1 schicken, damit alle Clients gleich behandelt werden können.

Webbrowser auf verschiedenen Geräten miteinander koordinieren Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser -1 -1 -1 Ziehe: 1 2 3 Wichtig: Mitteilung vom Spieler1 auch an Spieler1 schicken, damit alle Clients gleich behandelt werden können.

Webbrowser auf verschiedenen Geräten miteinander koordinieren Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser Ziehe: 1 2 3 Wichtig: Mitteilung vom Spieler1 auch an Spieler1 schicken, damit alle Clients gleich behandelt werden können.

Wir verwenden das GameFramework von LearningApps.org Nachrichten verschicken ist heute zwar üblich, aber technisch nicht so einfach. Wir verwenden das GameFramework von LearningApps.org

Das GameFramework ermöglicht uns das Versenden von Nachrichten und stellt vordefinierte Nachrichten bereit. Webbrowser HTML-Seite Server AppClient.js AppClient GameFramework.js game Webbrowser HTML-Seite Spiellogik onGameStart onGameMessage Webbrowser onGameEnd HTML-Seite

Eintreffende Nachrichten lösen „Events“ aus Eintreffende Nachrichten lösen „Events“ aus. Wir müssen später sagen „was passiert wenn…“ GameFramework.js game Spiellogik onGameStart Einblenden des Spieltisches, Variablen rücksetzen, Zeichnen der Streichhölzer onGameMessage auf spezifische Nachrichten das Streichholzspiels reagieren onGameEnd Ausblenden des Spieltisches …

Konkrete Umsetzung des Streichholzspiels mit GameFramwork Wir erstellen eine neue Datei mit einem Texteditor: index.html <!DOCTYPE html> <html> <head><title>Streichholzspiel</title></head> <body> <script type="text/javascript" src="http://LearningApps.org/AppClient.js"></script> <script type="text/javascript" src="http://LearningApps.org/GameFramework.js"></script> Ab jetzt steht uns das GameFramework zur Verfügung.

HTML kann nach Belieben gestaltet werden. Game Design <h1 style="text-align:center">Das Streichholzspiel</h1> <div id="gamescreen" style="display:none; left:0px; top:0px; width:100%; height:100%; position:absolute; overflow:auto; background:white"> <div id="spieltisch" style="width:300px; margin:50px auto;border:2px solid gray"> </div> <div id="auswahl" style="display:none; width:300px; margin:10px auto;border:2px solid gray"> Du musst ziehen: <input type="button" value="1" onclick="zieh(1)"/> <input type="button" value="2" onclick="zieh(2)"/> <input type="button" value="3" onclick="zieh(3)"/> HTML kann nach Belieben gestaltet werden.

HTML kann nach Belieben gestaltet werden. Game Design <h1 style="text-align:center">Das Streichholzspiel</h1> <div id="gamescreen" style="display:none; left:0px; top:0px; width:100%; height:100%; position:absolute; overflow:auto; background:white"> <div id="spieltisch" style="width:300px; margin:50px auto;border:2px solid gray"> </div> <div id="auswahl" style="display:none; width:300px; margin:10px auto;border:2px solid gray"> Du musst ziehen: <input type="button" value="1" onclick="zieh(1)"/> <input type="button" value="2" onclick="zieh(2)"/> <input type="button" value="3" onclick="zieh(3)"/> HTML kann nach Belieben gestaltet werden.

HTML kann nach Belieben gestaltet werden. Game Design <h1 style="text-align:center">Das Streichholzspiel</h1> <div id="gamescreen" style="display:none; left:0px; top:0px; width:100%; height:100%; position:absolute; overflow:auto; background:white"> <div id="spieltisch" style="width:300px; margin:50px auto;border:2px solid gray"> </div> <div id="auswahl" style="display:none; width:300px; margin:10px auto;border:2px solid gray"> Du musst ziehen: <input type="button" value="1" onclick="zieh(1)"/> <input type="button" value="2" onclick="zieh(2)"/> <input type="button" value="3" onclick="zieh(3)"/> gamescreen spieltisch auswahl HTML kann nach Belieben gestaltet werden.

Spiellogik in JavaScript umsetzen <script type="text/javascript"> // Das GameFramework stellt das Objekt game zur Verfügung. // Das game initialisieren: game.init(); // Einen Computergegner hinzufügen game.addComputerPlayer(); // Maximale Spielerzahl festlegen game.maxPlayers = 4; // aktuelle Anzahl der Streichhölzer auf dem Spieltisch var anzahlHoelzer;

Events – auf Ereignisse reagieren Spiel startet – onGameStart Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser onGameStart onGameStart onGameStart

Spielstart (onGameStart) und Spielende (onGameEnd) game.onGameStart = function(){ // Das Spielfeld einblenden document.getElementById("gamescreen").style.display = "block"; // Nach der Anzahl der Spieler starten wir mit passender Anzahl // Streichhölzer auf dem Spieltisch anzahlHoelzer = game.Players.length * 9; // Den leeren Container mit Streichhölzern füllen spieltischFuellen(anzahlHoelzer); // Der erste Spieler beginnt das Spiel game.nextPlayersTurn(); } game.onGameEnd = function(){ // Das Spielfeld ausblenden document.getElementById("gamescreen").style.display = "none";

Spielstart (onGameStart) und Spielende (onGameEnd) game.onGameStart = function(){ // Das Spielfeld einblenden document.getElementById("gamescreen").style.display = "block"; // Nach der Anzahl der Spieler starten wir mit passender Anzahl // Streichhölzer auf dem Spieltisch anzahlHoelzer = game.Players.length * 9; // Den leeren Container mit Streichhölzern füllen spieltischFuellen(anzahlHoelzer); // Der erste Spieler beginnt das Spiel game.nextPlayersTurn(); } game.onGameEnd = function(){ // Das Spielfeld ausblenden document.getElementById("gamescreen").style.display = "none"; Spieltisch mit Streichhölzern füllen

Die Funktion spieltischFuellen(anzahlHoelzer) function spieltischFuellen(anzahlHoelzer){ var quelltextHolz = '<img src="holz.png" alt=""/>'; var spieltischHTMLcode = ""; for(var i = 0; i < anzahlHoelzer; i++) spieltischHTMLcode = spieltischHTMLcode + quelltextHolz; document.getElementById("spieltisch").innerHTML = spieltischHTMLcode; }

Die Funktion spieltischFuellen(anzahlHoelzer) function spieltischFuellen(anzahlHoelzer){ var quelltextHolz = '<img src="holz.png" alt=""/>'; var spieltischHTMLcode = ""; for(var i = 0; i < anzahlHoelzer; i++) spieltischHTMLcode = spieltischHTMLcode + quelltextHolz; document.getElementById("spieltisch").innerHTML = spieltischHTMLcode; } Das erzeugtes HTML dem Container spieltisch zuweisen. HTML Vorschau

Events – auf Ereignisse reagieren Spiel geht in die erste (nächste) Runde – onNextPlayersTurn Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn

Events – auf Ereignisse reagieren Erster Spieler bekommt weiteres Event – onPlayersTurn Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn

Events – auf Ereignisse reagieren Erster Spieler bekommt weiteres Event – onPlayersTurn Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn Dieser Spieler ist an der Reihe

onNextPlayersTurn und onPlayersTurn game.onNextPlayersTurn = function(player,lastPlayer){ // Prüfen ob keine Streichhölzer mehr auf dem // Spieltisch liegen. Sonst Spiel beenden. // Der vorherige Spieler hat gewonnen. if(anzahlHoelzer == 0) game.quitGame(lastPlayer.name,2000); } game.onPlayersTurn = function(player,lastPlayer){ // aktueller Spieler ist an der Reihe // Auswahldialog einblenden document.getElementById('auswahl').style.display = 'block';

Events – auf Ereignisse reagieren Auswahldialog eingeblendet Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn

Events – auf Ereignisse reagieren Auswahldialog eingeblendet und Button geklickt Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn <input type="button" value="1" onclick="zieh(1)"/> <input type="button" value="2" onclick="zieh(2)"/> <input type="button" value="3" onclick="zieh(3)"/>

Auswahl Button angeklickt – die Funktion zieh Nachrichten verschicken game.sendMessage function zieh(anzahl){ // Prüfen ob genug Streichhölzer auf dem Spieltisch sind if(anzahlHoelzer < anzahl) { alert("Du kannst nicht so viele ziehen!"); } else { // Auswahl ausblenden, wir haben uns entschieden document.getElementById('auswahl').style.display = 'none'; // Nachricht an alle Spieler verschicken game.sendMessage("ZIEH|" + anzahl); // Unser Zug ist fertig, an nächsten Spieler abgeben game.nextPlayersTurn(); }

Events – auf Ereignisse reagieren Nachrichten empfangen – onGameMessage Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn onGameMessage onGameMessage onGameMessage ZIEH|1 ZIEH|1 ZIEH|1

Auf eingehende Nachrichten reagieren game.onGameMessage game.onGameMessage = function(msg, from){ // Ankommende Nachricht teilen am geraden Strich | var teile = msg.split("|"); if(teile[0] == "ZIEH"){ // Gesamtzahl der Streichhölzer reduzieren anzahlHoelzer = anzahlHoelzer - teile[1]; // Anzeige aktualisieren spieltischFuellen(anzahlHoelzer); }

Events – auf Ereignisse reagieren Spiel geht in die nächste Runde – onNextPlayersTurn Spieler 1 Spieler 2 Spieler 3 Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn

Events – auf Ereignisse reagieren Zweiter Spieler bekommt Event – onPlayersTurn Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn

Events – auf Ereignisse reagieren Spielrunde wie zuvor, nun bei Spieler 2 Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onPlayersTurn …

Das Spiel lokal testen

Das Spiel lokal testen

Das Spiel lokal testen

Das Spiel lokal testen

Events – auf Ereignisse reagieren Spiel gegen den Computer onComputersTurn statt onPlayersTurn Spieler 1 Spieler 2 Computer Webbrowser Webbrowser Webbrowser onNextPlayersTurn onNextPlayersTurn onNextPlayersTurn onComputersTurn

Spiel gegen den Computer game.onComputersTurn = function(computer,lastPlayer){ // Zug des Computers spielen var z; // Wenn mehr als 3 Streichhölzer auf dem Tisch liegen // zufällig 1,2 oder 3 ziehen if(anzahlHoelzer > 3) z = Math.ceil(Math.random()*3); if(anzahlHoelzer == 3) z = 3; if(anzahlHoelzer == 2) z = 2; if(anzahlHoelzer == 1) z = 1; // zieh Funktion aufrufen, als hätten man auf // einen der Buttons geklickt zieh(z); }

Spiel im Internet bereitstellen ZIP-Archiv aus allen Dateien erstellen

Spiel im Internet bereitstellen 2 1

Spiel im Internet bereitstellen

Spiel im Internet bereitstellen

Spiel im Internet bereitstellen

Spiel im Internet bereitstellen

Spiel im Internet bereitstellen