RCScratch wrote:
How do you make a block like this:
Code:
Do [^_______] until <> happens?
I can't figure out how to get the predicate right.
just drag a <repeat until> block. :P in control
Last edited by goonlon (2010-07-17 00:08:38)
Offline
Lucario621 wrote:
how do we export lists within lists, as well as costumes, and scripts, and blocks, (and sounds?)
Well, lists of lists of text are pretty easy to represent; in Logo it'd be
[[John Lennon] [Paul McCartney] [George Harrison] [Ringo Starr]]
(same in Lisp except parentheses instead of square brackets). Non-text objects in lists are a little trickier. My off-the-cuff first guess is that it'd be done sort of like the way they store complete web pages: as a folder containing a main (text) file for the overall list, and other .png or .mp3 or whatever files for the other stuff. The main file would have filenames for the non-text elements. I suppose the really easiest thing would be to make it /exactly/ like a web page, so the structure of the list would be made out of XML elements rather than brackets or parentheses.
Jens, I hope you're taking notes for 3.1.
Offline
shadow_7283 wrote:
What on earth are badges/buttons?!?
Umm, first of all, I'm currently driving across country (right now I'm at the Motel 6 in Cheyenne, WY) so my online time is very limited for the next couple of days; try not to get impatient if it takes a day for me to respond to something instead of my usual millisecond response time.
Oh, and while I'm on the subject, for a couple of weeks I'm going to be in Europe with even iffier access.
Now then... Start of long story... Almost a year ago Jens and I started collaborating on working out what it would take to add first class procedures to BYOB, and pretty soon Jens was cranking out daily releases, which went to a few people at Berkeley, and then to a few people at other universities who were working on Scratch-based intro CS courses, and the list kept growing. In those early days the software was very sketchy, nothing you'd want to try to do real work in, but eventually we got to the point of deciding it was ready to let the rest of the Scratch world start trying to break it. But we didn't have byob.berkeley.edu set up yet, and basically only the people on the mailing list were getting the updates.
So Jens and I started thinking about how we could get some of the intrepid alpha testers from the forums onto the mailing list, which is when I discovered the joys of the Children's Online Privacy Protection Act of 1998. Not to mention the Scratch site rules. So we couldn't just say "hey, everyone send us your email address." Finally we got the web site organized, but by then we were thinking about y'all-on-BYOB-alpha in two different ways, not only as a practical way to distribute updates but also as a form of recognition; Jens and I were both totally overwhelmed by your interest, your support, and your fiendish ingenuity at finding things to try that would never have occurred to us. So we published the certificate.
Okay, fast forward a couple of months; Jens and I are chatting and somehow the subject came up of that seal-looking thing down in the corner of the certificate. And Jens said "we should hand out buttons at the conference." So we both started researching what it would cost, and came up with two very different numbers. It turns out you can get printed-paper-attached-to-cheap-metal throwaway pins, and you can get beautiful thick enamel-poured-into-cast-iron collectable pins. Well, of course we couldn't afford to hand out the latter at the conference, but we decided to make a small number of them for special friends of BYOB.
This summer I had the great pleasure to meet two of you, and of course gave you your pins. (Oh, and also the Scratch Team en masse.) But not until tonight did I really realize or think through the consequences of that. Of course Lucario would want to show his off! That's the whole point of them. But I'd sort of vaguely been thinking that sooner or later I'd meet everyone, one at a time, somehow, before anyone saw anyone else's. So, for example, Shadow, of course you qualify! Many others of the forum regulars, too. But now I'm in the position of wanting to say "everyone send me your actual physical address" which is of course way way more of a no-no than even asking for email addresses, which is how this all started.
So. This message is not not not a request for anyone's address! Maybe you all have to wait until you're 18 to get your BYOB pins. Or maybe we'll think of something better.
Oh, and since there are only a finite number of these, there's the delicate question of who qualifies. I'm thinking everyone on the certificate, plus a few like fullmoon who didn't show up on this forum until after the certificate but have been really helpful since. And certain grownups on the original BYOB-alpha mailing list have been extremely helpful. (People didn't get on the certificate just for saying "Wow, this is cool!" We picked people we felt had really helped in some way, usually but not always by finding bugs.) Oh yeah, I should mention, we didn't have actual pins until a couple of weeks ago, so if you're a BHS or TO kid who used BYOB last year, that's why you haven't gotten one yet.
Offline
Lucario621 wrote:
Also, what do you guys think about the recursion article on the Scratch Wiki? See it here. What should we add/change?
Aargh, it's after midnight and you want me to write a second really long message?
It's long because this article is on the other side of a debate I've been having with other teachers of recursion for, umm, 40 years now.
Everyone except me (and a couple of other wise and insightful people) introduces recursion as a form of looping, typically with the recursive call as the last command in a script/procedure/block of commands.
I think that encourages people to build a wrong mental model of recursion. (I tell my students that if the words "go back" occur to you in the context of recursion, you're thinking about it wrong.) Instead I like to start with an embedded recursion, in which something else happens after the recursive call finishes. For example, here's the script for a command block called DOWNUP that takes a word as its input:
SAY <word> FOR 2 SECONDS IF [[LENGTH OF <word>] > 1] DOWNUP [ALL BUT LAST LETTER OF <word>] SAY <word> FOR <2> SECONDS
This should produce a pattern like
BAZ
BA
B
BA
BAZ
and there's no way to understand that if you think of the recursive call as any kind of looping.
So if I were writing the article it would start with, and emphasize, embedded recursion, such as drawing fractal trees.
P.S. Using BROADCAST to restart a script in Scratch works only for tail recursion (the kind that's like looping).
Offline
bharvey wrote:
So, for example, Shadow, of course you qualify!
That's completely OK! I was more asking out of curiosity than anything, so thanks for wasting half an hour of your life on the reply.
Offline
I downloaded BYOB2.99, and I made a project in "normal" scratch (ok, I was using my Scratch mod, Shriek, but its still compatiable with normal Scratch) that basically replicates the (call () ) block. It takes a formula, and makes a graph of that formula with variable x. The project is here.
Last edited by rubiks_cube_guy238 (2010-07-17 09:24:03)
Offline
I have a suggestion for 3.1! I don't see why lists should be limited to just the stage. Why can't we have them over the whole screen? It would make it so much easier to work with them!
Offline
shadow_7283 wrote:
I have a suggestion for 3.1! I don't see why lists should be limited to just the stage. Why can't we have them over the whole screen? It would make it so much easier to work with them!
But what would happen in presentation mode on a small screen?
Offline
Well, I was thinking that there could be two states for a variable or list. One monitor state which would allow you to stretch it across the screen as you list, and a stage state that actually incorporates the list into the project's screen.
Offline
rubiks_cube_guy238 wrote:
that basically replicates the (call () ) block.
Wow! What an amazing amount of effort! I'm very impressed.
A lot of the effort was in the bazillion small scripts to turn a text string like "+" or "sin" into the corresponding Scratch block. Maybe at some point we should think about having a
THE BLOCK NAMED <name>
block that would generalize that operation. It would be a little more complicated than I've made it look because of blocks whose "name" isn't all in one piece, because of multiple inputs with text between them.
On the other hand, I guess it could be argued that if you want to type your formulas on the keyboard, there are already many programming languages that work that way.
Offline
shadow_7283 wrote:
Well, I was thinking that there could be two states for a variable or list.
I think that's too complicated. If you're going to want the monitor visible in presentation mode, then it might as well be on the stage all the time.
What your idea would be good for is monitors that aren't part of what you're presenting to the user, but are just onscreen during the development of the project, to help you debug. So a monitor positioned off the stage simply wouldn't appear in presentation mode.
But the Scratch screen is so crowded already; I don't know what I'd want to cover up with monitors! So next you're going to be asking for scroll bars for the entire screen that would give you a much bigger virtual screen on which you could put them.
Offline
That's pretty much what I meant, I just didn't convey it well. Sometimes, I need to edit just the contents of a list when I'm working on a project. At that point, I don't really care about the blocks, so I would just cover them up. The problem is, my list editing is limited to the stage size. So it would be nice if we could have watchers outside of the stage, that don't appear in the project.
Offline
shadow_7283 wrote:
That's pretty much what I meant, I just didn't convey it well. Sometimes, I need to edit just the contents of a list when I'm working on a project. At that point, I don't really care about the blocks, so I would just cover them up. The problem is, my list editing is limited to the stage size. So it would be nice if we could have watchers outside of the stage, that don't appear in the project.
This (quite literally) would take roughly five seconds to implement.
EDIT: Oh, wait, forgot about the #EnableDragNDrop property....
Last edited by nXIII (2010-07-17 11:37:10)
Offline
bharvey wrote:
Lucario621 wrote:
how do we export lists within lists, as well as costumes, and scripts, and blocks, (and sounds?)
Well, lists of lists of text are pretty easy to represent; in Logo it'd be
Code:
[[John Lennon] [Paul McCartney] [George Harrison] [Ringo Starr]](same in Lisp except parentheses instead of square brackets). Non-text objects in lists are a little trickier. My off-the-cuff first guess is that it'd be done sort of like the way they store complete web pages: as a folder containing a main (text) file for the overall list, and other .png or .mp3 or whatever files for the other stuff. The main file would have filenames for the non-text elements. I suppose the really easiest thing would be to make it /exactly/ like a web page, so the structure of the list would be made out of XML elements rather than brackets or parentheses.
Jens, I hope you're taking notes for 3.1.
Interesting
Offline
bharvey wrote:
shadow_7283 wrote:
What on earth are badges/buttons?!?
Umm, first of all, I'm currently driving across country (right now I'm at the Motel 6 in Cheyenne, WY) so my online time is very limited for the next couple of days; try not to get impatient if it takes a day for me to respond to something instead of my usual millisecond response time.
So I've noticed.
bharvey wrote:
Oh, and while I'm on the subject, for a couple of weeks I'm going to be in Europe with even iffier access.
Now then... Start of long story... Almost a year ago Jens and I started collaborating on working out what it would take to add first class procedures to BYOB, and pretty soon Jens was cranking out daily releases, which went to a few people at Berkeley, and then to a few people at other universities who were working on Scratch-based intro CS courses, and the list kept growing. In those early days the software was very sketchy, nothing you'd want to try to do real work in, but eventually we got to the point of deciding it was ready to let the rest of the Scratch world start trying to break it. But we didn't have byob.berkeley.edu set up yet, and basically only the people on the mailing list were getting the updates.
So Jens and I started thinking about how we could get some of the intrepid alpha testers from the forums onto the mailing list, which is when I discovered the joys of the Children's Online Privacy Protection Act of 1998. Not to mention the Scratch site rules. So we couldn't just say "hey, everyone send us your email address." Finally we got the web site organized, but by then we were thinking about y'all-on-BYOB-alpha in two different ways, not only as a practical way to distribute updates but also as a form of recognition; Jens and I were both totally overwhelmed by your interest, your support, and your fiendish ingenuity at finding things to try that would never have occurred to us. So we published the certificate.
Okay, fast forward a couple of months; Jens and I are chatting and somehow the subject came up of that seal-looking thing down in the corner of the certificate. And Jens said "we should hand out buttons at the conference." So we both started researching what it would cost, and came up with two very different numbers. It turns out you can get printed-paper-attached-to-cheap-metal throwaway pins, and you can get beautiful thick enamel-poured-into-cast-iron collectable pins. Well, of course we couldn't afford to hand out the latter at the conference, but we decided to make a small number of them for special friends of BYOB.
This summer I had the great pleasure to meet two of you, and of course gave you your pins. (Oh, and also the Scratch Team en masse.) But not until tonight did I really realize or think through the consequences of that. Of course Lucario would want to show his off! That's the whole point of them. But I'd sort of vaguely been thinking that sooner or later I'd meet everyone, one at a time, somehow, before anyone saw anyone else's. So, for example, Shadow, of course you qualify! Many others of the forum regulars, too. But now I'm in the position of wanting to say "everyone send me your actual physical address" which is of course way way more of a no-no than even asking for email addresses, which is how this all started.
So. This message is not not not a request for anyone's address! Maybe you all have to wait until you're 18 to get your BYOB pins. Or maybe we'll think of something better.
Oh, and since there are only a finite number of these, there's the delicate question of who qualifies. I'm thinking everyone on the certificate, plus a few like fullmoon who didn't show up on this forum until after the certificate but have been really helpful since. And certain grownups on the original BYOB-alpha mailing list have been extremely helpful. (People didn't get on the certificate just for saying "Wow, this is cool!" We picked people we felt had really helped in some way, usually but not always by finding bugs.) Oh yeah, I should mention, we didn't have actual pins until a couple of weeks ago, so if you're a BHS or TO kid who used BYOB last year, that's why you haven't gotten one yet.
And of course, I remember you telling me this whole story in person ^_^
Offline
Lucario, you threatened me for nothing. Now I'm mad.
Offline
bharvey wrote:
Lucario621 wrote:
Also, what do you guys think about the recursion article on the Scratch Wiki? See it here. What should we add/change?
Aargh, it's after midnight and you want me to write a second really long message?
Yes yes yes yes yessssss!!!
bharvey wrote:
It's long because this article is on the other side of a debate I've been having with other teachers of recursion for, umm, 40 years now.
Everyone except me (and a couple of other wise and insightful people) introduces recursion as a form of looping, typically with the recursive call as the last command in a script/procedure/block of commands.
I think that encourages people to build a wrong mental model of recursion. (I tell my students that if the words "go back" occur to you in the context of recursion, you're thinking about it wrong.) Instead I like to start with an embedded recursion, in which something else happens after the recursive call finishes. For example, here's the script for a command block called DOWNUP that takes a word as its input:Code:
SAY <word> FOR 2 SECONDS IF [[LENGTH OF <word>] > 1] DOWNUP [ALL BUT LAST LETTER OF <word>] SAY <word> FOR <2> SECONDSThis should produce a pattern like
BAZ
BA
B
BA
BAZ
and there's no way to understand that if you think of the recursive call as any kind of looping.
So if I were writing the article it would start with, and emphasize, embedded recursion, such as drawing fractal trees.
P.S. Using BROADCAST to restart a script in Scratch works only for tail recursion (the kind that's like looping).
Hey - you're the recursion expert - you should work on the article! Just build onto it, to help people get a better understanding of it .
Offline
Can someone help me make a block were you can clone something and have the clone do something (I'm making a strategy game)
Offline
shadow_7283 wrote:
Lucario, you threatened me for nothing. Now I'm mad.
Yeah, I got an email this morning from him about the badges saying "I took care of it" even though I was about to .
Oh well
I'll put some pictures here soon.
Offline
Wow, that's really thoughtful!
Maybe you could leave the pins in unattended bags at an airport, or maybe just put something appropriately vague like "fullmoon, Scratch community" on the envelope and see if our intrepid postal workers can hunt us down.
mooster wrote:
Can someone help me make a block were you can clone something and have the clone do something (I'm making a strategy game)
It's not possible using pure BYOB, but fairly simple in Smalltalk. You should check out ChrisCrouch's dynamic sprites hack!
Offline
fullmoon wrote:
mooster wrote:
Can someone help me make a block were you can clone something and have the clone do something (I'm making a strategy game)
It's not possible using pure BYOB, but fairly simple in Smalltalk. You should check out ChrisCrouch's dynamic sprites hack!
Although those don't work in presentation mode, you have to detect an OffscreenWorldMorph owner instead of a ScratchFrameMorph one.
I think you can do this in BYOB as long as you don't need graphical representations. Or you can make a single-sprite morphic world with a display cycle and have each object draw itself in the "damaged" area (damage detection only works if you use pixel-by-pixel drawing which is kind of slow, you may want to go for just redrawing the entire screen when something changes)
Offline
██████ █ █ ██████ ██████ ██████ ██ ██ ██████
█ █ █ █ █ █ █ █ █ █ █ █ █
██████ █ █ █ ███ ██████ █ █ █ █ █ █ ███
█ █ █ █ █ █ █ █ █ █ █ █ █ █
█ █ ███████ ██████ ██████ ██████ █ █ █ ██████
█ █ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █
█ █ █ █ █ █ █ █ █ █ █ █ █
(I made it myself!)
Last edited by shadow_7283 (2010-07-17 14:21:47)
Offline
----------------------------------------------------▄▄▄▄▄▄▄▄
█░░░░░░░░█
█░░░▓░░░▓░░░█
█░░░░░░░░░░░░░█
█░░░▓░░░░░▓░░░█
█░░░▓▓▓▓▓░░░█
█░░░░░░░░█
▀▀▀▀▀▀▀▀
Last edited by shadow_7283 (2010-07-17 14:34:58)
Offline
Fan Art
██
█ ██
██
█ ██
█ ██
██
█ ██ █
█ █▌ █▒█ █▌
█ ██ █▒▒▒█ █▒█
▐█▒▒██▒▒▒▒▒██ █▒▒█
█▒▒▒▒▒▒▒▒▒▒▒█▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
███▒▒▒▒▒▒█▒▒░░▒▒▒▒░░▒▒▒█
██▒▒▒▒▒▒▒██▒▒░██░▒▒░██░▒▒▒█
█▒▒▒▒▒▒▒██▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒██
█▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▒██
█▒▒██ █▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒█▒▒▒▒█
██ █▒▒▒▒▒████▒▒▒▒▒▒▒██ ████
█▒▒▒█ █▒▒▒███████
█▒▒█ █▒▒█ █▒▒█
█▒█ █▒█ █▒█
█ █ █
And the monospaced version:
██ █ ██ ██ █ ██ █ ██ ██ █ ██ █ █ █▌ █▒█ █▌ █ ██ █▒▒▒█ █▒█ █████▒▒▒▒▒██ █▒▒█ █▒▒▒▒▒▒▒▒▒▒▒█▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ ███▒▒▒▒▒▒█▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒█ ██▒▒▒▒▒▒▒██▒▒▒▒▒░██░▒▒░██░▒▒▒▒█ █▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒█▒█ █▒▒▒▒▒███▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▒▒▒██ █▒▒██ ███▒▒▒▒▒▒▒▒▒▒▒███▒▒▒█ █▒▒▒▒█ ██ █▒▒▒▒██████▒▒▒▒▒█ ████ █▒▒██ █▒▒▒██████ █▒▒█ █▒▒█ █▒▒█ ███ ███ ███ █ █ █
Last edited by nXIII (2010-07-17 15:02:36)
Offline
nXIII wrote:
Fan Art
██
█ ██
██
█ ██
█ ██
██
█ ██ █
█ █▌ █▒█ █▌
█ ██ █▒▒▒█ █▒█
▐█▒▒██▒▒▒▒▒██ █▒▒█
█▒▒▒▒▒▒▒▒▒▒▒█▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
█▒██████▒▒▒▒▒▒▒▒▒▒▒▒▒▒█
███▒▒▒▒▒▒█▒▒░░▒▒▒▒░░▒▒▒█
██▒▒▒▒▒▒▒██▒▒░██░▒▒░██░▒▒▒█
█▒▒▒▒▒▒▒██▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒██
█▒▒▒▒▒██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▒██
█▒▒██ █▒▒▒▒▒▒▒▒▒▒▒▒██▒▒▒▒▒█▒▒▒▒█
██ █▒▒▒▒▒████▒▒▒▒▒▒▒██ ████
█▒▒▒█ █▒▒▒███████
█▒▒█ █▒▒█ █▒▒█
█▒█ █▒█ █▒█
█ █ █
And the monospaced version:Code:
██ █ ██ ██ █ ██ █ ██ ██ █ ██ █ █ █▌ █▒█ █▌ █ ██ █▒▒▒█ █▒█ █████▒▒▒▒▒██ █▒▒█ █▒▒▒▒▒▒▒▒▒▒▒█▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ █▒████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█ ███▒▒▒▒▒▒█▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒█ ██▒▒▒▒▒▒▒██▒▒▒▒▒░██░▒▒░██░▒▒▒▒█ █▒▒▒▒▒▒▒██▒▒▒▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒█▒█ █▒▒▒▒▒███▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒█▒▒▒██ █▒▒██ ███▒▒▒▒▒▒▒▒▒▒▒███▒▒▒█ █▒▒▒▒█ ██ █▒▒▒▒██████▒▒▒▒▒█ ████ █▒▒██ █▒▒▒██████ █▒▒█ █▒▒█ █▒▒█ ███ ███ ███ █ █ █
You've got a LOT of time on your hands
Offline