Hi Sarah,

Great work! B-)

Uploaded your great work to railsbridge/teachingkids.
Look at `A little game (Which is correct?)`

http://github.com/railsbridge/teachingkids/tree/master

Congrats! :-D
ashbb

On Sun, May 31, 2009 at 5:16 PM, Sarah Allen <[email protected]> wrote:

> Many thanks to everyone for responding to my urgent cry for help last
> Thursday.  I held my third and final class in the series on Friday and it
> went well.  I've written up my report on my blog:
>
> http://www.ultrasaurus.com/sarahblog/2009/05/teaching-kids-to-code-lesson-3/
>
> It's almost the end of school for the year.  I'm working with the school to
> establish a programming class as part of the tech curriculum for future
> years, since this little pilot program was such a success.
>
> Great work everyone!
>
> Sarah
>
>
> On May 28, 2009, at 8:38 PM, Edward Heil wrote:
>
>  Sarah, hi!  Great stuff!
>>
>> I have some more answers for you which I'll give you in the context of a
>> reply to Joel, expanding on what he says, and correcting some things where I
>> think he might have misunderstood what the students were trying for --
>>
>> So, replying to Joel --
>>
>> On May 28, 2009, at 10:09 PM, Joel Fernandes wrote:
>>
>>  1. couldn't find 'url' in the shoes manual, probably what you're
>>> looking for is 'link'
>>>
>>
>> Actually, they probably do mean "url"  -- as in a multiple-page app like
>> this little demo:
>>
>>  class TwoPages < Shoes
>>>  url '/', :mainpage
>>>  url '/other', :otherpage
>>>
>>>  def mainpage
>>>   para "this is the main page... "
>>>   para link("this way to the other",  :click => '/other')
>>>  end
>>>
>>>  def otherpage
>>>   para "this is the other page... "
>>>   para link("this way to the main page",  :click => '/')
>>>  end
>>> end
>>>
>>> Shoes.app
>>>
>>
>> This stuff is in the Nobody Knows Shoes book, p. 43.
>>
>> Shoes urls only work when you subclass Shoes, as I did here:
>>
>>  class TwoPages < Shoes
>>>
>>
>> then you can define different pages with urls and symbols and methods
>> named after those symbols.
>>
>> When you just put stuff inside the Shoes.app block, you don't need to (and
>> can't) use urls and different pages defined that way.
>>
>> So... to make this work they'd have to use a subclass of shoes, like this:
>>
>>  class OurApp < Shoes
>>>  url '/',  :index
>>>  [...stuff...]
>>> end
>>> Shoes.app  # you always need this line, to make stuff happen
>>>
>>
>> Next step -- get rid of the "index" line -- the index method gets called
>> automagically because it is assigned to the url "/" in the "url" line.
>>
>> Third step -- as you said, the assignments of click handlers are taking
>> place in a different context than the index method; they don't work together
>> right at all that way.  I don't know how I'd explain exactly how that works
>> to the students, honestly, cause I'm a little fuzzy myself, but here's how
>> I'd sum it up in a very simple rule:
>>
>> When you're doing the thing with the pages and URLs, you've got to put
>> EVERYTHING for a page inside the method for that page ("def index...end").
>>  EVERYTHING.  Nothing goes outside those methods, cause those methods build
>> all the pages of the app (in this case, the one page of the app, "index".
>>
>> So all those click handlers go inside the "def index....end".
>>
>> Final thing -- click handlers on buttons have to be actual code, not a
>> Shoes URL, so this line won't work:
>>
>>      button "Go Back", :click => "/"
>>>
>>
>> You can fix it two ways.  You can make it a link:
>>
>>  para link("Go Back", :click => '/')
>>>
>>
>> Or you can use the "visit" method to visit the URL, in a block of code
>> attached to the button:
>>
>>      button "Go Back" do
>>>       visit "/"
>>>     end
>>>
>>
>> So a full working app with those changes -- subclass Shoes, get rid of the
>> call to index(), move the click handler assignments into "def index...end"
>> and fix the button so it visits the Shoes URL right -- would look like this
>> -- and with those four small changes, it works great!
>>
>> ======================cut here===============
>>
>> class OurApp < Shoes
>>  url '/',  :index
>>
>>  def index
>>   clear
>>   para "Which is correct?"
>>   stack {
>>     @correct = button "A bed of clams"
>>     @wrong1 =button "A coalition of cheetahs"
>>     @wrong2 =button "A gulp of swallows"
>>   }
>>
>>   @correct.click {
>>     clear
>>     para "Correct"
>>     image "
>> http://upload.wikimedia.org/wikipedia/commons/thumb/a/ae/Balloons-aj.svg/550px-Balloons-aj.svg.png
>> "
>>     button "Go Back" do
>>       visit "/"
>>     end
>>
>>   }
>>   @wrong1.click {
>>     clear
>>     para "Wrong!"
>>     image "
>> http://icanhascheezburger.files.wordpress.com/2007/05/cheez_doing_it_wrong.jpg
>> "
>>   }
>>   @wrong2.click {
>>     clear
>>     para "Wrong, your consolation prize is..."
>>     image "
>> http://farm2.static.flickr.com/1166/1230713908_083d7f6c53_o.jpg";,
>>     :width => 500
>>   }
>>
>>  end  # this is the end of the index method, which lays out the "/" page
>>
>> end # this is the end of the subclass, which contains all the pages (well,
>> one page)
>>
>> Shoes.app
>>
>>
>> ======================cut here===============
>>
>>
> http://www.ultrasaurus.com
>
>
>
>

Reply via email to