Как я могу исправить этот интерфейс калькулятора? (Javascript от code.org) Я объясню ниже - PullRequest
0 голосов
/ 17 ноября 2018

Хорошо, так что это моя первая программа, которую я когда-либо делал, и это был побочный проект, который я пытаюсь сделать в моем классе средней школы.Так что я не знаю, как объяснить проблему так хорошо, так что вот ссылка на код и программу.https://studio.code.org/projects/applab/NXVTYdQ5srab3hWcx_ihgrR6qIDuYTnXYE3NfBxxMPQ

Проблема, с которой я столкнулся сейчас, заключается в том, что, как только вы нажмете одну из кнопок, например, элементарную математику, а затем нажмите кнопку возврата назад, а затем нажмите ее снова, она создаст дубликат под ним.Как мне это исправить?

Вот код, если вы не хотите идти по ссылке: (и, пожалуйста, оставьте любые предложения)

  button("basicMath","BasicMath");
  button("Der/Int","d/dx/ ∫");
  button("QF","Quadratic Formula");

var total = 0;

write("IF USING 'd/dx' or '∫', first input = base number, second = exponent");
write("IF USING EXPONENTS then first input = base number, second = exponent");

  onEvent("basicMath", "click", function() {  // OPTIONS FOR MATH 
   setScreen("BasicMath");

  textInput("num1","0"); // TEXT INPUT
  textInput("num2","0"); // TEXT INPUT
  //textInput("num3","0"); // TEXT INPUT

  button("reset", "Go Back");

  textLabel("result",''); // Result
  textLabel("writing", '');
  textLabel("ansresult", "The Answer is: ");

  setPosition("ansresult", 0, 350, 150, 70);
  setPosition("result", 130, 350, 170, 70 );
  setPosition("writing", 130, 400, 170, 70 ); 

  button("clear","clear"); // clear  Button
  button("answer", "ans");
  button("plus","+"); // +  Button
  button("subract","-"); // -  Button
  button("multiply","*"); // *  Button
  button("divide", "/"); // /  Button
  button("exponent", "^"); // Exponent Button 

   onEvent("reset","click", function() {
    setScreen("OptionsScreen");
  });
 onEvent("clear","click", function() {
   total =  0;
  setText("result", total);
    setKeyValue("answer", total, function () {
  });
});

onEvent("answer","click", function() { // Recent Answer get back

  getKeyValue("answer", function (value) {
    setText("result", value);
    });
});

  var addition = onEvent("plus","click", function() {
  if (addition === true) {
    var num1 = getNumber("num1");
    var num2 = getNumber("num2");
    //var num3 = getNumber("num3");
      total =  num1 + num2; // + num3
  setText("result", total);
  } else {
      setText("writing","Error");
  }
  setKeyValue("answer", total, function () {
  });
});

 var subract = onEvent("subract","click", function() { // Subraction
  if (subract === true) {
  var num1 = getNumber("num1");
  var num2 = getNumber("num2");
  //var num3 = getNumber("num3");
      total =  num1 - num2; // num 3
  setText("result", total);
  } else {
      setText("writing", "Error");
  }
  setKeyValue("answer", total, function () {
  });
});

var multiply = onEvent("multiply","click", function() { // Multiply
  if (multiply === true) {
   var num1 = getNumber("num1");
    var num2 = getNumber("num2");
      total =  num1 *= num2;
  setText("result", total);
  } else {
      setText("writing", "Error");
  }
  setKeyValue("answer", total, function () {
  });
});

var divide = onEvent("divide","click", function() { // Division
  if (divide === true) {
   var num1 = getNumber("num1");
    var num2 = getNumber("num2");
      total =  num1 /= num2;
  setText("result", total);
  } else {
      setText("writing", "Error");
  }
  setKeyValue("answer", total, function () {
  }); 
});

var exponent = onEvent("exponent","click", function() { // Exponents
  if (exponent === true) {
   var num1 = getNumber("num1");
    var num2 = getNumber("num2");
      total =  Math.pow(num1,num2);
  setText("result", total);
  } else {
      setText("writing","Error");
  }
  setKeyValue("answer", total, function () {
    });
  });
});

  onEvent("Der/Int", "click", function() { // d/dx / INTEGRALS
    setScreen("Deriv/Inte");

  textInput("num3","0"); // TEXT INPUT
  textInput("num4","0"); // TEXT INPUT
  button("reset1", "Go Back");

  textLabel("result1",''); // Result
  textLabel("writing1", '');
  textLabel("ansresult1", "The Answer is: ");

  setPosition("ansresult1", 0, 350, 150, 70);
  setPosition("result1", 130, 350, 170, 70 );
  setPosition("writing1", 130, 400, 170, 70 ); 

  button("clear1","clear"); // clear  Button
  button("integral", "integral"); // Integral Button
  button("derivative", "d/dx"); // Derivative Button

    onEvent("clear1","click", function() { // CLEAR BUTTON
  total =  0;
  setText("result1", total);
  setText("writing1", '');
});

  onEvent("reset1","click", function() { // GO BACK BUTTON
    setScreen("OptionsScreen");
  });

  onEvent("integral","click", function() { // Simple Integration
    var num3 = getNumber("num3");
    var num4 = getNumber("num4");
    var exponentAdd = num4 += 1;  // Reverse power rule
    var exponentDivide = num3 /= exponentAdd ; // Reverse power rule
    var result = exponentDivide; 
    setText("result1", result + 'x' + exponentAdd); // (result + 'x' + exponentAdd);
    setText("writing1","The last number is the exponent");
});

onEvent("derivative","click", function() { // SIMPLE DERIVATIVES
    var num3 = getNumber("num3");
    var num4 = getNumber("num4");
    var exponentMultiply = num4 * num3; // POWER RULE
    var exponentSubract = num4 - 1; // POWER RULE
    var result = exponentMultiply;

if (num4 === 0) {
    setText("result", "0"); // FIND THE CONSTANT IF THE EXPONENT WILL BECOME 0 OR 1
  } else if (num4 === 1) {
    setText("result1", num3);
} else {
    setText("result1", result + 'x' + exponentSubract);
    setText("writing1","The last number is the exponent");
    } 
  });
});

  onEvent("QF","click", function() { // QUADRATIC FUNCTION
  setScreen("QuadF");

  textInput("a","0"); // TEXT INPUT
  textInput("b","0"); // TEXT INPUT
  textInput("c","0"); // TEXT INPUT

  button("reset2", "Go Back");
  button("clear2","clear"); // clear  Button

  textLabel("result2",''); // Result
  textLabel("writing2", '');
  textLabel("ansresult2", "The Answer is: ");

  setPosition("ansresult2", 0, 350, 150, 70);
  setPosition("result2", 130, 350, 170, 70 );
  setPosition("writing2", 130, 400, 170, 70 ); 

  button("quadraticFormula", "Quadratic Formula");

  onEvent("clear2","click", function() {

   total =  0;
  setText("result2", total);
  setText("writing2", '');
    setKeyValue("answer", total, function () {
  });
});
 onEvent("reset2","click", function() {
    setScreen("OptionsScreen");
    });

  onEvent("quadraticFormula","click", function() { 

    var a = getNumber("a");
    var b = getNumber("b");
    var c = getNumber("c");

    var discriminate1 =  Math.sqrt(Math.pow(b,2)-4*a*c); // SQRT(B^2 - 4(a)(c)

    var discriminate2 = -b + discriminate1;
    var discriminate3 = -b - discriminate1;
    var sol1 = discriminate2/2*a;
    var sol2 = discriminate3/2*a;
      setText("result2","x = " + sol1 + " x = " +sol2);
      setText("writing2", "IF X IS 'NaN' THEN NO REAL SOLUTION!");
  });
});

1 Ответ

0 голосов
/ 17 ноября 2018

Ваш экран (поля ввода и кнопки) перемещаются снова и снова.Итак, вы должны посмотреть, есть ли способ очистить его в первую очередь.

Когда кто-либо выбирает параметр из меню, очистите экран и затем снова создайте экран.

Они могут иметьнекоторый метод, такой как:

clearScreen("screen name");

Редактировать: Поскольку нет опции clearScreen, похоже, что вы должны создать все 4 экрана один за другим в самом начале.В случае необходимости вам следует только сменить экран.Таким образом, экраны создаются только один раз и остаются скрытыми.

...