Lohnt es sich jedoch eine Website mit HTML zu erstellen oder soll ich doch zuerst HTML 5 lernen?

HTML 5 ist die aktuelle Version des HTML-Standards. Es ist der Nachfolger von HTML 4. Die Frage ist daher wohl eher, ob HTML 4 oder HTML 5 verwendet werden sollte. In diesem Fall ist die Antwort eindeutig: HTML 5 enthält einige Features, welche sich bei der Nutzung von HTML 4, wenn überhaupt, nur mithilfe von Plugins wie Adobe Flash umsetzen lassen. Zudem sind einige Tags im aktuellen Standard mittlerweile deprecated, d. h. veraltet, und sollten daher nicht mehr verwendet werden.

Und wie schwer ist HTML 5?

Wenn bereits Kenntnisse in HTML 4 existieren, ist es kein großer Aufwand, sich mit HTML 5 vertraut zu machen. Es handelt sich schließlich nicht um eine eigene Sprache, sondern lediglich um eine verbesserte Fassung. Dementsprechend ist HTML 5 auch nicht schwieriger zu erlernen bzw. zu verstehen als bisherige Versionen.

Zu den bedeutendsten Änderungen in HTML 5 gehört Folgendes:

  • Es existieren neue semantische Elemente, mit welchem die Website besser gegliedert werden kann. Anstatt kontextlose Tags wie div oder span zu verwenden, kann nun beispielsweise auf section, article oder nav zurückgegriffen werden.
  • Neue Elemente wie audio, video oder canvas sorgen dafür, dass Multimediafunktionen direkt im HTML-Code definiert werden können und kein Flash oder JavaScript dafür verwendet werden muss.
  • Durch neue Input-Attribute kann auch ohne JavaScript auf einfachem Wege ein Datum, eine Uhrzeit oder eine E-Mail eingegeben werden.
  • Da Elemente wie center nicht mehr zulässig sind, wird eine bessere Trennung zwischen Markup (→ HTML) und Design/Layout (→ CSS) ermöglicht
  • Zahlreiche weitere Verbesserungen, siehe auch https://www.w3.org/TR/html5-diff/

Grob gesagt, ermöglicht HTML 5 eine bessere Trennung von Markup, Design und Funktionalität. Viele Features müssen nun nicht mehr selbst implementiert werden, sondern sie können auf einfachstem Wege in die Seite eingebunden werden. Zudem wird eine bessere Strukturierung ermöglicht. HTML 5 ist der aktuelle Standard und daher sollte auf ihn zurückgegriffen werden, zumal der Aufwand zur Umgewöhnung minimal ist.

...zur Antwort
ich beschäftige mich seit vorgestern mit dem Thema Programmieren- Lernen [...]

Seit vorgestern? Es ist gar nicht so unüblich, dass dir das alles noch sehr schwer fällt und komplex wirkt. In so kurzer Zeit kann man das Programmieren noch gar nicht sinnvoll erlernen. Nimm dir ein paar Monate Zeit, suche dir ein gutes Buch aus und dann wirst du recht schnell merken, dass im Grunde genommen alles sehr logisch aufgebaut ist und teilweise mehr Sinn ergibt als in linguistischen Sprachen. Lass dich jetzt nicht so schnell abschrecken!

warum benutzt man schwer zu verstehende Schlüsselwörter [...]

Welche Schlüsselwörter sind denn schwer zu verstehen? Es handelt sich doch um ganz einfache englische Begriffe. Natürlich sind zumindest grundlegende Englischkenntnisse von Vorteil. Aber jedes Schlüsselwort sagt bereits durch die Bezeichnung genau aus, wofür es gut ist. Beispiele:

  • class → Klasse
  • if → wenn
  • else → sonst
  • while → solange
  • import → importieren
  • new → neu
  • try → versuche
  • int → integer → Ganzzahl
  • ...
[...] und viel schlimmer, so viele Sonderzeichen?

Die Sprache muss eben eindeutig sein und für jeden Zweck benötigt man dementsprechend andere Zeichen. Runde Klammern nutzt man beispielsweise für Parameter bei Methoden oder bei einer Verzweigung (if/else), eckige Klammern benötigt man für Arrays und geschweifte Klammern beschreiben einen Block. Man könnte beispielsweise eckige Klammern einsparen, indem man Beginn und Ende eines Blocks durch entsprechende Schlüsselwörter kennzeichnet oder stattdessen Einrückungen verwendet. Das macht jede Sprache anders.

