You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
4.4 KiB
162 lines
4.4 KiB
15 years ago
|
#!/usr/bin/env kjscmd
|
||
|
|
||
|
StdDirs.addResourceType("madminute", StdDirs.kde_default("data") + "/madminute");
|
||
|
try {
|
||
|
//var view = Factory.loadui( StdDirs.findResource("madminute", "madminute.ui"), this, mw );
|
||
|
var view = Factory.loadui( "madminute.ui" );
|
||
|
|
||
|
} catch( err ) {
|
||
|
alert( err );
|
||
|
exit(0);
|
||
|
}
|
||
|
var Addition = 1;
|
||
|
var Subtraction = 2;
|
||
|
|
||
|
var config = new Config("madminute");
|
||
|
config.setGroup("Game Options");
|
||
|
// Timer
|
||
|
var timer = new QTimer(this);
|
||
|
// Current Argument 1
|
||
|
var arg1 = 0;
|
||
|
// Current Argument 2
|
||
|
var arg2 = 0;
|
||
|
// Current Operation
|
||
|
var operation = Addition;
|
||
|
// Acceptable operations 1 = Addition 2 = Subtraction 3 = Both
|
||
|
var operations = config.readNumEntry("Operations", Addition);
|
||
|
// Time to run the drill
|
||
|
var drillTime = config.readNumEntry("Drill Time", 60);
|
||
|
// maxInput is maximum value for the numbers in the question
|
||
|
var maxInput = config.readNumEntry("Maximum Input", 10);
|
||
|
var total = 0;
|
||
|
|
||
|
view.connect(view.fileExitAction, 'activated()', application, 'quit()');
|
||
|
view.connect(view.fileGoAction, 'activated()', this, 'start');
|
||
|
view.connect(view.editPreferencesAction, 'activated()', this, 'configure');
|
||
|
view.connect(view.helpAboutAction, 'activated()', this, 'about');
|
||
|
view.connect(view.helpHelpAction, 'activated()', this, 'helpDialog');
|
||
|
|
||
|
|
||
|
view.connect( view.qt_central_widget.answer, 'returnPressed()', this, 'checkAnswer' );
|
||
|
view.connect( timer, 'timeout()', this, 'countdown');
|
||
|
|
||
|
view.qt_central_widget.answer.enabled = false;
|
||
|
|
||
|
view.show();
|
||
|
// Run the main event loop.
|
||
|
application.exec();
|
||
|
|
||
|
function configure()
|
||
|
{
|
||
|
//var configUI = Factory.loadui( StdDirs.findResource("madminute", "configdialog.ui"), this, mw );
|
||
|
var configUI = Factory.loadui( "configdialog.ui" );
|
||
|
configUI.connect( configUI.buttonHelp, 'clicked()', this, 'helpDialog');
|
||
|
configUI.addition.checked = false;
|
||
|
configUI.subtraction.checked == false;
|
||
|
configUI.time.value = drillTime;
|
||
|
configUI.maximum.value = maxInput;
|
||
|
if( operations == 1 )
|
||
|
configUI.addition.checked = true;
|
||
|
if( operations == 2 )
|
||
|
configUI.subtraction.checked = true;
|
||
|
if( operations == 3 )
|
||
|
{
|
||
|
configUI.addition.checked = true;
|
||
|
configUI.subtraction.checked = true;
|
||
|
}
|
||
|
|
||
|
if ( configUI.exec() == 1 )
|
||
|
{
|
||
|
operations = 0;
|
||
|
if( configUI.addition.checked == true )
|
||
|
operations += 1;
|
||
|
if( configUI.subtraction.checked == true )
|
||
|
operations += 2;
|
||
|
drillTime = configUI.time.value;
|
||
|
maxInput = configUI.maximum.value;
|
||
|
config.setGroup("Game Options");
|
||
|
config.writeNumEntry("Operations",operations);
|
||
|
config.writeNumEntry("Drill Time", drillTime );
|
||
|
config.writeNumEntry("Maximum Input", maxInput );
|
||
|
config.sync();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function about()
|
||
|
{
|
||
|
alert("<h2>MadMinute 1.0</h2>A math tutoring drill to help students master basic math skills.<br>Copyright 2004 Ian Reinhart Geiser <a href='mailto:geiseri@kde.org'>geiseri@kde.org</a>");
|
||
|
}
|
||
|
|
||
|
function helpDialog()
|
||
|
{
|
||
|
//var helpUI = Factory.loadui( StdDirs.findResource("madminute", "helpdialog.ui"), this, mw );
|
||
|
var helpUI = Factory.loadui( "helpdialog.ui" );
|
||
|
helpUI.exec();
|
||
|
}
|
||
|
|
||
|
function askQuestion()
|
||
|
{
|
||
|
arg1 = Math.floor( Math.random() * maxInput );
|
||
|
arg2 = Math.floor( Math.random() * maxInput );
|
||
|
if( operations == 3 )
|
||
|
operation = Math.floor( (Math.random() * 2)+1);
|
||
|
else
|
||
|
operation = operations;
|
||
|
|
||
|
var operationText = "";
|
||
|
if( operation == Addition )
|
||
|
operationText = " + ";
|
||
|
else if( operation == Subtraction )
|
||
|
{
|
||
|
operationText = " - ";
|
||
|
if( arg1 < arg2 )
|
||
|
{
|
||
|
var arg = arg1;
|
||
|
arg1 = arg2;
|
||
|
arg2 = arg;
|
||
|
}
|
||
|
}
|
||
|
view.qt_central_widget.question.text = "<h2>" + arg1 + operationText + arg2 + "=</h2>";
|
||
|
}
|
||
|
|
||
|
function checkAnswer( )
|
||
|
{
|
||
|
var answer = 0;
|
||
|
if( operation == Addition )
|
||
|
answer = (arg1 + arg2) ;
|
||
|
else if( operation == Subtraction )
|
||
|
answer = (arg1 - arg2) ;
|
||
|
if( view.qt_central_widget.answer.text == answer )
|
||
|
{
|
||
|
view.qt_central_widget.correct.value++;
|
||
|
}
|
||
|
total++;
|
||
|
askQuestion();
|
||
|
view.qt_central_widget.answer.text = "";
|
||
|
}
|
||
|
|
||
|
function start()
|
||
|
{
|
||
|
askQuestion();
|
||
|
total = 0;
|
||
|
timer.start(1000);
|
||
|
view.fileGoAction.enabled = false;
|
||
|
view.qt_central_widget.answer.enabled = true;
|
||
|
view.qt_central_widget.answer.setFocus();
|
||
|
view.qt_central_widget.timeleft.progress = drillTime;
|
||
|
view.qt_central_widget.correct.value = 0;
|
||
|
}
|
||
|
|
||
|
function countdown()
|
||
|
{
|
||
|
view.qt_central_widget.timeleft.progress--;
|
||
|
if( view.qt_central_widget.timeleft.progress == 0 )
|
||
|
{
|
||
|
timer.stop();
|
||
|
view.fileGoAction.enabled = true;
|
||
|
view.qt_central_widget.answer.enabled = false;
|
||
|
alert( "<h1>Times Up!</h1>You got " + view.qt_central_widget.correct.value + " out of " + total + " questions correct." );
|
||
|
}
|
||
|
}
|
||
|
|