shadow_7283 wrote:
I'm kind of running out of ideas for practical projects that really take advantage of BYOB3's features. Any ideas?
The thing I'd write next if I had time (I shouldn't be reading the forum right now! ) is an object-oriented adventure game with PERSON, PLACE, and THING classes. These would be dispatch-procedure style objects, but each would be associated with a sprite, or, in the case of a PLACE, a background for the stage. See this assignment from my SICP class; you can find the associated Scheme code here. You might want to read the documentation of our mini-OOP language here.
Last edited by bharvey (2010-10-31 22:38:03)
Offline
bharvey wrote:
MathWizz wrote:
ScratchReallyROCKS wrote:
[script variables (a) (b) >]
Global variables?
Exactly. The SCRIPT VARIABLES block makes variables local to the script in which it appears, even if that script is in the sprite's scripting area rather than in the Block Editor.
P.S. You guys should learn to edit down long quoted previous posts!
Oh yeah, forgot about that.
Offline
bharvey wrote:
shadow_7283 wrote:
I'm kind of running out of ideas for practical projects that really take advantage of BYOB3's features. Any ideas?
The thing I'd write next if I had time (I shouldn't be reading the forum right now! ) is an object-oriented adventure game with PERSON, PLACE, and THING classes. These would be dispatch-procedure style objects, but each would be associated with a sprite, or, in the case of a PLACE, a background for the stage. See this assignment from my SICP class; you can find the associated Scheme code here. You might want to read the documentation of our mini-OOP language here.
Interesting idea. I would look at the links, but none of them work for me. None the less, I'll ATTEMPT to make something similar.
Offline
shadow_7283 wrote:
I would look at the links, but none of them work for me.
Oops! My browser is set to append "eecs.berkeley.edu" to unqualified host names, so the links worked for me. I fixed them to have the full path; try again.
Offline
bharvey wrote:
shadow_7283 wrote:
I'm kind of running out of ideas for practical projects that really take advantage of BYOB3's features. Any ideas?
The thing I'd write next if I had time (I shouldn't be reading the forum right now! ) is an object-oriented adventure game with PERSON, PLACE, and THING classes. These would be dispatch-procedure style objects, but each would be associated with a sprite, or, in the case of a PLACE, a background for the stage. See this assignment from my SICP class; you can find the associated Scheme code here. You might want to read the documentation of our mini-OOP language here.
Woops ! In my very young years I had written in Apple ][ Logo all the basic functions concerning properties and object-oriented programming. Yesterday I have just started to make an evaluation "game" using these and I intended precisely to post concerning this important matter.
I jump to your references.
Offline
shadow_7283 wrote:
bharvey wrote:
shadow_7283 wrote:
I'm kind of running out of ideas for practical projects that really take advantage of BYOB3's features. Any ideas?
The thing I'd write next if I had time (I shouldn't be reading the forum right now! ) is an object-oriented adventure game with PERSON, PLACE, and THING classes. These would be dispatch-procedure style objects, but each would be associated with a sprite, or, in the case of a PLACE, a background for the stage. See this assignment from my SICP class; you can find the associated Scheme code here. You might want to read the documentation of our mini-OOP language here.
Interesting idea. I would look at the links, but none of them work for me. None the less, I'll ATTEMPT to make something similar.
As I suggeested a tile based game might be good.
Offline
I made this. Its a base for a game like line rider.
Offline
bharvey wrote:
Oops! My browser is set to append "eecs.berkeley.edu" to unqualified host names, so the links worked for me. I fixed them to have the full path; try again.
Thanks. It should be fun!
P.S. Did you like deep-contains? I was really pleased with how elegant it came out.
Yeah, it's great thanks. I'll add it to my steadily-growing list of custom blocks!
EDIT: I think I'm going to adapt it and make it a tile-based scrolling environment, with the same basic idea.
EDIT2: I'm going to make it isometric too!
Last edited by shadow_7283 (2010-11-01 17:43:13)
Offline
Hmmm... I'm kind of missing single stepping. The BYOB3 debug feature is better, but I'm still having trouble navigating through it. Sometimes I just need to see live action as blocks are run through. The debugger does that, but it is much more tedious and the code is harder to understand.
Offline
shadow_7283 wrote:
I'm going to make it isometric too!
I had to Wikipedia that -- to my generation, "isometric" means having both hands pulling on opposite ends of a rope.
Sounds like a fun project!
PS to JD1: I'm not ignoring you, I just haven't had time to download and explore your project yet, so it'll take longer for me to be able to comment on it.
Offline
shadow_7283 wrote:
Hmmm... I'm kind of missing single stepping. The BYOB3 debug feature is better, but I'm still having trouble navigating through it. Sometimes I just need to see live action as blocks are run through. The debugger does that, but it is much more tedious and the code is harder to understand.
Yes, we know that the debugger has to improve. Jens invented it at the last possible moment before 3.0 because we knew we needed something to help debug recursive functions.
Jens? Bring back "single stepping" (with a name that actually corresponds to what it does)? The opposite of turbo mode; maybe we can call it obrut mode.
Offline
I forgot how time-consuming making BYOB projects is! I spent a couple hours on my project and I've hardly made any progress! Oh well. I'll finish it eventually.
Offline
johnnydean1 wrote:
I made this. Its a base for a game like line rider.
Okay, I've taken a first look. It does a lot! I'm looking for ways to make it even more BYOB-ish. One tiny thing is, you use the letters T and F to represent true and false, and then you have to do tests like
IF [<something> = <t>] ...
If instead you used the TRUE and FALSE blocks in the operations palette to represent true and false, you could later just say
IF <something> ...
I think this = test dates back to the Scratch bug that you can't just put a variable in the boolean input slot of IF.
Now I'm trying to figure out whether you can save anything by using THE SCRIPT [PEN UP] instead of the text "pen up" in your lists. Maybe replace the numbers in the blocks with instructions; then you could say
FOR EACH ITEM IN <some-list>
RUN < >
so for example instead of a list of x coordinates and another list of y coordinates, you'd have one list whose elements are
GO TO X: <...> Y: <...>
blocks.
Just as soon as I get some time I'm going to start playing with your code. (Not very soon, alas.)
Offline
shadow_7283 wrote:
I forgot how time-consuming making BYOB projects is! I spent a couple hours on my project and I've hardly made any progress! Oh well. I'll finish it eventually.
It's just like building buildings. For months you have a big hole in the ground and nothing seems to be happening, and then one morning you wake up and the whole frame is in the air. (In other words, you are making progress that won't be apparent for a while.)
Offline
bharvey wrote:
johnnydean1 wrote:
I made this. Its a base for a game like line rider.
Okay, I've taken a first look. It does a lot! I'm looking for ways to make it even more BYOB-ish.
It was originaly made in Scratch, but ported to BYOB as it was very slow in Scratch. Ill improve it soon.
Offline
shadow_7283 wrote:
How would a sprite go to the x position (set x to [say "Hi!"])?
I tried that; it sets the X position to 0.
______________________________________________________________________________
nXIII wrote:
My idea for 3.1: move zero-argument reporters to the "variables" pane.
Basically, all those zero-argument reporters (size, x position, direction, etc.) would be moved to the variables pane and be treated as variables. This means one would be able to set them with the SET () TO () primitive, and all the other SET primitives would become obsolete. One could also override the default behavior of these variables, such as transforming (e.g. scaling or rotating) the x/y position variables from their values.
Oh. I just realized that wouldn't work.... If you can override the behavior of the SET (x position) TO () block, how would you set the x position in your function? I mean, for x/y position it's obvious, but what about size? Hm. Any suggestions?
What about the [blocks] <timer> [/blocks] ?
Last edited by rubiks_cube_guy238 (2010-11-02 20:44:25)
Offline
rubiks_cube_guy238 wrote:
I tried that; it sets the X position to 0.
Yeah, Scratch tries very hard not to let anything be an error, and one of its strategies is to take any strange input as zero.
What about the [blocks] <timer> [/blocks] ?
Good point! Although it's different only in degree from the strangeness of having (x position) change because the user drags the sprite with the mouse.
Last edited by bharvey (2010-11-02 21:10:41)
Offline
Hi bharvey and jens,
I can only guess from this statement that scratch 2.0 will not allow mods:
Scratch2 FAQ wrote:
What will happen to modified versions of Scratch?
We expect that Scratch "mods" based on the Scratch 1.4 Squeak source code (e.g. BYOB, Panther, Slash, and others) will continue to thrive and inspire the Scratch community.
Do you know if scratch 2.0 will be opensource too?
I believe you want Scratch to take on BYOB3's features; they're going to have a form of "BYOB", but not everything first class, right?
Will you be able to mod scratch2.0 as BYOB4? or will you stay in Squeak?
What are your plans/hopes for BYOB/Scratch?
Thanks!
Last edited by JTxt (2010-11-03 12:38:50)
Offline
bharvey wrote:
What about the [blocks] <timer> [/blocks] ?
Good point! Although it's different only in degree from the strangeness of having (x position) change because the user drags the sprite with the mouse.
Well, I guess the timer could be like any other variable and could be reset to any number; it would just count up from that number.
Offline
@JTxt
I would be shocked if Scratch 2.0 wasn't open-source, but it might mean the end of prolific modding since it'll be in Flash. I can't speak for the BYOB guys, but I'm secretly thrilled about the shift since I can develop in Flash...so I already have preliminary plans for a mod.
Offline
JTxt wrote:
Do you know if scratch 2.0 will be opensource too?
Disclaimer: I am not the Scratch Team!
I believe that the intent is that Scratch will remain open source. The paragraph you quoted just means that people with Scratch mods don't have to feel the need to rewrite their mods to follow Scratch 2.0.
I believe you want Scratch to take on BYOB3's features; they're going to have a form of "BYOB", but not everything first class, right?
As of my last conversation with them, they were convinced about custom command blocks with inputs, but not about custom reporters and definitely not about lambda. Jens has been in touch more recently and may know more.
Will you be able to mod scratch2.0 as BYOB4? or will you stay in Squeak?
Disclaimer: I'm not Jens, either!
I want to see a BYOB 3.1, still in Squeak, with first class sprites and with constant-time adjoin and all-but-first for lists, at a minimum. I can't speak for Jens, but I'm going to have very limited time until mid-December; I'm teaching three classes at Cal and just constantly putting out fires. Next semester I have only one class scheduled, and I'm going to make the TAs do all the work so I have some free time.
In parallel with 3.1, I want us to work on BYOB 4. The current plan is to write it in Javascript, because everyone seems to want things to run in the browser (for reasons that escape me, but I'm a curmudgeon). The Scratch Team have, as you know, chosen Flash as the platform for Scratch 2.0, because there are a few things that they say Javascript can't do, but the what-Javascript-can-do situation keeps changing, and they're interested in the BYOB-in-Javascript project as an experiment that might affect their later work.
I don't have a good sense of the timing of Scratch 2.0, nor of the time it'll take us to develop BYOB 4.0. (It'll be in a language I understand, so I can help this time. ) So I don't know whether or not it'll turn out that we base our code partly on theirs or vice versa or neither.
What are your plans/hopes for BYOB/Scratch?
Oh, to take over the world, of course! In the best possible scenario, the Scratch Team see the light and put lambda in Scratch 2.0, or maybe 2.1, and I can get out of the software business altogether.
Another world-takeover possibility is that the College Board chooses our BYOB-based course as the curriculum for the planned "AP CS: Principles" exam -- the CS class that non-CS-majors take in college, or maybe in high school for AP credit. (We are one of five pilot programs they're funding.) Then every high school kid in (at least) the US learns BYOB! (The bad news about that is that we have to make the curriculum something about which they can have a mostly-multiple-guess test.) I think we're a long shot because most of the other pilots use some "grownup" language (some after a week or two of Scratch) and that's an easier sell to someone who doesn't understand the importance of big ideas. But we're a year further along than most of the others in developing our curriculum, which helps. Anyone who's interested can check out the course web page or the course Moodle lab activities. (Log in as guest on the Moodle site.)
As for the software itself, I want it to run blindingly fast, and to have first class everything (costumes, sounds, web pages, files, you name it). But even if we never touched BYOB again (not going to happen, don't panic, shadow! ), I'd feel really proud of the elegant visual representation of first class procedures. Jens did an amazing job of turning out a year's worth of daily design updates until we got everything just right.
(Not fishing for compliments, y'all don't have to say "I agree"! Just, my hopes for BYOB are mostly already met.)
Offline
bharvey wrote:
fullmoon wrote:
I already have preliminary plans for a mod.
It's gonna have lambda, right, fullmoon? *armtwist*
Most definitely. I've been thinking about how to represent Java/Flash-style, dot-operator OOP with blocks...
Offline