Wäre es nicht sehr viel einfacher, auf "deutsch", in arabisch oder in chinesischer Schrift zu programmieren, so als würd' ich ein Roman schreiben?

Das ist nicht sonderlich sinnvoll. Dagegen sprechen folgende Gründe:

  • Ineffizienz: Du musst viel mehr tippen, wenn du einen vollständigen Text schreibst. Beispiel:
boolean isEven(int num) {
  if ((num % 2) == 0) {
    return true;
  } else {
    return false;
  }
}

Das ist eine Methode, welche für eine Ganzzahl num zurückliefert, ob diese gerade ist (true) oder nicht (false). In Textform wäre das beispielsweise so:

Im Folgenden beschreibe ich eine neue Methode namens „isEven“, welche eine Ganzzahl namens „num“ übergeben bekommt und einen Wahrheitswert zurückliefert: Es wird überprüft, ob beim Dividieren von „num“ durch zwei als Rest null herauskommt. Ist dies der Fall, liefert die Funktion „wahr“, ansonsten „falsch“ als Rückgabewert zurück.
  • Komplexität: Du willst mit deiner Idee die Komplexität vermindern, doch eigentlich erhöhst du sie nur. Eine Programmiersprache ist eindeutig und Fehler können nicht toleriert werden. Eine linguistische Sprache dagegen ist mehrdeutig, wie soll der Computer, welcher deinen Code verstehen soll, also herausfinden, was genau du meinst? Eine linguistische Grammatik kann von Computern noch nicht so gut interpretiert werden, was z. B. an den fehlerhaften Textübersetzern (z. B. Google Translate) zu sehen ist. Zudem gibt es für manche Sätze teilweise verschiedene Interpretationsmöglichkeiten. Das ist bei Programmiersprachen nicht der Fall.
  • Universalität: Eine Programmiersprache ist universell, denn jeder auf der Welt kann sie verstehen, weil man sie leicht lernen kann. Dadurch können viele Menschen aus unterschiedlichen Ländern an demselben Projekt arbeiten. Nutzt man dagegen eine linguistische Sprache, wäre das nicht möglich, weil erstens diese Sprache extra erlernt werden müsste und zweitens eine Sprache nie perfekt erlernt werden kann, sodass man trotzdem noch einige Fehler macht, was beim Programmieren natürlich fatal wäre.
Warum so kompliziert!?

Warum also so kompliziert? Die Antwort ist, es ist gar nicht so kompliziert, wie es auf den ersten Blick aussieht. Programmiersprachen sind, wenn man sie verstanden hat, sogar sehr logisch aufgebaut und können dadurch sowohl von Mensch als auch Maschine problemlos und ohne Missverständnisse verstanden werden. Es ist wie bei den Noten aus der Musik: Jeder kann das System leicht erlernen, ohne eine neue linguistische Sprache fehlerfrei verstehen zu lernen. Außerdem kann man damit sehr viel mit nur wenigen Zeichen erreichen. Das ist der Grund, weshalb Programmiersprachen so sind, wie sie eben sind. In diesem Sinne:

When someone says: "I want a programming language in which I need only say what I wish done", give him a lollipop. — Alan J. Perlis
...zur Antwort

Bisweilen ist mir das noch nicht passiert. Um das zu verhindern, sollte man immer einen gewissen Abstand halten und wenn dies nicht möglich ist, sollte man das Tempo so verringern, dass der Bremsweg erheblich kürzer wird. Allgemein sollte man, wenn man den Sicherheitsabstand nicht einhalten kann, äußerst aufmerksam fahren, damit die Reaktionszeit minimiert werden kann. Allerdings muss ich auch zugeben, dass hier in der Stadt die Radwege sehr gut ausgebaut sind, sodass man im Grunde genommen fast nur in Wohnsiedlungen auf der Straße fahren muss. Es kann sicherlich sein, dass die Situation an anderen Orten erheblich differiert.

Bisher habe ich mit meinem Fahrrad noch nichts beschädigt, nur mich selbst habe ich schon mal verletzt (z. B. bei Glatteis). Mehrere Male bin ich allerdings schon fast angefahren worden. Der Klassiker ist natürlich, dass man sich auf dem Radweg befindet und über die Straße fährt, während ein Fahrzeug nach rechts abbiegen will. Viele Autofahrer biegen einfach ab, ohne zu gucken, manche sogar, ohne zu blinken.

