Skip to content

Tag: gato

Gato em JavaFX, versão 2

Lembra daquele nosso gato em Java FX? Agora ele move os olhos com cliques em botões.



Código fonte:

import javafx.ui.canvas.*;
import javafx.ui.*;

class Cat extends CompositeNode{
    attribute look: Number; // -1.0 to 1.0
    operation lookLeft();
    operation lookCenter();
    operation lookRight();
}

attribute Cat.look = 0; // 0 = middle

operation Cat.lookLeft(){
    look = [look, look - 0.1 .. -1.0] dur 1000;
}

operation Cat.lookCenter(){
    var step = if look < 0 then 0.1 else -0.1;
    look = [look, look+step .. 0.0] dur 1000;
}

operation Cat.lookRight(){
    look = [look, look + 0.1 .. 1.0] dur 1000;
}

function Cat.composeNode(){
    var head =  Ellipse {cx:100, cy:100, radiusX:100, radiusY:50, fill:black };
    var rightEar =  Arc {x:100, y:10, height:150, width:100,
                       startAngle:-20, length:90, closure:PIE, fill:black};
    var leftEar = Arc {x:000, y:10, height:150, width:100,
                     startAngle:110, length:90, closure:PIE, fill:black};
    var leftEye = Ellipse { cx:60, cy:100, radiusX:30, radiusY:15, fill:white};
    var rightEye = Ellipse { cx:140, cy:100, radiusX:30, radiusY:15, fill:white};
    var nose = Arc { x:85, y:110, height:20, width:30,
                     startAngle:45, length:90, closure:PIE, fill:white};
    
    var rightIris = Ellipse { cx: bind 140+look*20, cy:100,
                     radiusX:5, radiusY:15, fill:black};
    var leftIris = Ellipse { cx: bind 60+look*20, cy:100,
                     radiusX:5, radiusY:15, fill:black};    
    
    return Group{content: [head, rightEar, leftEar, leftEye,
                     leftIris, rightEye, rightIris, nose]};
}

var myCat = Cat{};

var myCatControl = View {
            transform: [translate(0, 150)]
            content: GroupPanel {
                cursor: DEFAULT
                var row = Row {alignment: BASELINE}
                var column1 = Column { }
                var column2 = Column { }
                var column3 = Column { }
                var column4 = Column { }
                var column5 = Column { }
                rows: [row]
                columns: [column1, column2, column3, column4]
                content:
                [SimpleLabel {
                    row: row
                    column: column1
                    text: "Look:"
                },
                Button {
                    row: row
                    column: column2
                    mnemonic: L
                    text: "Left"
                    action: operation() {
                        myCat.lookLeft();
                    }
                },
                Button {
                    row: row
                    column: column3
                    mnemonic: C
                    text: "Center"
                    action: operation() {
                        myCat.lookCenter();
                    }
                },
                Button {
                    row: row
                    column: column4
                    mnemonic: R
                    text: "Right"
                    action: operation() {
                        myCat.lookRight();
                    }
                }]
                }
            };

Canvas {
    content: [myCatControl, myCat]
}

Downloads:

Gato em JavaFX

Meu primeiro desenho com JavaFX.

Gato em JavaFX

Código-fonte:

import javafx.ui.canvas.*;
import javafx.ui.*;

Canvas {
    content: [
    // cat head
    Ellipse { cx:200, cy:100, radiusX:100, radiusY:50, fill:black },
    // right ear
    Arc { x:200, y:10, height:150, width:100,
        startAngle:-20, length:90, closure:PIE, fill:black},
    // left ear
    Arc { x:100, y:10, height:150, width:100,
        startAngle:110, length:90, closure:PIE, fill:black},
    // left eye
    Ellipse { cx:160, cy:100, radiusX:30, radiusY:15, fill:white},
    Ellipse { cx:160, cy:100, radiusX:5, radiusY:15, fill:black},
    // right eye
    Ellipse { cx:240, cy:100, radiusX:30, radiusY:15, fill:white},
    Ellipse { cx:240, cy:100, radiusX:5, radiusY:15, fill:black},
    // nose
    Arc { x:185, y:110, height:20, width:30,
        startAngle:45, length:90, closure:PIE, fill:white},
    ]
}

Sim, foi uma tentativa de reproduzir este outro gato. 🙂