If anyone has followed the dice example in Chapter 11 of Squeak By Example
you will recognize that I'm trying to build a variation of the dice.  The
difference is that I am trying to draw figures on the faces instead of dots.

 

What I am trying to do is have a group (array, set, collection?) of "faces"
on a rectangle - sort of like a child's building block with an image on each
of the faces. I want 1 face to be blank, one to have a line, one to have a
diamond, and one to have a rectangle. In the dice example, they draw dots on
the faces but I think I can use the same logic to draw lines on the faces.

 

I've pasted what I tried to the end of this post but I'm open to other ways
to do it.  I can't even get a simple line to draw on the face of the
rectangle.  You can see that I tried to have the "face" methods send a pair
of points that define the ends of the line and have drawLineOn draw a line
between the points.  Any help or advice will be greatly appreciated.

 

In the dice example they use: 

 

BorderedMorph subclass: #DieMorph

                instanceVariableNames: 'faces dieValue isStopped'

                classVariableNames: ''

                poolDictionaries: ''

                category: 'SBEexamples'

 

and

 

drawOn: aCanvas

super drawOn: aCanvas.

(self perform: ('face', dieValue asString) asSymbol)

do: [:aPoint | self drawDotOn: aCanvas at: aPoint]

 

and

 

drawDotOn: aCanvas at: aPoint

aCanvas

fillOval: (Rectangle

center: self position + (self extent * aPoint)

extent: self extent / 6)

color: Color black.

 

and

 

face1

^{...@0.5}

 

And

 

face2

^{0...@0.25 . 0...@0.75}

 

I tried:

 

BorderedMorph subclass: #MyMorph

                instanceVariableNames: 'faces dieValue isStopped'

                classVariableNames: ''

                poolDictionaries: ''

                category: 'SBEexamples'

 

and

 

drawOn: aCanvas

super drawOn: aCanvas.

(self perform: ('face', dieValue asString) asSymbol)

do: [{:aPoint, anotherPoint} | self drawLineOn: aCanvas from: aPoint to:
anotherPoint]

 

and

 

drawLineOn: aCanvas from: aPoint to anotherPoint

aCanvas

line: aPoint to: anotherPoint width: 2 color: Color black.

 

and

 

face1

^...@2, 2...@10}, {...@2, 1...@2}, {...@10, 2...@10}, {...@10, 1...@2}}

 

And

 

face2

^...@5, 5...@7}, {...@2, 7...@2}, {...@7, 5...@7}, {...@7, 7...@5}}

 

 

 

_______________________________________________
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners

Reply via email to