Letztens ahnte ich schon, dass der Fahrer mich bestimmt nicht sehen wird, und tatsächlich war es genau so. Bremsen hat nicht mehr geholfen, also musste ich ruckartig nach rechts ausweichen. Dabei habe ich fast die Kontrolle über das Vorderrad verloren, konnte es aber irgendwie noch stabilisieren. Der Autofahrer hatte danach jedenfalls schockiert die Hand vor dem Mund. Hoffentlich wird er künftig etwas aufmerksamer sein...

...zur Antwort
[...]ich bin schon seit klein auf Viel mit Computern und habe ein gewisses Gefühl dafür[...]

Das sind schon mal gute Voraussetzungen fürs Programmieren und dies kann dich durchaus beim Lernen unterstützen, jedoch solltest du wissen, dass analytisches Denken und mathematische bzw. logische Fähigkeiten weitaus essentieller sind.

Wie in einigen vorherigen fragen beschrieben lerne ich ja seit einiger Zeit das programmieren

Was bedeutet „seit einiger Zeit“ konkret? Soweit ich das sehe, sollten das bei dir jetzt knapp zwei Monate sein, korrekt? So eine kurze Zeitspanne ist natürlich kaum aussagekräftig, weil man erst einmal einige Zeit benötigt, um ein analytisches Denkvermögen zu entwickeln und sich mit den Grundlagen des Programmierens vertraut zu machen. Ich rate dabei zu einem Buch,

  1. welches auch aktuell ist und nicht aus dem Jahre 2014 stammt.
  2. welches auf Anfänger (≠ Einsteiger!) ausgerichtet ist.

Es kann schon 6-12 Monate dauern, bis man überhaupt die Grundlagen gelernt hat. Man darf es auf keinen Fall überstürzen, sondern sollte sich die Zeit nehmen. Wenn man etwas nicht versteht, kann man nicht einfach weiter machen, in der Hoffnung, dass das nicht so wichtig ist, sondern es ist essentiell, alles so lange zu durchdringen, bis man es vollständig verstanden hat und es anwenden kann. Denn häufig bauen viele weitere Fähigkeiten auf zuvor erlernten Fähigkeiten auf und wenn das Fundament wackelig ist, dann kann dies natürlich nicht durch ein solides Dach ausgeglichen werden, sondern dann ist das gesamte Haus einsturzgefährdet.

Gerade am Anfang ist es wichtig, nicht nur die Programmiersprache zu erlernen, sondern v. a. auch das Entwickeln von Algorithmen. Die Programmiersprache sollte erst einmal nebensächlich bleiben bzw. nicht allzu sehr im Vordergrund stehen. Hilfreich für das analytische Denken können gute Mathematikkenntnisse sein. Ein guter Einstieg kann mithilfe von Struktogrammen geschehen.

Schau dich einfach nach irgendeiner Website um, auf welcher Übungsaufgaben mit zugehörigen Lösungen angeboten werden. Daran kannst du recht schnell erkennen, ob du für das Programmieren geeignet bist oder nicht. Wenn es einem nämlich nach einiger Zeit nicht gelingt, solche Aufgaben zufriedenstellend bewerkstelligen zu können, wird es sehr schwierig, das noch irgendwie zu erlernen. Gut für Übungen mit Struktogrammen ist übrigens das an der University of California, Berkeley entwickelte Snap!.

Außerdem empfehle ich nach einigen Übungen mit Struktogrammen zum Erlernen der Grundlagen von Python mithilfe eines geeigneten Buches zusätzlich auch PythonKara. Das hilft dabei, die Grundlagen der Sprache in der Praxis anzuwenden und gleichzeitig die analytischen Denkfähigkeiten auszubauen. Nicht zuletzt ist anschließend, weil du dich schließlich mit der Spieleentwicklung befassen möchtest, auch Processing ganz gut.

Ich bin nur ein Mensch der immer alles sofort perfekt können will und muss und habe deswegen immer so sorgen wenn ich etwas vom programmier Buch nicht gleich verstehe[...]

Wenn du das notwendige Interesse mitbringst und Spaß an der Sache empfindest, sollte dir bei richtiger Vorgehensweise (oben beschrieben) das Erlernen der Grundlagen des Programmierens keine Probleme bereiten. Analytisches Denkvermögen sollte vorhanden sein und auch gute Mathematikkentnisse können hilfreich sein. Ob du dafür geeignet bist, kannst du nicht in wenigen Wochen beurteilen.

