package ONO::FW::Edu::Apps::Modules::WorksheetMaker::Input::Math;
################################################################################
# COPYRIGHT / LICENSE #
################################################################################
#
# This file is part of the ONO Software Project.
#
# Copyright (C) 2022-2026 Jos Kirps and The Joopita Project [ASBL]
# Copyright (C) 2011-2022 Jos Kirps and Joopita Research ASBL
# Copyright (C) 2006-2011 Jos Kirps and The Joopita Project
# Copyright (C) 2001-2006 Jos Kirps and The WobbleWolf Project
#
# This file, as well as many other parts of the ONO Software Project or
# related elements, are FREE SOFTWARE available under the ARTISTIC LICENSE 2.0.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
# For the full license, see /ono/osr/license/LICENSE.txt, or write to
# jos_AT_kirps_DOT_com or contact_AT_joopita_DOT_com.
#
################################################################################
# END OF COPYRIGHT / LICENSE, HERE COMES THE CODE ... #
################################################################################
#: This module is a front end application module wrapper that has been
#: created for the Morzino Project (morzino.com) and that has been released
#: as Open Source software.
#:
#: Note that this is NOT a self-contained application, it is only a wrapper
#: that makes heavy use of the ONO Perl Framework application engine.
use strict;
use ONO::IO;
use ONO::Lib::Basic;
sub vars {
my $vars_ref = $_[1];
my %vars = %$vars_ref;
my $DEBUG = "This is Ext_Morzino__Apps_V2_WorksheetMaker_InputMath\n";
$ENV{'SCRIPT_NAME'} =~ m~/cgi-bin/local/perl/school/apps/(.*)\.pl$~;
my $app = $1;
$DEBUG .= "app = $app\n";
#app_input_apps_level -> 2
#app_input_class_level -> 42
### GLOBAL VARIABLES...
$vars{'app_input_mulrow_main'} = $vars{'app_input_math_mix_mulrow_main'};
for (my $i = 0; $i < 21; $i++) {
$vars{"app_input_mulrow_$i"} = $vars{"app_input_math_mix_mulrow_$i"};
}
if (int(rand(100)) > 66) {
$vars{'app_input_comma_status'} = $vars{'app_input_math_mix_comma'};
} else {
$vars{'app_input_comma_status'} = "";
}
if ($vars{'app_input_comma_status'} eq "rand") {
$vars{'app_input_comma_status'} = "";
if (int(rand(100)) > 33) {
$vars{'app_input_comma_status'} = 1;
if (int(rand(100)) > 33) {
$vars{'app_input_comma_status'} = 2;
if (int(rand(100)) > 33) {
$vars{'app_input_comma_status'} = 3;
}
}
}
}
$vars{'app_input_tens_barrier'} = $vars{'app_input_math_mix_tens_barrier'};
$vars{'app_input_negative'} = $vars{'app_input_math_mix_negative'};
$vars{'app_input_roundup'} = $vars{'app_input_math_mix_roundup'};
$vars{'app_input_currency'} = $vars{'app_input_math_mix_money'};
if ($vars{'app_input_currency'} eq "") {
$vars{'app_input_currency'} = "eur";
}
### IMAGE COUNT + CALC OPTIONS, ALL SELECTED BY DEFAULT
if (int(rand(100)) > 50) {
$vars{'app_input_type_dots'} = 1;
} else {
$vars{'app_input_type_dotsr'} = 1;
}
$vars{'app_input_type_images'} = 1;
$vars{'app_input_type_rods'} = 1;
if ($vars{'app_input_class_level'} > 20) {
$vars{'app_input_type_stickers'} = 1;
if ($vars{'app_input_class_level'} > 21) {
$vars{'app_input_type_dices'} = 1;
$vars{'app_input_type_money'} = 1;
if ($vars{'app_input_class_level'} > 30) {
$vars{'app_input_type_cards'} = 1;
}
}
}
### ANGLES
if ($app eq "angles") {
$vars{'app_input_angle_0_90'}++;
if ($vars{'app_input_math_mix_angles'} > 90) {
$vars{'app_input_angle_90_180'}++;
if ($vars{'app_input_math_mix_angles'} > 180) {
$vars{'app_input_angle_180_360'}++;
}
}
$vars{'app_input_select_precision'} = $vars{'app_input_math_mix_angles_precision'};
if ($vars{'app_input_math_mix_angles_measuredraw'} =~ /d/) {
$vars{'app_input_learn_draw'}++;
}
if ($vars{'app_input_math_mix_angles_measuredraw'} =~ /m/) {
$vars{'app_input_learn_measure'}++;
}
$vars{'app_input_learn_draw_start'}++;
if ($vars{'app_input_class_level'} < 40) {
$vars{'app_input_learn_draw_start_zero'}++;
}
}
### ARITHMETIC
if ($app eq "arithmetic") {
if ($vars{'app_input_math_mix_midcalc'}) {
$vars{'app_input_extype_status'} = "var";
}
if ($vars{'app_input_math_mix_tricalc'}) {
$vars{'app_input_extype_status'} = "tri";
$vars{'app_input_extype_parentheses'} = $vars{'app_input_math_mix_parentheses'};
if ($vars{'app_input_math_mix_midcalc'} && int(rand(100)) > 50) {
$vars{'app_input_extype_status'} = "var";
}
}
}
### CLOCK
if ($app eq "clock") {
if ($vars{'app_input_math_mix_clock_exclock'} =~ /t/) {
$vars{'app_input_type_clocktime'}++;
}
if ($vars{'app_input_math_mix_clock_exclock'} =~ /i/) {
$vars{'app_input_type_intervals'}++;
}
if ($vars{'app_input_math_mix_clock_measuredraw'} =~ /m/) {
$vars{"app_input_exercise_anadig"}++;
}
if ($vars{'app_input_math_mix_clock_measuredraw'} =~ /d/) {
$vars{"app_input_exercise_digana"}++;
}
if ($vars{'app_input_math_mix_clock'} == 60) {
$vars{'app_input_options_hour'} = 1;
}
if ($vars{'app_input_math_mix_clock'} == 30) {
$vars{'app_input_options_hour'} = 1;
$vars{'app_input_options_half'} = 1;
}
if ($vars{'app_input_math_mix_clock'} == 15) {
$vars{'app_input_options_hour'} = 0;
$vars{'app_input_options_half'} = 1;
$vars{'app_input_options_quarter'} = 1;
}
if ($vars{'app_input_math_mix_clock'} == 5) {
$vars{'app_input_options_hour'} = 0;
$vars{'app_input_options_half'} = 0;
$vars{'app_input_options_5min'} = 1;
}
if ($vars{'app_input_math_mix_clock'} == 1) {
$vars{'app_input_options_hour'} = 0;
$vars{'app_input_options_half'} = 0;
$vars{'app_input_options_quarter'} = 0;
$vars{'app_input_options_mins'} = 1;
}
}
### COMPARE
if ($app eq "compare") {
$vars{'app_input_nums_2'} = 1;
if ($vars{'app_input_class_level'} > 21) {
$vars{'app_input_nums_3'} = 1;
if ($vars{'app_input_class_level'} > 31) {
$vars{'app_input_nums_4'} = 1;
}
}
$vars{'app_input_nums_5'} = 1;
}
### CONVERT
if ($app eq "convert") {
if ($vars{'app_input_comma_status'} =~ /(1|2|3|rand)/) {
$vars{'app_input_allow_comma'} = 1;
}
my @opts = (0,0,0,0,0);
if ($vars{'app_input_math_mix_lengths'}) {
$opts[0] = 1;
}
if ($vars{'app_input_math_mix_areas'}) {
$opts[1] = 1;
}
if ($vars{'app_input_math_mix_volumes'}) {
$opts[2] = 1;
}
if ($vars{'app_input_math_mix_weights'}) {
$opts[3] = 1;
}
if ($vars{'app_input_math_mix_liquids'}) {
$opts[4] = 1;
}
for (my $i = 0; $i < 5; $i++) {
if ($opts[$i]) {
for (my $j = 1; $j < 8; $j++) {
my $exclude;
if ($i == 3 && $j !~ /^(4|5|6|7)$/) {
$exclude++;
}
if ($vars{'app_input_class_level'} < 30 && ($j < 4 || $j > 6)) {
$exclude++;
}
if (!$exclude) {
$vars{"app_input_convdata_${i}_${j}"} = 1
}
}
}
}
}
### COUNT
if ($app eq "count") {
$vars{'app_input_comma_status'} = 0;
$vars{'app_input_execise_count'} = 1;
if ($vars{'app_input_math_mix_draw'}) {
$vars{'app_input_execise_draw'} = 1;
}
}
if ($app eq "math_count_mc") {
$vars{'app_input_comma_status'} = 0;
$vars{'app_input_execise_count'} = 1;
if ($vars{'app_input_math_mix_draw'}) {
$vars{'app_input_execise_draw'} = 1;
}
if (int(rand(100)) > 33) {
$vars{'app_input_execise_num_box'} = 3;
} else {
$vars{'app_input_execise_num_box'} = 2;
}
$vars{'app_input_execise_num_img'} = 1;
}
### FRACTIONS
if ($app eq "fractions") {
$vars{'app_input_range_from'} = 1;
if ($vars{'app_input_range_to'} > 100) {
$vars{'app_input_range_to'} = 100;
}
if ($vars{'app_input_class_level'} < 40) {
$vars{'app_input_op_add'} = 0;
$vars{'app_input_op_sub'} = 0;
$vars{'app_input_op_mul'} = 0;
$vars{'app_input_op_div'} = 0;
if ($vars{'app_input_range_to'} > 15) {
$vars{'app_input_range_to'} = 15;
}
if ($vars{'app_input_class_level'} < 32) {
if ($vars{'app_input_range_to'} > 10) {
$vars{'app_input_range_to'} = 10;
}
}
}
if ($vars{'app_input_class_level'} < 50) {
$vars{'app_input_op_mul'} = 0;
$vars{'app_input_op_div'} = 0;
if ($vars{'app_input_range_to'} > 25) {
$vars{'app_input_range_to'} = 25;
}
if ($vars{'app_input_class_level'} < 42) {
if ($vars{'app_input_range_to'} > 20) {
$vars{'app_input_range_to'} = 20;
}
}
}
$vars{'app_input_extype_status'} = "std";
$vars{'app_input_range_opts'} = 2;
$vars{'app_input_integers'} = 1;
$vars{'app_input_extype_visu'} = 1;
$vars{'app_input_select_level'} = "easy";
if ($vars{'app_input_class_level'} > 30) {
if ($vars{'app_input_class_level'} > 31) {
$vars{'app_input_extype_comp'} = 1;
if ($vars{'app_input_class_level'} > 32) {
$vars{'app_input_range_opts'} = "auto";
$vars{'app_input_select_level'} = "mid";
if ($vars{'app_input_class_level'} > 40) {
$vars{'app_input_extype_calc'} = 1;
if ($vars{'app_input_class_level'} > 42) {
$vars{'app_input_extype_numb'} = 1;
$vars{'app_input_extype_redu'} = 1;
}
}
}
if ($vars{'app_input_class_level'} > 31) {
$vars{'app_input_select_level'} = "hard";
}
}
}
if ($vars{'app_input_class_level'} > 40 && $vars{'app_input_math_mix_midcalc'}) {
$vars{'app_input_extype_status'} = "mix";
}
}
### GEOMETRY
if ($app eq "geometry") {
$vars{'app_input_exercise_name'} = 1;
if ($vars{'app_input_math_mix_geometry_measuredraw'} =~ /m/) {
$vars{'app_input_mode_measure'} = 1;
}
if ($vars{'app_input_math_mix_geometry_measuredraw'} =~ /d/) {
$vars{'app_input_mode_draw'} = 1;
}
if ($vars{'pp_input_math_mix_areas'}) {
$vars{'app_input_exercise_area'} = 1;
}
if ($vars{'app_input_math_mix_perimeter'}) {
$vars{'app_input_exercise_peri'} = 1;
}
$vars{'app_input_shape_use_rectangle'} = 1;
$vars{'app_input_shape_use_square'} = 1;
if ($vars{'app_input_math_mix_geometry_triangles'}) {
$vars{'app_input_shape_use_triangle'} = 1;
$vars{'app_input_exercise_peri_tri'} = 1;
}
if ($vars{'app_input_math_mix_geometry_circles'}) {
$vars{'app_input_shape_use_circle'} = 1;
$vars{'app_input_exercise_peri_tri'} = 1;
}
if ($vars{'app_input_math_mix_geometry'} =~ /(01|05)/) {
$vars{'app_input_precision_status'} = $vars{'app_input_math_mix_geometry'};
}
$vars{'app_input_pi_status'} = 31415;
}
### IMAGE CALC
if ($app eq "image_calc") {
$vars{'app_input_comma_status'} = 0;
if ($vars{'app_input_apps_level'} == 1) {
$vars{'app_input_display_numbers'} = 1;
$vars{'app_input_display_result_image'} = 1;
}
if ($vars{'app_input_class_level'} < 20) {
$vars{'app_input_display_result_image'} = 1;
}
}
### MATH - ABACUS
if ($app eq "math_abacus") {
$vars{'app_input_options_write'} = 1;
if ($vars{'app_input_math_mix_draw'}) {
$vars{'app_input_options_draw'} = 1;
}
if (int(rand(100)) > 66) {
$vars{'app_input_op_add'} = 0;
$vars{'app_input_op_sub'} = 0;
}
}
### MATH - BOXES
if ($app eq "math_boxes") {
# no opts required here...
}
### MATH - FILLIN
if ($app eq "math_fillin") {
$vars{'app_input_rows'} = 1 + int(rand(2));
$vars{'app_input_cols'} = 3 + int(rand(5));
$vars{'app_input_cols_max'} = 3 + int(rand(5));
}
### MATH - HOUSES
if ($app eq "math_houses") {
$vars{'app_input_extype_status'} = "std";
if ($vars{'app_input_class_level'} < 30) {
$vars{'app_input_range_mode'} = "list";
$vars{'app_input_range_list'} = "5,10";
if (int(rand(100)) > 50) {
$vars{'app_input_range_list'} = "4,5,6,7,8,9,10";
}
if (int(rand(100)) > 50 && $vars{'app_input_apps_level'} > 2) {
$vars{'app_input_range_list'} = "5,10,15,20";
}
if ($vars{'app_input_class_level'} > 21) {
$vars{'app_input_range_list'} = "5,10,15,20";
if (int(rand(100)) > 50) {
$vars{'app_input_range_list'} = "10,20,30,40,50";
}
if (int(rand(100)) > 50) {
$vars{'app_input_range_mode'} = "default";
}
}
}
if ($vars{'app_input_class_level'} > 31 && int(rand(100)) > 50) {
$vars{'app_input_extype_status'} = "tri";
}
}
if ($app eq "math_houses_img") {
$app = "math_houses_img";
if (int(rand(100)) < 50) {
$vars{'app_input_range_mode'} = "list";
$vars{'app_input_range_list'} = "5,10,15,20";
} else {
$vars{'app_input_range_mode'} = "default";
if ($vars{'app_input_range_from'} < 1 || $vars{'app_input_range_from'} > 19) {
$vars{'app_input_range_from'} = 1;
$vars{'app_input_range_to'} = 20;
}
if ($vars{'app_input_range_to'} < 1 || $vars{'app_input_range_to'} > 20) {
$vars{'app_input_range_from'} = 1;
$vars{'app_input_range_to'} = 20;
}
}
$vars{'app_input_display_images'} = "random";
$vars{'app_input_display_num_subs'} = "random";
$vars{'app_input_display_num_sum'} = 1;
$vars{'app_input_type_dices'} = 1;
$vars{'app_input_type_dots'} = 1;
$vars{'app_input_type_dotsr'} = 1;
$vars{'app_input_type_rods'} = 1;
}
### MATH - RODS
if ($app eq "math_rods") {
$vars{'app_input_comma_status'} = 0;
$vars{'app_input_multiply_mul'} = "1_10";
for (my $r = 1; $r < 11; $r++) {
if ($vars{"app_input_math_mix_mulrow_$r"}) {
$vars{"app_input_mulrow_$r"} = 1;
}
}
$vars{'app_input_count_from'} = $vars{'app_input_range_from'};
$vars{'app_input_count_to'} = $vars{'app_input_range_to'};
if ($vars{'app_input_count_from'} > 100 || $vars{'app_input_count_to'} > 100) {
$vars{'app_input_count_from'} = 10;
$vars{'app_input_count_to'} = 100;
}
my @opts = (5,10);
if ($vars{'app_input_range_to'} > 14) {
@opts = (@opts,15);
}
if ($vars{'app_input_range_to'} > 19) {
@opts = (@opts,20);
}
my $opts_num = @opts;
$vars{'app_input_always_number'} = $opts[int(rand($opts_num))];
if (int(rand(100)) > 66) {
$vars{'app_input_always_number'} = 5+int(rand($vars{'app_input_range_to'})-5);
}
if ($vars{'app_input_always_number'} < 5 || $vars{'app_input_always_number'} > 20) {
$vars{'app_input_always_number'} = 10;
}
my @opts = ('count');
if ($vars{'app_input_op_add'} || $vars{'app_input_op_sub'}) {
if ($vars{'app_input_class_level'} < 20) {
@opts = (@opts,'count','always','calc');
}
if ($vars{'app_input_class_level'} == 21) {
@opts = (@opts,'always','always','calc','calc');
}
if ($vars{'app_input_class_level'} > 21) {
@opts = ('always','calc','calc','calc');
}
}
if ($vars{'app_input_op_mul'} > 0) {
@opts = (@opts,'multiply');
}
if ($vars{'app_input_class_level'} > 22 && $vars{'app_input_op_mul'} > 0) {
@opts = ('multiply');
}
my $opts_num = @opts;
$vars{'app_input_type'} = $opts[int(rand($opts_num))];
}
### MATH - STEPS
if ($app eq "math_steps") {
$vars{'app_input_avoid_zero'} = 1;
$vars{'app_input_type_arrows'} = 1;
$vars{'app_input_type_boxes'} = 1;
$vars{'app_input_type_rows'} = 1;
$vars{'app_input_autofill_1'} = "none";
foreach my $opt (22,31,32) {
if ($vars{'app_input_class_level'} < $opt && int(rand(100)) > 80) {
$vars{'app_input_autofill_1'} = "steps";
}
}
$vars{'app_input_num_mode'} = 0;
if ($vars{'app_input_tens_barrier'}) {
$vars{'app_input_num_mode'} = 1;
}
if ($vars{'app_input_class_level'} < 30) {
if (int(rand(100)) > 50) {
$vars{'app_input_num_mode'} = 4;
}
if ($vars{'app_input_class_level'} < 22) {
if (int(rand(100)) > 50) {
$vars{'app_input_num_mode'} = 4;
}
}
}
if ($vars{'app_input_range_to'} > 100) {
if (int(rand(100)) > 66) {
$vars{'app_input_num_mode'} = 2;
if (int(rand(100)) > 50) {
$vars{'app_input_num_mode'} = 3;
}
}
}
}
### MATH - TRAINS
if ($app eq "math_trains") {
if ($vars{'app_input_class_level'} < 22) {
if (($vars{'app_input_apps_level'} < 3 && $vars{'app_input_op_add'}) || $vars{'app_input_apps_level'} < 2) {
$vars{'app_input_op_add'} = 1;
$vars{'app_input_op_sub'} = 0;
}
$vars{'app_input_inter_empty'} = 0;
if ($vars{'app_input_apps_level'} > 2) {
$vars{'app_input_inter_empty'} = 1;
}
}
if ($vars{'app_input_class_level'} > 21 && $vars{'app_input_apps_level'} > 1) {
$vars{'app_input_inter_empty'} = 1;
}
}
### MATH - WALLS
if ($app eq "math_walls") {
$vars{'app_input_extype_status'} = 3;
if ($vars{'app_input_range_to'} > 50) {
$vars{'app_input_extype_status'} = 4;
}
}
### MEASURE
if ($app eq "measure") {
$vars{'app_input_range_from'} = 0;
$vars{'app_input_range_to'} = 16;
$vars{'app_input_opt_grid'} = 1;
$vars{'app_input_select_precision'} = $vars{'app_input_math_mix_geometry'};
$vars{'app_input_select_units'} = "cm";
if ($vars{'app_input_select_precision'} < 10) {
$vars{'app_input_select_units'} .= "mm";
}
if ($vars{'app_input_math_mix_geometry_measuredraw'} =~ /m/) {
$vars{'app_input_learn_measure'} = 1;
}
if ($vars{'app_input_math_mix_geometry_measuredraw'} =~ /d/) {
$vars{'app_input_learn_draw'} = 1;
$vars{'app_input_learn_draw_start'} = 1;
}
}
### MONEY
if ($app eq "money") {
my @extypes = ('count','compare');
if ($vars{'app_input_op_add'} > 0) {
@extypes = (@extypes,'calc_add');
}
if ($vars{'app_input_op_sub'} > 0) {
@extypes = (@extypes,'calc_sub');
}
$vars{'app_input_max'} = 2;
if ($vars{'app_input_class_level'} > 20) {
$vars{'app_input_max'} = 3;
}
if ($vars{'app_input_class_level'} > 21) {
$vars{'app_input_max'} = 4;
@extypes = (@extypes,'give');
}
if ($vars{'app_input_class_level'} > 30) {
$vars{'app_input_max'} = 5;
@extypes = (@extypes,'return');
}
my $extypes_num = @extypes;
$vars{'app_input_exercise'} = $extypes[int(rand($extypes_num))];
my $curr = $vars{'app_input_math_mix_money'};
my $curr_input = "app_input_use_element_$curr";
$vars{"${curr_input}_c001"} = 0;
$vars{"${curr_input}_c002"} = 0;
$vars{"${curr_input}_c005"} = 0;
$vars{"${curr_input}_c010"} = 0;
$vars{"${curr_input}_c020"} = 0;
$vars{"${curr_input}_c050"} = 0;
$vars{"${curr_input}_e001"} = 1;
$vars{"${curr_input}_e002"} = 1;
$vars{"${curr_input}_e005"} = 1;
$vars{"${curr_input}_e010"} = 0;
$vars{"${curr_input}_e020"} = 0;
$vars{"${curr_input}_e050"} = 0;
$vars{"${curr_input}_e100"} = 0;
$vars{"${curr_input}_e200"} = 0;
$vars{"${curr_input}_e500"} = 0;
if ($vars{'app_input_class_level'} > 21) {
if (int(rand(100)) > 50 || $vars{'app_input_class_level'} > 22) {
$vars{"${curr_input}_c010"} = 1;
$vars{"${curr_input}_c020"} = 1;
$vars{"${curr_input}_c050"} = 1;
}
if ($vars{'app_input_class_level'} > 30) {
if (int(rand(100)) > 50 || $vars{'app_input_class_level'} > 31) {
$vars{"${curr_input}_c001"} = 1;
$vars{"${curr_input}_c002"} = 1;
$vars{"${curr_input}_c005"} = 1;
}
}
}
if ($vars{'app_input_range_to'} > 15) {
$vars{"${curr_input}_e010"} = 1;
if ($vars{'app_input_range_to'} > 30) {
$vars{"${curr_input}_e020"} = 1;
if ($vars{'app_input_range_to'} > 75) {
$vars{"${curr_input}_e050"} = 1;
if ($vars{'app_input_range_to'} > 150) {
$vars{"${curr_input}_e100"} = 1;
}
if ($vars{'app_input_range_to'} > 250) {
$vars{"${curr_input}_e200"} = 1;
}
}
}
}
}
### MULTIPLY
if ($app eq "multiply") {
$vars{'app_input_extype_images'} = 1;
$vars{'app_input_extype_images_opts'} = "di";
$vars{'app_input_extype_status'} = "std";
$vars{'app_input_mulrow_main'} = "2:5:10";
for (my $r = 1; $r < 11; $r++) {
$vars{"app_input_mulrow_$r"} = 1;
}
if ($vars{'app_input_class_level'} > 21) {
$vars{'app_input_extype_calculate'} = 1;
}
if ($vars{'app_input_class_level'} > 30) {
$vars{'app_input_mulrow_main'} = "0-10";
}
if ($vars{'app_input_class_level'} > 31) {
$vars{'app_input_extype_status'} = "mix";
}
if ($vars{'app_input_class_level'} > 40) {
$vars{'app_input_mulrow_main'} = "0-20";
$vars{'app_input_extype_images'} = 0;
$vars{'app_input_extype_status'} = "var";
if ($vars{'app_input_class_level'} > 40) {
$vars{'app_input_mulrow_main'} = "0-50";
}
}
if ($vars{'app_input_class_level'} > 42) {
for (my $r = 11; $r < 20; $r++) {
$vars{"app_input_mulrow_$r"} = 1;
}
$vars{'app_input_mulrow_main'} = "0-100";
}
}
### NUMBER LINE
if ($app eq "number_line") {
my @alts = (4,12);
if ($vars{'app_input_class_level'} > 30) {
@alts = (4,12,16);
}
my $alts_num = @alts;
$vars{'app_input_num_of_items_status'} = $alts[int(rand($alts_num))];
$vars{'app_input_exercise_draw'} = 1;
$vars{'app_input_exercise_write'} = 1;
$vars{'app_input_ruler_labels'} = "all";
$vars{'app_input_steps'} = "int";
$vars{'app_input_random_number_order_disable'} = 1;
if ($vars{'app_input_class_level'} > 21) {
$vars{'app_input_random_number_order_disable'} = 0;
$vars{'app_input_ruler_labels'} = "random";
}
if ($vars{'app_input_math_mix_negative'}) {
$vars{'app_input_posneg'} = "mix";
}
}
### PATTERNS
if ($app eq "patterns") {
$vars{'app_input_guide_lines'} = 1;
$vars{'app_input_rows'} = 2 + int(rand(2));
$vars{'app_input_cols'} = 2 + int(rand(2));
my $max_c = 4;
if ($vars{'app_input_class_level'} > 20) {
$max_c = 5;
$vars{'app_input_rows'} = 2 + int(rand(3));
$vars{'app_input_cols'} = 2 + int(rand(2));
if ($vars{'app_input_class_level'} > 21) {
$max_c = 6;
$vars{'app_input_cols'} = 2 + int(rand(3));
if ($vars{'app_input_class_level'} > 30) {
$max_c = 7;
$vars{'app_input_rows'} = 3 + int(rand(3));
$vars{'app_input_cols'} = 3 + int(rand(3));
if (int(rand(100)) > 50 || $vars{'app_input_apps_level'} == 3) {
$vars{'app_input_guide_lines'} = 0;
}
if ($vars{'app_input_class_level'} > 40) {
$max_c = 8;
$vars{'app_input_rows'} = 3 + int(rand(4));
}
}
}
}
my @colors = (
'white',
'blue',
'green',
'red',
'yellow',
);
if ($vars{'app_input_class_level'} > 20) {
@colors = (@colors,'orange','brown');
}
if ($vars{'app_input_class_level'} > 30) {
@colors = (@colors,'black','grey');
}
@colors = ONO::Lib::Basic->randomize_array(@colors);
for (my $c = 0; $c < $max_c; $c++) {
$vars{"app_input_color_$colors[$c]"} = 1;
}
}
### REGROUP
if ($app eq "regroup") {
$vars{'app_input_select_dots_max'} = 20;
$vars{'app_input_layout_0'} = 3;
if ($vars{'app_input_class_level'} > 21) {
if (int(rand(100)) > 66) {
$vars{'app_input_layout_0'} = 2;
}
}
}
### ROMAN NUMERALS
if ($app eq "roman_numerals") {
$vars{'app_input_comma_status'} = 0;
$vars{'app_input_decrom'} = 1;
$vars{'app_input_romdec'} = 1;
}
### WRITE NUMBERS
if ($app eq "write_numbers") {
$vars{'app_input_type'} = "num";
$vars{'app_input_num_0'} = $vars{'app_input_range_from'}+int(rand($vars{'app_input_range_to'}-$vars{'app_input_range_from'}));
if ($vars{'app_input_range_to'} > 9) {
$vars{'app_input_num_0'} = "mix";
}
$vars{'app_input_layout'} = 1;
$vars{'app_input_layout_char_0'} = int(rand(2));
$vars{'app_input_layout_row_0'} = "random";
}
### WRITTEN CALC
if ($app eq "written_calc") {
if ($vars{'app_input_class_level'} < 40 && $vars{'app_input_apps_level'} < 3) {
if ($vars{'app_input_op_add'} || $vars{'app_input_op_sub'}) {
$vars{'app_input_op_mul'} = 0;
$vars{'app_input_op_div'} = 0;
}
}
}
### ALL APPS DONE
return ($DEBUG,\%vars);
}
###################################################################
#### THAT'S IT :-D
###################################################################
1;
__END__