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: 0
    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-2025 v.1.5 | design: diviXdesign & rainbowcolors