Also stecke den Kopf nicht in den Sand, sondern blicke stets nach vorne. Die Lernphase für die erste Programmiersprache dauert bei jedem unterschiedlich lange und kann durchaus bis zu zwei Jahre andauern. Das ist alles kein Problem! Solltest du etwas nicht sofort verstehen, so versuche es dir einfach erneut klar zu machen. In diesem Kontext können zusätzlich zu einem Buch auch Online-Ressourcen wie ein Artikel, ein Tutorial, eine Stack Overflow-Antwort oder ein Video hilfreich sein. Scheue dich nicht, bei Unklarheiten hier eine Frage zu stellen!

Viel Erfolg beim Lernen! ;-)

...zur Antwort

Die Namen sollten alle in einem Array gespeichert werden. Dann kann man durch das Array gehen und für jeden Buchstaben die Häufigkeit bestimmen. Die Häufigkeit kann in einem Object gespeichert werden. Dieses konstruiert man zunächst folgendermaßen:

var names = ['Name 1', 'Name 2', 'Name 3', /* ... */];
var letters = {};
for (let charCode = 97; charCode <= 122; ++charCode) {
  let char = String.fromCharCode(charCode);
  letters[char] = 0;
}

Nun kann die Häufigkeit folgendermaßen ermittelt werden:

for (let i = 0; i < names.length; ++i) {
  for (let str = names[i].toLowerCase(), j = 0; j < str.length; ++j) {
    let charCode = str.charCodeAt(j);
    if (charCode >= 97 && charCode <= 122) {
      ++letters[str.charAt(j)];
    }
  }
}

Die äußere Schleife durchläuft dabei jeden String, die innere jeden einzelnen Buchstaben des Strings. Für jeden Buchstaben wird anhand des Char-Codes ermittelt, ob es ein Buchstabe ist. Davor werden noch alle Großbuchstaben in Kleinbuchstaben umgewandelt. Für jeden Buchstaben wird der Wert des jeweiligen Attributs des Objects um eins erhöht.

...zur Antwort

Angefangen hat es bei mir im Prinzip in der Bibliothek. Wir haben hier eine sehr gute Stadtbibliothek, in welcher ich in meiner Kindheit sehr viel Zeit verbracht habe. Es gibt eine Informatik-Abteilung, welche über 300 Bücher über Programmierung enthält. Irgendwie war ich fasziniert davon und habe mir damals diese Programmierbücher für Kinder ausgeliehen. Zu dieser Zeit ging ich noch in die Grundschule.

Zudem entwickelte mein Vater eine Website für meine Mutter, welche selbstständig war (er hatte es eher angelernt und war kein richtiger Webentwickler, sondern eigentlich auf Hardware spezialisiert). So habe ich dann in der Zeit von Netscape und Composer HTML gelernt, weil ich selbst Websites entwickeln können wollte. Mich faszinierte es, dass ich mit dem Computer kommunizieren kann, dass ich einem nicht lebenden Objekt mitteilen kann, was es zu tun hat.

Mit der Zeit habe ich dann nicht mehr so viel in die Richtung gemacht, aber als ich aufs Gymnasium ging, erinnerte ich mich daran, was ich mir eigentlich mal vorgenommen habe. Also lernte ich CSS, PHP und JavaScript dazu. Damit habe ich einige Jahre verbracht, in denen ich tausendseitige Bücher und zahlreiche Online-Artikel gelesen sowie viele Projekte umgesetzt habe.

Nun waren PHP und JavaScript schon mal ein guter Einstieg in die Programmierung, aber ich wollte mehr. Damals hatte ich sehr viele Web-Apps und hybride Apps erstellt, doch ich wollte endlich „richtige“ native Apps und Programme schreiben. Also lernte ich Java. Das war auch die Lehrsprache an meiner Schule und durch meine tiefreichenden Kenntnisse war ich anderen Schülern schon deutlich voraus (außer einem, der programmierte auch in der Freizeit). Dies war mein Ausweg aus der Webentwicklung in weitere Sektoren.

Zudem hatte ich das Glück, einen der besten Informatik-Lehrer gehabt zu haben, welcher sehr viel Programmierung und Objektorientierung im Unterricht ansetzte. Im Vergleich zum Kollegen aus NRW muss ich sagen, dass hier in Niedersachsen wohl deutlich mehr Programmierung auf dem Plan steht. Los geht es meist mit Scratch und Lego Mindstorms, dann kommt irgendwann Java.

