236 lines
6.6 KiB
Plaintext
236 lines
6.6 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "fdc1fa62-d57a-4eb1-801e-3fcbe3cc9c89",
|
|
"metadata": {
|
|
"editable": true,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"# Schneckenrennen\n",
|
|
"\n",
|
|
"Es treten mehrere Rennschnecken in einem Schneckenrennen gegeneinander an.\n",
|
|
"\n",
|
|
"Hinweis: es gibt hierbei keine automatisierten Tests, ihr müsst selbst anhand der Beispiel-Programmierung erkennen, ob eure Programmierung richtig ist!"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "54c6e6e3-c1e0-4728-9ea5-24523b1a2142",
|
|
"metadata": {
|
|
"editable": false,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"## 1. Klasse `Rennschnecke`\n",
|
|
"\n",
|
|
"Rennschnecken sollen folgene Eigenschafen besitzen:\n",
|
|
"* einen Namen (z.B. \"Frieda\")\n",
|
|
"* eine Rasse (z.B. \"braune Rakete\")\n",
|
|
"* eine Maximalgeschwindigkeit (d.h. maximale Veränderung der Strecke pro Schritt)\n",
|
|
"* die Schnecke soll wissen, welche Strecke sie bereits zurückgelegt hat\n",
|
|
"\n",
|
|
"Erstelle für die Klasse `Rennschnecke` einen Konstruktor. Die Maximalgeschwindigkeit soll dabei einen zufälligen Wert zwischen 0 und 5 bekommen (Tipp: `Math.random()`), die zurückgelegte Strecke soll zu Beginn natürlich 0 sein.\n",
|
|
"\n",
|
|
"Lege eine Methode `krieche()` an, welche die Schnecke abhängig von ihrer Maximalgeschwindigkeit eine zufällige Strecke weiter bewegt. Soll heißen: sie kriecht eine zufällige Strecke größer null und kleiner ihrer Maximalgeschwindigkeit (Tipp: `Math.random() * maximalgeschwindigkeit`)\n",
|
|
"\n",
|
|
"Lege außerdem eine Methode toString() an, welche die Daten der Schnecke mit `return` als String zurückgibt:\n",
|
|
"```\n",
|
|
"Frieda (braune Rakete) hat bisher 17.5cm zurückgelegt\n",
|
|
"```"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "raw",
|
|
"id": "0e0d97e5-3c2f-4c4e-bef6-8a2c3a430860",
|
|
"metadata": {
|
|
"editable": true,
|
|
"raw_mimetype": "",
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Klasse \"Rennschnecke\":\n",
|
|
"\n",
|
|
"Attribute:\n",
|
|
"*\n",
|
|
"\n",
|
|
"Methoden:\n",
|
|
"*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "2800c9bf-7aa4-43dc-8008-1fb564ff2f43",
|
|
"metadata": {
|
|
"editable": true,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Rennschnecke {\n",
|
|
"}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1a0ddceb-f579-4f22-ac70-9a8f3477ad3d",
|
|
"metadata": {
|
|
"editable": false,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"// Beispiel-Programmierung statt Testläufe\n",
|
|
"// Diese Programmierung sollte problemlos durchlaufen und ihr müsst aufgrund der Ausgabe selbst entscheiden, ob eure Programmierung richtig ist!\n",
|
|
"\n",
|
|
"// neue Rennschnecke anlegen\n",
|
|
"let s = new Rennschnecke(\"Frieda\", \"braune Rakete\")\n",
|
|
"// ausgeben\n",
|
|
"console.log( s.toString() )\n",
|
|
"// kriechen lassen -> soll keine Ausgabe erzeugen\n",
|
|
"s.krieche()\n",
|
|
"// nochmal mit neuer Strecke neu ausgeben\n",
|
|
"console.log( s.toString() )"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3e58a0c6-e234-4b1c-8ab5-f91f15041534",
|
|
"metadata": {
|
|
"editable": false,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"## 2. Klasse `Rennen`\n",
|
|
"\n",
|
|
"Ein Rennen hat folgende Eigenschaften:\n",
|
|
"* einen Namen\n",
|
|
"* die teilnehmenden Schnecken selbst - lege hier 5 Schnecken an!\n",
|
|
"* die Länge der zu kriechenden Strecke\n",
|
|
"\n",
|
|
"Überlege dir, welche dieser Werte bereits im Konstruktor gesetzt werden sollten.\n",
|
|
"\n",
|
|
"Lege eine Methode `toString()` an, welche die Daten des Rennens mit `return` als String zurückgibt in der Form:\n",
|
|
"```\n",
|
|
"Beim Rennen \"großer Preis\" steht es aktuell:\n",
|
|
"* Frieda (braune Rakete) hat bisher 17.5cm zurückgelegt\n",
|
|
"* Gunter (schleimiger Kriecher) hat bisher 14.9cm zurückgelegt\n",
|
|
"```\n",
|
|
"(Tipp: verwende für die Ausgabe der einzelnen Schnecken deren `toString()`-Methode.)\n",
|
|
"\n",
|
|
"Lege eine Methode `lasseSchneckenKriechen()` an, welche alle teilnehmenden Schnecken einmal kriechen lässt (also bei jeder Schnecke die `kriechen()`-Methode aufruft).\n",
|
|
"\n",
|
|
"Lege eine Methode `durchfuehren()` an, welche so lange `lasseSchneckenKriechen()` aufruft, bis eine der Schnecken das Ziel erreicht hat. Die Gewinnerschnecke soll dabei mit `return` zurückgegeben werden."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "raw",
|
|
"id": "31fcd095-b08b-4953-b40b-dbf0b2515e50",
|
|
"metadata": {
|
|
"editable": true,
|
|
"raw_mimetype": "",
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"source": [
|
|
"Klasse \"Rennen\"\n",
|
|
"\n",
|
|
"Attribute:\n",
|
|
"*\n",
|
|
"\n",
|
|
"Methoden:\n",
|
|
"*"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "255c6ac2-1589-475a-8ab0-e83b49aec82c",
|
|
"metadata": {
|
|
"editable": true,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"class Rennen {\n",
|
|
"}"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "9c9e0e6b-8d42-4c72-ab4e-e0b609895077",
|
|
"metadata": {
|
|
"editable": false,
|
|
"slideshow": {
|
|
"slide_type": ""
|
|
},
|
|
"tags": []
|
|
},
|
|
"outputs": [],
|
|
"source": [
|
|
"// Beispiel-Programmierung statt Testläufe\n",
|
|
"// Diese Programmierung sollte problemlos durchlaufen und ihr müsst aufgrund der Ausgabe selbst entscheiden, ob eure Programmierung richtig ist!\n",
|
|
"\n",
|
|
"// Rennen anlegen, Länge: 100cm\n",
|
|
"let r = new Rennen(\"großer Preis\", 100)\n",
|
|
"// ausgeben\n",
|
|
"console.log( r.toString() )\n",
|
|
"// alle Schnecken einmal kriechen lassen -> soll selbst keine Ausgabe erzeugen\n",
|
|
"r.lasseSchneckenKriechen()\n",
|
|
"// nochmals ausgeben\n",
|
|
"console.log( r.toString() )\n",
|
|
"// Dann Rennen komplett durchführen -> soll selbst keine Ausgabe erzeugen\n",
|
|
"let sieger = r.durchfuehren()\n",
|
|
"// Sieger ausgeben\n",
|
|
"console.log( \"Gewonnen hat:\" )\n",
|
|
"console.log( sieger.toString() )"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Deno",
|
|
"language": "typescript",
|
|
"name": "deno"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": "typescript",
|
|
"file_extension": ".ts",
|
|
"mimetype": "text/x.typescript",
|
|
"name": "typescript",
|
|
"nbconvert_exporter": "script",
|
|
"pygments_lexer": "typescript",
|
|
"version": "5.8.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|