[3] Die erste Matheaufgabe

Hey there.
Da bist du ja wieder. Ich freue mich schon auf den heutigen Blog.
Denn heute geht es endlich um die eigentliche Matheaufgabe.

desk

Ich hab dir ja erzählt, dass ich erst ein Mal alle 15 Sekunden eine neue Aufgabe ausgeben will, oder?
Genau dazu hab ich mich mal schlau gemacht.
Was ich herausgefunden habe ist folgendes:

Es gibt in JavaScript eine Funktion namens setTimeout(function(), time), die als Parameter zum einen eine Funktion erwartet. Die Funktion die später ausgeführt wird. Und zum anderen die Zeit nach der die Funktion ausgeführt wird. Die Zeit selbst übergibt man in Millisekunden.

var appBot = KnuddelsServer.getDefaultBotUser();
var solution;
var equation;
var equationRunning = false;

function createNewMathEquation()
{
var parts = Math.floor((Math.random() * 10) + 1);
var equationNew;
var solutionNew;

var firstNumber = Math.floor((Math.random() * 10) + 1);
equationNew = firstNumber;
solutionNew = firstNumber;

for(var i = 0; i < parts; i++)
{
var operatorNumber = Math.floor((Math.random() * 2) + 1);
var operator;
if(operatorNumber==1)
{
operator = ' + ';
var number = Math.floor((Math.random() * 10) + 1);
equationNew = equationNew + operator + number;
solutionNew = solutionNew + number;
}
if(operatorNumber==2)
{
operator = ' – ';
var number = Math.floor((Math.random() * 10) + 1);
equationNew = equationNew + operator + number;
solutionNew = solutionNew – number;
}
}

equationRunning = true;
equation = equationNew;
solution = solutionNew;

appBot.sendPublicMessage('____________________ DIESE RUNDE IST LEIDER VORBEI _______________________');
appBot.sendPublicMessage('Die neue Aufgabe lautet: Was ergibt ' + equation);

setTimeout(function startNewRound(){createNewMathEquation();}, 15000);

return equationNew;
}

Wie du siehst hab ich die Funktion setTimeout(function(), time) gleich verwendet um createNewMathEquation() immer wieder aufzurufen.
Du hast ganz Recht. Oben steht ja auch noch etwas Neues.

var appBot = KnuddelsServer.getDefaultBotUser();

Macht nichts anderes als den mit dem Channel verknüpften Bot zu holen und ihn in der Variable appBot abzulegen.
Ich hab nämlich rausgefunden, dass man um öffentliche Nachrichten zu verschicken, den Bot der App braucht. Weil der ja quasi in den Channel schreibt.

Das wars auch schon fast:
Wenn die Funktion createNewMathEquation() ein Mal läuft, ruft sie sich immer wieder von selbst auf.
Aber was wenn sie noch nicht läuft? Naja, dann muss man sie ein mal selbst aufrufen…
Ich hab mir folgendes gedacht:

App.onUserJoined = function(user)
{
user.sendPrivateMessage(‚Hey, cool dass du da bist!‘);
if (equationRunning == false)
{
createNewMathEquation();
}
else
{

}
};

Was passiert hier?
Wenn ein User den Channel betritt wird überprüft ob gerade eine Mathegleichung läuft oder nicht.
Falls nein: Starte ich eine.
Falls ja: Tue ich nichts.

Tada!
Blos schade, dass die Antworten auf aktuelle Mathefragen noch nicht geprüft werden…
Aber genau darum geht es ja im nächsten Blogeintrag.
Bis gleich dann 🙂

Liebe Grüße, MarvinDerPraktikant.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s