Allerdings sind ganz klar riesige Unterschiede zwischen den Lehrkräften vorhanden. Es gibt Lehrer, welche nicht einmal Informatik studiert, sondern dies nur so angelernt haben, weil in dem Bereich einfach ein großer Mangel besteht. Lehrer aus einer anderen Stadt, welche den Unterricht mal besuchten, stellten ein vergleichsweise deutlich höheres Niveau bei uns fest. Dies ist vorteilhaft für die guten Schüler, aber bedeutet natürlich auch mehr Arbeit für die etwas schwächeren Schüler. Alles hat seine Vor- und Nachteile. Für mich war es nur ein Vorteil.

Letztendlich habe ich im Unterricht und auch zu Hause sehr viele Zusatzaufgaben bearbeitet und im Grunde genommen schon fast das Studium im Bereich der Programmierung vorweg genommen: Sortieralgorithmen, Suchalgorithmen, Graphenalgorithmen, Datenstrukturen, ein GTR (Infix Evaluator), Java EE und vieles mehr habe ich in der Zeit umgesetzt.

Java war dabei die zentrale Programmiersprache, aber auch C lernte ich über Mikrocontroller aus der Freizeit (hatte damals damit einen Wettbewerb in Niedersachsen gewonnen) kennen. Auf Python stieß ich ebenfalls irgendwie und derweil hatte ich schon recht früh den Wechsel von Windows zu GNU/Linux vollzogen. Und so kamen über die Jahre immer weitere Programmiersprachen, aber auch jede Menge weitere elementare Kenntnisse, welche tatsächlich fast noch wichtiger als die Sprache selbst sind, dazu. Man kann so ein dickes Buch wunderbar in den Urlaub mitnehmen und am Strand lesen. Dann gucken die Leute auch manchmal, aber es hinterlässt eine gebildete Wirkung ;)

Fazit: Lies Bücher (von Online-Tutorials und Videos rate ich stark ab!) und nimm dir ausreichend Zeit, um genügend Erfahrung zu sammeln. Solltest du Interesse daran haben und Spaß am Programmieren empfinden, so sammelt sich das Wissen über die Jahre schon von selbst an. Es gibt immer irgendetwas zu lernen und daher hilft es, zusätzlich sehr viele Blogartikel im Internet zu lesen und auch mal Bücher auszuleihen, welche sich nicht um eine Programmiersprache, sondern um ein bestimmtes Konzept drehen.

Für den Einstieg kann ich dir jedenfalls Java empfehlen, einige empfehlen aber auch Python. Letztendlich ist es deine Entscheidung, womit du anfängst, aber allein schon aufgrund des Prinzips der Objektorientierung, welches in Java wesentlich elementarer verankert ist (v. a. in den Büchern merkt man das daran, dass in Java schon sehr früh die Objektorientierung erklärt wird, in Python erst deutlich später). Das sehe ich als entscheidenden Vorteil im Hinblick auf die Herausbildung eines guten Code-Stils an.

Solltest du noch irgendwelche Fragen haben, melde dich gerne per Kommentar ^_^

...zur Antwort

document.getElementsByTagName liefert ein HTMLCollection-Objekt zurück, denn es können schließlich mehrere Elemente mit demselben Tag im DOM existieren. Der Tag-Name ist im Gegensatz zu einer ID nicht eindeutig. Die einzelnen Elemente kannst du nach folgendem Schema ansprechen (n ist die Anzahl an Elementen mit dem jeweiligen Tag-Namen):

document.getElementsByTagName[0]
document.getElementsByTagName[1]
document.getElementsByTagName[2]
...
document.getElementsByTagName[n-1]

Um also hierbei nur den einen Footer anzusprechen, schreibe Folgendes:

document.getElementsByTagName('footer')[0].innerHTML = 'Hello World';
...zur Antwort

Die allgemeine Form für eine quadratische Funktion ist:

f(x) = a * (x - b)² + d

Eine Verschiebung entlang der x-Achse (b) liegt nicht vor, die Verschiebung entlang der y-Achse beträgt d = 30. Es gilt daher:

f(x) = ax² + 30

Was ist f(x)? Der y-Wert an einer Stelle x. Welche Punkte können wir ganz gut ablesen? Die Nullpunkte. Daher gilt nach dem Einsetzen:

0 = a * 50² + 30

Es genügt hier 50 einzusetzen, da 50² = (-50)² ist. Somit gilt:

0      = 2500 * a + 30  | -30
-30    = 2500 * a       | /2500
-0,012 =        a

