Loading:


Rozwiązywanie równań z jedną niewiadomą - [ AS3 ]

Skrypt rozwiązuje zadania matematyczne z jedną niewiadomą [ x ], bazując na wynikach pełnych liczb, z jedną liczbą po przecinku oraz w formie typu 6/7 jeśli odpowiedź ma więcej niż jedną liczbę po przecinku.

 

Wersja On-line:

 

 

Podany skrypt wymaga dwóch plików źródłowych, jednego głównego, oraz pliku Rownanie.as .

 

Aby kod zadziała należycie należy posiadać na scenie głównej 2 pola dynamiczne o nazwie: wynik_txt oraz rownanie_txt, jedno pole wejściowe o instancji odpowiedz.txt. Do tego trzeba jeszcze dodać 3 przyciski o nazwach pokolei: sprawdz_btn, pokaz_btn oraz nastepne_btn.



Napisz Artyku³

Listing

//KOD DLA GŁÓWNEGO FILMU


/*
  skrypt pobrany ze strony: http://Funkcje.net
*/


// Połączenie naszego pliku
import Rownanie;

// do wpisania sa tylko liczby, ukośniki oraz -
odpowiedz_txt.restrict = "0123456789/\\-";

var a:int;
var b:int;
var c:int;

var odpowiedz:Rownanie = new Rownanie();

/*
Funkcja noweRownanie() wybiera losowe liczby dla a, b oraz c
oraz formuje z nich równanie "ax + b = c" do rozwiązania.  
*/

function noweRownanie():void {
        var s:String;
       
        a = Math.round(10*Math.random());
        while (a<2) {
                a = Math.round(10*Math.random());
        }
       
        b = 2 + Math.round(10*Math.random());
        c = 5 + Math.round(10*Math.random());
       
        s = String(a) + "x" + " + " + String(b) + " = " + String(c);
        odpowiedz.ustawRownanie(c-b,a);
       
        /*
        Wstaw s do pola rownanie_txt oraz wyczysc stare odpowiedzi.
        */

        rownanie_txt.text = s;
        odpowiedz_txt.text = "";
        wynik_txt.text = ""
       
}

function sprawdzOdpowiedz():void {
        var f:Rownanie = new Rownanie(odpowiedz_txt.text);
       
        if (odpowiedz_txt.text == "") {
                wynik_txt.text = "WYPEŁNIJ POLE!";
        } else {

                if (f.maBlad()) {
                        wynik_txt.text = "BŁĄD!";
                        return;
                }
               
                if (f.jestRowne(odpowiedz)) {
                        wynik_txt.text = "POPRAWNIE!";
                }
                else {
                        wynik_txt.text = "ŹLE!";
                }
        }
}

sprawdz_btn.addEventListener(MouseEvent.CLICK, pokazWynik);

function pokazWynik(mevt:MouseEvent):void {
       
        sprawdzOdpowiedz();
}

nastepne_btn.addEventListener(MouseEvent.CLICK, pokazNastepne);

function pokazNastepne(mevt:MouseEvent):void {
       
        noweRownanie();
}

pokaz_btn.addEventListener(MouseEvent.CLICK, pokazPoprawna);

function pokazPoprawna(mevt:MouseEvent):void {
        odpowiedz_txt.text = odpowiedz.toString();
        wynik_txt.text = "";
}

noweRownanie();


//KOD DLA PLIKU Rownanie.as


/*
  skrypt pobrany ze strony: http://Funkcje.net
*/


package {
        public class Rownanie {
                protected var _blad:Boolean;
                protected var _licznik:int;
                protected var _mianownik:int;
               
                public function Rownanie(... argumenty) {
                        _licznik = 0;
                        _mianownik = 1;
                        _blad = false;

                        if (argumenty.length == 2) {
                                _licznik = argumenty[0];
                                _mianownik = argumenty[1];
                                if (!(_licznik is int)) {
                                        _blad = true;
                                }
                                if (!(_mianownik is int)) {
                                        _blad = true;
                                }
                        }
                       
                        if (argumenty.length == 1) {
                                this.konwertujString(argumenty[0]);
                        }
                       
                        if (argumenty.length > 2) {
                                _blad = true;
                        }
                }
               
                public function klon():Rownanie {
                        var h:Rownanie = new Rownanie();
                        h.ustawRownanie(this._licznik, this._mianownik);
                        return h;
                }
               
                private function gcd(a:int,b:int):int {
                        if ((a < 0) || (b < 0)) {
                                return gcd(Math.abs(a),Math.abs(b));
                        }
                        if (a < b) {
                                return gcd(b,a);
                        }
                        if (b == 0) {
                                return a;
                        }
                        return gcd(b, a%b);
                }
               
                public function pobierzLicznik():int {
                        return _licznik;
                }

                public function pobierzMianownik():int {
                        return _mianownik;
                }
               
                public function ustawRownanie(a:int, b:int):void {
                        _licznik = a;
                        _mianownik = b;
                        _blad = false;
                        if (_mianownik == 0) {
                                _blad = true;
                        }
                        this.zredukuj();
                }
               
                public function zredukuj():void {
                        var n:int;
                        var d:int;
                        var c:int;
                        n = this.pobierzLicznik();
                        d = this.pobierzMianownik();
                        c = gcd(n,d);
                        n = n/c;
                        d = d/c;
                       
                        if (d < 0) {
                                n = -n;
                                d = -d;
                        }
                        _licznik = n;
                        _mianownik = d;
                }
                                               
                public function jestRowne(a:*):Boolean {
                        var n1:int;
                        var n2:int;
                        var d1:int;
                        var d2:int;
                        var f:Rownanie = new Rownanie();
                       
                        if (a is Rownanie) {
                                f = a.klon();
                        }
                        else if (a is int) {
                                f.ustawRownanie(a,1);
                        }
                        else if (a is String) {
                                f.konwertujString(a);
                        }

                        n1 = this.pobierzLicznik();
                        d1 = this.pobierzMianownik();
                        n2 = f.pobierzLicznik();
                        d2 = f.pobierzMianownik();
                       
                        if (this.maBlad()) {
                                return false;
                        }
                       
                        if (f.maBlad()) {
                                return false;
                        }
                       
                        if (n1*d2 == n2*d1) {
                                return true;
                        }
                        return false;          
                }
               
                public function toString():String {
                        var n:int;
                        var d:int;
                        n = this.pobierzLicznik();
                        d = this.pobierzMianownik();
                        if (n==0) {
                                return "0";
                        }
                        if (d==1) {
                                return String(n);
                        }
                        return (String(n) + "/" + String(d) );
                        //jeśli odkomentujemy linię podspodem wtedy wyniki będą obliczane automatycznie do normalnej liczby
                        //return String(n/d);
                }

                public function konwertujString(s:String):void {
                        var a:Array = s.split("/");
                        _blad = false;

                        if ((a.length == 0)||(a.length>2)) {
                                _blad = true;
                                return;
                        }
                       
                        this._licznik = parseInt(a[0]);

                        if (a.length == 2) {
                                this._mianownik = parseInt(a[1]);
                        }

                        if ( isNaN(this._licznik) || isNaN(this._mianownik) ) {
                                _blad = true;
                        }
                }
                               
                public function maBlad():Boolean {
                        return _blad;
                }
        }
}




Dodano przez: divix
Ranga: Administrator serwisu Punktów: 38523
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors