Commit c08672cf authored by Wolfgang Kowarschick's avatar Wolfgang Kowarschick

Project created

parents
# Created by W. Kowarschick
# based on:
# -----------------------------------------------------------------
# .gitignore
# Bare Minimum Git
# http://ironco.de/bare-minimum-git/
# ver 20180714
# -----------------------------------------------------------------
# https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# -----------------------------------------------------------------
# ignore all files starting with . or ~
.*
~*
# ignore node/grunt dependency directories
node_modules/
# ignore composer vendor directory
/vendor
# ignore components loaded via Bower
/bower_components
# ignore jekyll build directory
/_site
# ignore OS generated files
ehthumbs.db
Thumbs.db
# ignore Editor files
*.sublime-project
*.sublime-workspace
*.komodoproject
# ignore log files
*.log
# ignore compiled files
*.com
*.class
*.dll
*.exe
*.o
*.so
# User-specific stuff
.idea/**/codeStyles
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
# -------------------------
# BEGIN Whitelisted Files
# -------------------------
# track these files, if they exist
!.idea
!.gitignore
!.editorconfig
!.phpcs.xml.dist
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<component name="ProjectDictionaryState">
<dictionary name="Wolfgang">
<words>
<w>aber</w>
<w>abermals</w>
<w>abstand</w>
<w>achtung</w>
<w>addieren</w>
<w>addiert</w>
<w>aktualisieren</w>
<w>aktuelle</w>
<w>akzeptiert</w>
<w>algorithmus</w>
<w>alle</w>
<w>allerdings</w>
<w>anderen</w>
<w>anderenfalls</w>
<w>angegebenen</w>
<w>anmerkung</w>
<w>anschließend</w>
<w>anzahl</w>
<w>argumente</w>
<w>attribut</w>
<w>attributen</w>
<w>attributnamen</w>
<w>attributs</w>
<w>attributwerte</w>
<w>auch</w>
<w>aufgabe</w>
<w>ausgabe</w>
<w>ausgeben</w>
<w>ausgegeben</w>
<w>ausgehen</w>
<w>ausgibt</w>
<w>ausschließlich</w>
<w>außerdem</w>
<w>befehl</w>
<w>befehle</w>
<w>befüllt</w>
<w>beiden</w>
<w>beider</w>
<w>beispiel</w>
<w>beispielsweise</w>
<w>beliebig</w>
<w>berechnen</w>
<w>bereits</w>
<w>beschrieben</w>
<w>besitzt</w>
<w>betrag</w>
<w>betragen</w>
<w>bitte</w>
<w>bonusaufgabe</w>
<w>booleschen</w>
<w>bounsaufgabe</w>
<w>bumm</w>
<w>bälle</w>
<w>dabei</w>
<w>dann</w>
<w>darinnen</w>
<w>dass</w>
<w>dasselbe</w>
<w>datei</w>
<w>dazu</w>
<w>definieren</w>
<w>definierte</w>
<w>deren</w>
<w>diese</w>
<w>diesem</w>
<w>dieser</w>
<w>dokument</w>
<w>drei</w>
<w>dreier</w>
<w>drittel</w>
<w>durch</w>
<w>ebenfalls</w>
<w>eine</w>
<w>einem</w>
<w>einen</w>
<w>einer</w>
<w>eingefügt</w>
<w>eins</w>
<w>einschließlich</w>
<w>elemente</w>
<w>elementen</w>
<w>enthalte</w>
<w>enthalten</w>
<w>enthaltenen</w>
<w>enthält</w>
<w>entnommen</w>
<w>ergebnisse</w>
<w>erhalten</w>
<w>erhöhen</w>
<w>erhöht</w>
<w>erinnerung</w>
<w>erneut</w>
<w>ersetzen</w>
<w>erste</w>
<w>erstellt</w>
<w>erstes</w>
<w>erzeugen</w>
<w>erzeugt</w>
<w>existieren</w>
<w>finden</w>
<w>folgenden</w>
<w>funktion</w>
<w>funktioniert</w>
<w>fügen</w>
<w>geben</w>
<w>geeignet</w>
<w>genau</w>
<w>genauso</w>
<w>geschwindigkeit</w>
<w>geschwindigkeitsattribute</w>
<w>geschwindigkeitswerte</w>
<w>gespeichert</w>
<w>gespeicherten</w>
<w>getrennt</w>
<w>gibt</w>
<w>gleichen</w>
<w>größten</w>
<w>habe</w>
<w>hasharray</w>
<w>hasharrays</w>
<w>heißt</w>
<w>hilfe</w>
<w>ihnen</w>
<w>ihre</w>
<w>ihren</w>
<w>ihrer</w>
<w>immer</w>
<w>importieren</w>
<w>indem</w>
<w>informationen</w>
<w>inhalt</w>
<w>initialisieren</w>
<w>initialisiert</w>
<w>initialwert</w>
<w>initialwerte</w>
<w>innerhalb</w>
<w>integerzahlen</w>
<w>jeden</w>
<w>jedes</w>
<w>jeweils</w>
<w>keine</w>
<w>klasse</w>
<w>kleiner</w>
<w>kleinsten</w>
<w>kollidieren</w>
<w>komma</w>
<w>konsole</w>
<w>konstanten</w>
<w>konstruktor</w>
<w>kontrolle</w>
<w>korrekt</w>
<w>korrigieren</w>
<w>korrigierte</w>
<w>kowarschick</w>
<w>können</w>
<w>könnte</w>
<w>leisten</w>
<w>liefert</w>
<w>lösung</w>
<w>mehrere</w>
<w>methode</w>
<w>methoden</w>
<w>mittelpunkte</w>
<w>mittels</w>
<w>modifizieren</w>
<w>möglich</w>
<w>nach</w>
<w>nacheinander</w>
<w>namen</w>
<w>namens</w>
<w>nehmen</w>
<w>neuen</w>
<w>neues</w>
<w>nicht</w>
<w>notenstufe</w>
<w>oben</w>
<w>obigen</w>
<w>objekt</w>
<w>objektes</w>
<w>objekts</w>
<w>parametern</w>
<w>positionen</w>
<w>positionsattribute</w>
<w>prüfungspraktikum</w>
<w>quadrat</w>
<w>radien</w>
<w>rechts</w>
<w>rekursive</w>
<w>richtige</w>
<w>satz</w>
<w>schlechter</w>
<w>schleife</w>
<w>schlüssel</w>
<w>schreiben</w>
<w>sein</w>
<w>sich</w>
<w>sieben</w>
<w>sind</w>
<w>sofern</w>
<w>soll</w>
<w>sollte</w>
<w>sollten</w>
<w>sonst</w>
<w>sose</w>
<w>sowie</w>
<w>speichern</w>
<w>steht</w>
<w>stringwert</w>
<w>studienarbeit</w>
<w>suchen</w>
<w>summe</w>
<w>syntaktisch</w>
<w>teilaufgabe</w>
<w>tipp</w>
<w>ungleich</w>
<w>unten</w>
<w>unter</w>
<w>variablen</w>
<w>verfügung</w>
<w>verschiebe</w>
<w>verschieben</w>
<w>verschoben</w>
<w>verwenden</w>
<w>verwendet</w>
<w>veränderungen</w>
<w>viele</w>
<w>vorhandene</w>
<w>weitere</w>
<w>wenige</w>
<w>wenn</w>
<w>werden</w>
<w>wert</w>
<w>werte</w>
<w>werten</w>
<w>wertpaare</w>
<w>wird</w>
<w>wählen</w>
<w>zahlen</w>
<w>zeitpunkt</w>
<w>zufallszahl</w>
<w>zufällige</w>
<w>zugehörige</w>
<w>zugehörigen</w>
<w>zugehöriger</w>
<w>zunächst</w>
<w>zuvor</w>
<w>zuweisung</w>
<w>zwei</w>
<w>zweidimensionales</w>
<w>zweimal</w>
<w>zweite</w>
<w>zweiten</w>
<w>zweites</w>
<w>zwischen</w>
<w>ändert</w>
<w>übergeben</w>
<w>überprüfen</w>
</words>
</dictionary>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" addBOMForNewFiles="with NO BOM" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptLibraryMappings">
<includedPredefinedLibrary name="Node.js Core" />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="NodePackageJsonFileManager">
<packageJsonPaths />
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/WK_EcmaScript04_Aufgabe.iml" filepath="$PROJECT_DIR$/.idea/WK_EcmaScript04_Aufgabe.iml" />
</modules>
</component>
</project>
\ No newline at end of file
Author: Wolfgang Kowarschick <kowa@hs-augsburg.de>
Copyright: 2016 - 2018
License: Attribution-NonCommercial-ShareAlike 4.0 International
(CC-BY-NC-SA-4.0)
https://creativecommons.org/licenses/by-nc-sa/4.0/
\ No newline at end of file
/**
* @author Wolfgang Kowarschick <kowa@hs-augsburg.de>
* @copyright 2016 - 2018
* @license CC-BY-NC-SA-4.0
*/
html, body
{ font-family: Verdana, Helvetica, sans-serif;
background-color: rgba(170, 170, 170, 0.55);
}
\ No newline at end of file
This diff is collapsed.
{
"name": "wk_ecmascript_04",
"version": "1.0.0",
"author": "Wolfgang Kowarschick",
"license": "CC-BY-NC-SA-4.0",
"kewords": [
"EcamScript",
"v04"
],
"description": "EcmaScript 04",
"repository": {
"type": "git",
"url": "https://gitlab.multimedia.hs-augsburg.de:8888/kowa/WK_EcmaScript04"
},
"scripts": {
"dev": "webpack --mode development",
"prod": "webpack --mode production",
"watch": "webpack --mode development --watch"
},
"devDependencies": {
"css-loader": "^1.0.1",
"cssnano": "^4.1.8",
"extract-loader": "^3.1.0",
"file-loader": "^2.0.0",
"html-loader": "^0.5.5",
"postcss-loader": "^3.0.0",
"posthtml-inline-assets": "^2.0.0",
"posthtml-loader": "^1.0.1",
"style-loader": "^0.23.1",
"suppress-chunks-webpack-plugin": "0.0.4",
"terser-webpack-plugin": "^1.2.1",
"webpack": "^4.28.1",
"webpack-cli": "^3.2.1"
}
}
/**
* @author Wolfgang Kowarschick <kowa@hs-augsburg.de>
* @copyright 2016 - 2018
* @license CC-BY-NC-SA-4.0
*/
h1
{ font-size: 14px;
font-weight: bold;
line-height: 20px;
margin-top: 20px;
}
p
{ font-size: 12px;
font-variant: normal;
line-height: 5px;
}
pre
{ margin: 0 0 !important;
line-height: 0;
}
\ No newline at end of file
<!--
@author Wolfgang Kowarschick <kowa@hs-augsburg.de>
@copyright 2016 - 2018
@license CC-BY-NC-SA-4.0
@preserve
-->
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset = "UTF-8">
<meta name = "viewport"
content = "width=device-width, initial-scale=1.0, user-scalable=yes"
>
<title>Prüfungspraktikum WiSe 2018, Aufgabe 1</title>
<link rel="stylesheet" href="./css/head.css"/>
<script src="js/main.js" async="async" type="module"></script>
</head>
<body>
<div id="terminal"></div>
</body>
</html>
\ No newline at end of file
/**
* @author Wolfgang Kowarschick <kowa@hs-augsburg.de>
* @copyright 2017-2018
* @license CC-BY-NC-SA-4.0
*/
import {terminal} from './terminal.js';
const NAME = 'IHR NAME';
/*
* Ihnen steht der Befehl terminal.log zur Verfügung, den Sie bitte
* zur Ausgabe Ihrer Ergebnisse verwenden. Dieser Befehl funktioniert
* genauso wie der Befehl console.log. Er gibt die Log-Informationen
* allerdings im HTML-Dokument und nicht in der Konsole aus.
*
* Er akzeptiert mehrere Argumente, die durch Komma getrennt übergeben werden.
* Beispiel:
* terminal.log('Variablen a und b:', a, b);
*/
//=============================================================================
//== Aufgabe 1.0 ==============================================================
//=============================================================================
// Ersetzen Sie in der obigen Konstanten "NAME" den Stringwert "IHR NAME"
// durch Ihren Namen.
terminal.log("==========================================================");
terminal.log("== Prüfungspraktikum, 12. 7. 2018,", NAME);
terminal.log("==========================================================");
//=============================================================================
//== Aufgabe 1.1 ==============================================================
//=============================================================================
terminal.writeLine("Aufgabe 1.1: Objekt", "h1");
// Definieren Sie ein Objekt "o" mit drei Properties "x", "y", und "move".
//
// "x" habe den Wert 300 (Pixel), "y" habe den Wert 270 (Pixel).
//
// "move" sei eine Methode mit dem Parametern "p_x" und "p_y",
// die die Attributen "x" und "y" des zugehörigen Objektes
// um die Werte "p_x" und "p_y" verschiebe. Falls p_x > 0
// ist, wird das Objekt um den angegebenen Betrag nach rechts
// verschoben, sonst nach links. Falls p_y > 0 ist, wird das
// Objekt um den angegebenen Betrag nach unten verschoben,
// sonst nach oben.
// Geben Sie die Attributwerte "o.x" und "o.y" mittels der Funktion
// "terminal.log" auf dem HTML-Terminal aus.
// Verschieben Sie nun das Objekt um 40 Pixel nach Links und um 30 Pixel nach
// unten und geben Sie die neuen Werte abermals im HTML-Terminal aus.
// Fügen Sie MITTELS DREIER JAVASCRIPT-BEFEHLE in das Objekt "o"
// zwei weitere Attribute "vx" mit dem Wert -50 und
// "vy" mit dem Wert 80 sowie eine zweite Methode "update"
// mit dem Parameter "p_dt" ein. Diese Methode addiert zu den
// Werten "x" und "y" des zugehörigen Objektes das p_dt-fache der
// Geschwindigkeitswerte "vx" bzw. "vy" des Objektes.
//
// Verwenden Sie für die Zuweisung der neuen x- und y-Werte die
// bereits vorhandene Methode "move".
// Modifizieren Sie das Objekt o mit Hilfe dieser Methode
// zweimal nacheinander. Wählen Sie als Argument für p_dt
// den Wert 0.2 und geben Sie jeweils die beiden neuen
// Attributwerte "x" und "y" des Objekts auf dem Terminal aus.
//=============================================================================
//== Aufgabe 1.2 ==============================================================
//=============================================================================
terminal.writeLine("Aufgabe 1.2: Klasse", "h1");
// Definieren Sie eine JavaScript-Klasse "Ball", deren Konstruktor
// den Parameter "p_config" besitzt und der die beiden Positionsattribute
// "x" und "y", die Geschwindigkeitsattribute "vx" und "vy" sowie den
// Radius "r" des Balls initialisiert.
// Die Initialwerte werden dem Objekt p_config entnommen, sofern sie unter
// dem gleichen Namen darinnen enthalten sind. Anderenfalls wird jeweils
// 0 als Initialwert verwendet.
// Definieren Sie außerdem innerhalb dieser Klasse die beiden Methoden
// "move" und "update", die genau dasselbe leisten, wie in Aufgabe 1
// beschrieben.
// Erzeugen sie nun ein neues Ball-Objekt b1 an der Position x: 30, y: 70
// mit einem Radius r: 20. Die Geschwindigkeit können Sie beliebig wählen.
// Sie soll aber ungleich 0 sein.
// Geben Sie die Attribut-Werte des Ball-Objektes im Terminal aus.
// Erzeugen Sie ein zweites Ball-Objekt b1 an der Position x: 70, y: 40
// mit einem Radius r: 30. Die Geschwindigkeit können Sie ebenfalls
// beliebig ungleich 0 wählen.
// Geben Sie auch die Attribut-Werte des zweiten Ball-Objektes im Terminal aus.
// Schreiben Sie eine Funktion collision(p_b1, p_b2), die genau dann
// den booleschen Wert true ausgibt, wenn die beiden Bälle p_b1 und
// p_b2 kollidieren. Zur Erinnerung: Zwei Bälle kollidieren, wenn
// der Abstand der beiden Mittelpunkte kleiner als die Summe der beiden
// Radien ist. Den Abstand der Mittelpunkte können Sie mit dem Satz des
// Pythagoras berechnen.
// (Tipp: Mit Math.pow(wert,2) können Sie das Quadrat von "wert" berechnen.)
// Geben Sie nun auf dem Terminal aus, ob die beiden Bälle "b1" und "b2"
// kollidieren. Verwenden Sie dazu die zuvor definierte Funktion.
// Aktualisieren Sie nun die Positionen beider Bälle mit Hilfe der
// Methode "update". Als Argument übergeben Sie jeweils den Wert 0,3.
// Geben Sie die neuen Positionen beider Bälle aus und überprüfen Sie
// abermals mittels "collision", ob die beiden Bälle kollidieren.
//=============================================================================
//== Aufgabe 1.3 ==============================================================
//=============================================================================
terminal.writeLine("Aufgabe 1.3: Array", "h1");
// Erzeugen Sie ein zweidimensionales Array "a" mit 7 mal 4
// Elementen. Jedes Element enthalte ein Objekt, mit
// den Attributen "i", "j" und "z". In "i" und "j"
// soll jeweils die aktuelle Position des Elements gespeichert
// sein und in "z" eine Zufallszahl zwischen 0 (einschließlich)
// und 1 (ausschließlich).
//
// Tipp: Math.random()
// https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Math/math.random
// Suchen Sie nun im Array "a" das Objekt mit der kleinsten
// und das Objekt mit der größten Zufallszahl und geben Sie
// jeweils die drei Attribute des Objektes im Terminal aus.
//=============================================================================
//== Aufgabe 1.4 ==============================================================
//=============================================================================
terminal.writeLine("Aufgabe 1.4: Hasharray", "h1");
// Erzeugen Sie ein Hasharray "anzahl" (das heißt ein Objekt, dass Sie in einer
// Variablen oder Konstanten namens "anzahl" speichern), das die Schlüssel
// (=Attribute) 'obj0' bis 'obj8' enthält. Für jeden dieser Schlüssel
// soll zunächst der Wert 0 im Hasharray gespeichert sein. Initialisieren
// Sie das Objekt mittels einer Schleife.
// Geben Sie zur Kontrolle alle 10 Schlüssel-Wertpaare, die in "anzahl"
// gespeichert sind, im Terminal aus. Für jeden String 'obj0' bis 'obj8'
// sollte 0 als zugehöriger Wert ausgegeben werden.
// Erzeugen Sie nun 5000 zufällige Integerzahlen zwischen 0 (einschließlich)
// und 8 (einschließlich) und erhöhen Sie jeweils für das zugehörige
// Objekt im Hasharray den gespeicherten Wert um Eins.
// Wenn beispielsweise die Zufallszahl 3 erzeugt wird, soll der Wert
// anzahl['obj3'] um 1 erhöht werden.
//
// Geben Sie anschließend den Inhalt des Hasharrays erneut auf dem
// Terminal aus.
// Überprüfen Sie, ob ihr Algorithmus korrekt funktioniert, indem
// Sie alle im Hasharray gespeicherten Zahlen (mit Hilfe von JavaScript)
// addieren und die Summe im Terminal ausgeben. Die Summe sollte 5000
// betragen.
//=============================================================================
//== Aufgabe 1.5 ===============================================================
//=============================================================================
terminal.writeLine("Aufgabe 1.5: JSON", "h1");
// Korrigieren Sie den Inhalt der Datei "json/config01.json" so, dass dieser
// syntaktisch korrekt ist. Nehmen Sie dabei so wenige Veränderungen
// wie möglich vor.
//
// Importieren Sie anschließend die korrigierte JSON-Datei in diese Datei.
// Geben Sie dem zugehörigen Objekt den Namen "config".
// ACHTUNG: Schreiben Sie Ihren Code im Folgenden so, dass dieser
// auch dann richtige Ergebnisse liefert, wenn sich der
// Inhalt der JSON-Datei geeignet ändert. Beispielsweise
// ist "console.log(5)" keine Lösung für die erste Teilaufgabe,
// da das Array "config.s" zu einem anderen Zeitpunkt auch drei
// oder auch sieben Elemente enthalten könnte. Sie können aber
// davon ausgehen, "config.s" immer existieren wird und immer
// auch ein Array enthalten wird.
//
// Geben Sie im Terminal aus, wie viele Elemente im Array "config.s"
// enthalten sind.