Die Parabel, welche die Krümmung des Stützbogens beschreibt, wird also durch folgende Funktion beschrieben:

f(x) = -0,012x² + 30
...zur Antwort
Es soll KEIN Popup sein, sondern sich auf der webseite öffnen.

Das ist aber ein Pop-Up. Umsetzen lässt sich das mithilfe von CSS und JavaScript, denn es gibt dafür kein eigenes HTML-Element. Schau Dir dazu die Beispiele hier an: https://www.w3schools.com/howto/howto_css_modals.asp

...zur Antwort

Die vollständigen Spezifikationen findest du beim W3C.

HTML: https://www.w3.org/TR/html52/

CSS: https://www.w3.org/Style/CSS/specs.en.html

Auch von der WHATWG gibt es Spezifikationen, welche in einigen Aspekten differieren.

HTML: https://html.spec.whatwg.org/

Für JavaScript findest du bei der Ecma die ECMAScript-Spezifikation: https://tc39.github.io/ecma262/

Besser aufbereitete Informationen gibt es bei w3schools sowie beim MDN.

All diese Ressourcen eignen sich keineswegs zum Lernen. Stattdessen rate ich dir zu einem Buch, welches die große Menge an Informationen filtert und gut geordnet in einer sinnvollen Reihenfolge erläutert.

...zur Antwort

Das ist durchaus machbar. Für eine Drop-Down-Liste kannst du dir das OptionMenu ansehen. Wie man E-Mails versenden kann, ist in der Dokumentation beschrieben: https://docs.python.org/3.4/library/email-examples.html Schau dir auch diesen Thread an: https://stackoverflow.com/a/10147497/8292104

Alles Weitere sollte für dich nichts Neues sein.

...zur Antwort

Eine Liste durchläufst du mit:

for dict in l:
  # ...

Nun kannst du den Wert für c abfragen:

c = dict['c']

Jetzt kommt der Trick: Anstatt mit Substrings zu arbeiten, kannst du dir direkt das Trennzeichen (Komma) zu Nutze machen. Dafür gibt es die Funktion split, welche einen String an einem Trennzeichen in eine Liste aufteilt. Uns interessiert der zweite String in dieser Liste:

c.split(',')[1]

Insgesamt ergibt sich also folgender Code:

l = [{'a' : '1,x', 'b' : '2,y', 'c' : '3,z'}]

for dict in l:
  c = dict['c']
  print(c.split(',')[1])

Dieser Code gibt jedes z in der Liste l aus.

...zur Antwort

Am besten nutzt du dafür Klassen, welche du einfach mit JavaScript entfernst oder hinzufügst:

<button onclick="document.getElementById('blurredText').classList.remove('blur');">Text anzeigen</button>
<p id="blurredText" class="blur">Text</p>

Live-Beispiel: https://jsfiddle.net/mpnj6my9/

...zur Antwort

Ich würde nicht für jede Frage eine einzelne Seite erzeugen. Stattdessen solltest du eine Datenstruktur nutzen, bei welcher du ganz einfach weitere Fragen hinzufügen kannst, ohne dass du immer vollständigen HTML-Code schreiben musst. Ein Beispiel: https://jsfiddle.net/9Lhnftgw/

Zum Speichern der Fragen eignet sich ein Array:

var questions = [
  // ...
];

Für jede Frage kann man ein Objekt verwenden:

{
  question: 'Hier der Fragetext',
  answers: [
    {
      text: 'Antworttext',
      imageURL: 'Die Bild-URL',
      correct: true
    },
    // ...
  ]
},
// ...

Für die Antworten wählt man wieder ein Array, weil die Länge der Antwortmöglichkeiten differieren kann. Eine Antwort selbst sollte ein Objekt mit den Eigenschaften text, imageURL sowie correct sein. Über die Eigenschaft correct legt man fest, ob die Antwort richtig oder falsch ist. Bei falschen Antworten kann man diese Eigenschaft einfach weglassen, um Tipparbeit zu sparen.

Nun braucht man nur noch eine Funktion, um die aktuell zu beantwortende Frage anzuzeigen, d. h. in den Frage-Container zu schreiben. Zunächst wird dabei der Container geleert und ein Absatz mit dem Fragetext eingefügt:

container.innerHTML = '';
var question = questions[questionNbr];
var p = document.createElement('p');
p.innerText = question.question;
container.appendChild(p);

Jetzt muss für jede Antwortmöglichkeit eine figure mit dem zugehörigen Bild und der Bildunterschrift (Antworttext) erzeugt werden:

for (var i = 0; i < question.answers.length; ++i) {
  let figure = document.createElement('figure');
  let image = document.createElement('img');
  image.src = question.answers[i].imageURL;
  figure.appendChild(image);
      
  let figcaption = document.createElement('figcaption');
  figcaption.innerText = question.answers[i].text;
  figure.appendChild(figcaption);
     
  // ...
}

Anschließend muss ein Event-Listener eingerichtet werden, welcher auf Mausklicks reagiert:

let correct = question.answers[i].correct;
figure.onclick = function() {
  if (correct !== undefined && correct === true) {
    container.innerHTML = '<p>Richtig!</p>';
    ++questionNbr;
    setTimeout(loadNextQuestion, 2000);
  } else {
    container.innerHTML = '<p>Falsch!</p>';
  }
};
      
container.appendChild(figure);

Dieser Listener überprüft, ob die Antwort korrekt ist oder nicht. Ist sie korrekt, wird der Text "Richtig!" angezeigt und die Fragenummer erhöht. Mittels setTimeout wird nach zwei Sekunden die nächste Frage geladen, indem einfach wieder diese Funktion aufgerufen wird. Ist die Antwort falsch, wird der Text "Falsch!" angezeigt und nichts Weiteres passiert.

Ein vollständiges Beispiel findest du hier.

Die richtigen Antworten sind 1, 2, 3, 4 und 1.

...zur Antwort

Mit LibreOffice lässt sich das zwar machen, ist aber nicht sonderlich professionell. Photoshop oder ein anderes Bildbearbeitungsprogramm würde ich auf keinen Fall nutzen. Es empfiehlt sich ein Desktop-Publishing-Programm wie Adobe InDesign oder, falls du kein Geld ausgeben möchtest, ist Scribus eine sehr gute Alternative.

...zur Antwort

Ja, das lässt sich vielleicht machen, aber mir ist kein automatisches Programm dafür bekannt. Handelt es sich um ein Android-Gerät? Welches genau? Eine Custom-Recovery hast du zufällig nicht installiert und USB-Debugging hast du ebenfalls nicht aktiviert, oder? Wenn der Bootloader offen ist, könnte man ziemlich leicht das Passwort entfernen, ansonsten ist es so gut wie unmöglich.

...zur Antwort

Du verwendest sogenannte Nested Classes. Die offizielle Dokumentation beschreibt:

A nested class is a member of its enclosing class.

Nun ist die main-Methode jedoch statisch. Diese einzelnen Felder sind an ein Objekt bzw. eine Instanz der Klasse gebunden. Damit du diese in der main-Methode also nutzen kannst, gibt es zwei Möglichkeiten.

1. Statische Nested Classes nutzen

Dies würde so aussehen:

static class Motorrad {
  // ...
}

2. Instanziierung der Hauptklasse

Du kannst auch ein Objekt aus der Hauptklasse erstellen und dann darauf zugreifen. Dies würde so aussehen:

JavaApplication1 main = new JavaApplication1();
Motorrad motorrad = main.new Motorrad();
motorrad.motorStarten();

Weitere Hinweise

Bitte beachte stets die Java Conventions. Folgendes solltest du verändern:

  • Bezeichnungen von Klassen beginnen immer mit einem Großbuchstaben.
  • Für Methodenbezeichnungen wird die Kamelhöckerschreibweise verwendet. Daher sollte die Methode hier besser motorStarten heißen.

Außerdem solltest du gemäß des Prinzips der Datenkapselung stets Zugriffsmodifikatoren (public, private, protected) verwenden.

...zur Antwort

Wie sieht dein bisheriger Code aus?

Das Zeichen ">" bedeutet doch, dass dann auf dieses Sache zugegriffen wird?

Das ist selektiert einfach nur Elemente mit einem bestimmten Elternelement. „div > p“ selektiert beispielsweise jeden Absatz, welcher ein direktes Kindelement eines divs ist.

...zur Antwort

In tin ist keine reine Zahl enthalten, sondern als Suffix existiert noch ein „px“, welches du vor dem Parsen entfernen musst:

var tun = parseInt(tin.slice(0, -2));

Achte zudem auf eine sinnvollere Bezeichnung der Variablen und darauf, dass die Bezeichnungen von Funktionen mit einem Kleinbuchstaben beginnen.

...zur Antwort

Ohne den Tatort genauer unter die Lupe nehmen zu können, lässt sich für beides sinnvoll argumentieren. Ich tippe mal auf

Selbstmord!

  1. Das Bild an der Wand zeigt, dass in der Wohnung mal ein Paar gelebt hat. Zudem existiert ein Doppelbett mit zwei Kissen, es gibt zwei Stühle und zwei leere Gläser. Allerdings wissen wir nicht, wann zwei Personen in dieser Wohnung gelebt haben, denn die Gläser könnten schon länger dort stehen. Auch die Position der Krücken, so weit vom Bett entfernt, ist eher ungewöhnlich. Das könnte heißen, dass sie lange nicht mehr benutzt worden sind.
  2. Der Zustand des Betts (ein Kissen in einer anderen Position, Bettdecke auf der offenen Seite stärker hochgeklappt, Sachen über die komplette Bettbreite verteilt) deutet darauf hin, dass in der Wohnung in der Nacht vor dem Tod nur eine Person im Bett geschlafen hat.
  3. Das Opfer ist auf dem Bild an der Wand abgebildet, was darauf hindeutet, dass das Opfer in dieser Wohnung gewohnt hat.
  4. Eine der beiden Personen, die diese Wohnung bewohnt hatten, kann nicht körperlich eingeschränkt gewesen sein, weil irgendjemand das Plakat auf den Kleiderschrank gelegt haben muss. Der Kleiderschrank ist so hoch, dass man davon aufgehen kann, dass eine Person mit Krücken nichts auf den Schrank legen konnte. Zumindest würde ich das aus meiner persönlichen Erfahrung meiner Großmutter nicht zumuten können.
  5. Es gibt kaum Hinweise, welche auf einen Kampf hindeuten. Dies bedeutet, dass sich das Opfer entweder nicht gewehrt hat, was für einen Mord untypisch ist, oder der Mord an einem anderen Ort stattgefunden hat.

Was ist also passiert? – Meine Hypothese

Abends hat das Opfer noch etwas gelesen. Das Opfer hat wohl gelernt, worauf der Stift hindeuten könnte. Die Person konnte sich nicht auf das Lernen konzentrieren, weil sie vom Tod ihres Lebenspartners erschüttert gewesen ist. Der Lebenspartner hat sie nicht verlassen, sonst hätte er die Krücken wohl mitgenommen. Der Lebenspartner ist wahrscheinlich verstorben, möglicherweise an einer Krankheit. Die zwei Gläser bleiben als Erinnerung auf dem Tisch stehen.

Am Morgen klingelte der Wecker um 10 Uhr. Die Person lag noch knapp fünf Minuten im Bett, stand dann auf und schmiss den Wecker vor Wut auf den Boden. Der Wecker ist nicht durch einen Kampf heruntergefallen, denn dann würde er nur auf dem Tisch umkippen, aber nicht auf den Boden fallen. Und wenn er auf den Boden fallen würde, dann nicht unter den Tisch, sondern davor. Jemand muss ihn absichtlich dort hingeworfen haben.

Nun wollte die Person erst einmal duschen, um sich zu beruhigen. Ihre Shorts schmiss sie wütend auf den Boden, beim Shirt war sie schon etwas ruhiger und faltete es. Als sie zurückkehrte, legte sie das Handtuch auf das Bett. Die Person zog sich neue Kleidung an, denn der Kleiderschrank steht noch leicht offen.

Nun sah die Person keinen Ausweg mehr und schrieb einen Abschiedsbrief. Anschließend nahm sie den Hocker vom Schreibtisch und stellte sie unter das Seil, welches sie an der Decke befestigt hatte. Die Person hing sich daran fest und brachte den Stuhl mit den Füßen zum Umkippen. Das ist eine typische Selbstmordmethode.

An der Person sind keine Spuren von einem Kampf zu erkennen: Keine Kratzer, kein Blut, nichts. Die Person nahm den Kopf nicht zurück und versuchte ebenfalls nicht, die Hand zwischen Hals und Seil zu stecken. Es gibt überhaupt kein Indiz, welches darauf hindeutet, dass sich die Person gewehrt hätte. Ich meine, es ist doch nicht so einfach, eine Person so zu töten, es gibt viel einfachere Methoden. Deshalb denke ich, sie wollte also sterben – und zwar, weil der Lebenspartner bereits verstorben ist. Das ist das Tatmotiv und darauf deutet die Situation der Wohnung hin.

Das ist zumindest meine Theorie soweit.

Gegenargumente oder Zustimmung?

...zur Antwort