amyjko / gidget Goto Github PK
View Code? Open in Web Editor NEWComputing education through playful debugging
Computing education through playful debugging
Gidget's memory window is adding multiple instances of the same "thing" in his 'focus' and 'results' lists.
This happens consistently in any level where gidget is SCANning and GOTOing to multiple things. Level learnCompounds (currently level 8) is a good example.
Visually, in "focus," multiple instances of the same things are added to the same list. In "results," it looks like a new list is being made for each insatnce of the thing.
It should grab all of the JSON files from the server and display useful results about the study.
For example, if the parser complains a comma is missing, offer to add one. If the parser complains that a name is missing for a command, ask what it should be.
If we leave the quit button active, a person could submit the data multiple times and receive multiple codes.
If a gull is enclosed within walls, a "phantom" (that we can't see), will continue to pursue gidget. He does not "avoid" this phantom gull, resulting in failure.
Example: Uncommenting some of the walls in Level 34 (relaseGulls_bug) will produce this behavior. Level 34 also exhibits Gidget not avoiding correctly with or without the walls.
TAG and UNTAG will be used to give things attributes that can be checked with the IS command. We don't have a use for this at the moment, but I anticipate it being a nice feature for level design.
This will improve the explanation of why the goal succeeded or failed.
In level "useObjectEnergize," having an unspecified "beneficiary" in gCode halts the rest of the program from executing.
Example gCode for bug replication:
ask battery to energize
Console Message:
"TypeError: Result of expression 'arguments[argIndex]' [undefined] is not an object."
This should happen in the initialization step.
Currently, it's next to the world label. Maybe outside of the whole content area, on the right or left? It should be really obvious how to quit and get the MTurk code, but now it's kind of hidden.
I'm imagining a big button that says "I'm finished", which uploads the data set and provides a code.
This way, we can track what changes the user made to each level and when.
The current workaround is to never put something in the first row that has a name. Could we just make it so that names appear on the bottom when they might get clipped?
The experiment we're running should support three conditions, it, he, and she, all resulting in different graphics and text. Our media should be checking this variable and changing the text accordingly.
Perhaps my code is wrong here, but I am trying to have "blackhole" "grab" gidget's items if he passes over it.
Possible outcomes after item is stolen:
Potential solution is to make the focus much clearer and more obvious.
Fixed width for control, Verdana for experimental.
Control condition with no rounded corners, black with green terminal text.
For example, a flash, a popup, and perhaps a highlight on the "the end button".
Background for page.
To be consistent with the introduction.
The process for this should be to go through each possible parsing error, as enumerated in text.js, and produce a program that produces the error. We want to confirm that there aren't any errors in any of these cases.
This will help deal with confusion about what the goals mean and how they are evaluated.
Currently, finished.php doesn't do anything with the uploaded data. It needs to store it for later in a database somewhere.
For example, perhaps we could just use graphics, allowing things of height 2 to be rendered two cells tall, so they look tall and things can go behind them. The current shadows just don't work very well.
The questionnaire should ask about prior programming experience, gender, age, etc., and be part of the form submission.
This is probably related to the Gidget problem we had earlier (his giving up if there is no valid path). This is not an essential feature and can be prioritized lower since the level can be redesigned if this feature doesn't work.
In level, learnAll (currently level 20), rats are initially barricaded inside walls (i.e. no path to Gidget). Gidget proceeds to press a button which lowers the walls and opens up a path. Currently, the unexpected behavior is that the rats don't move out of their initial position (probably because their initial "goto" failed and they aren't executing it again). GOTOing to a rat drains Gidget's energy as expected.
This way, things can have a bit more personality.
If a gull is blocking the only path to an object that Gidget is trying to "goto" while "avoiding," it will cause him to fail.
Example: Level 30 (getTwoRocksGull_Bug).
This allows missions to be stated in multiple paragraphs with different affects.
Gidget's words should vary by condition. In particular, the GIDGET.experiment.condition flag should be checked to vary the text in text.js.
Mike, this is yours!
For example, if Gidget has grabbed a rock and a car has grabbed gidget, and the car moves, everything should move.
Currently, it feels like Gidget is talking at the user, but the user isn't talking back. Are there ways we can present the play, next, next line, and end buttons more as a response to what Gidget is saying, rather than some user interface control?
One of the challenges of this from a UI perspective is that if we put them below Gidget's text, they'll keep moving, which will make the 'next' button difficult to click repeatedly.
Mike's words: " "avoid" does not work consistently with more than one thing to dodge. E.g. if you uncomment some of the code I left out in Level "learnAvoidPassive," Gidget does not avoid the blue goops. This is consistent with "avoid"ing multiple rats."
This will allow us to know how many times the user ran the program. This should all be stored in the levelMetadata object stored in local storage.
gCode (Gidget code), executes correctly and goal should be completed successfully.
GOAL: "rock on gidget is red"
Currently, the experimental condition is reset on every page load. It should be saved in local storage.
Currently it appears offset to the right and the div doesn't fit to it's size.
All of the runtime messages are factored out, but I haven't factored out the parsing error messages.
Need to ask Parmit about how she's handling code generation.
When a user edits a level's code and then returns to the level later, the user's version of the code should appear, not the default code for the level.
For example, he may be happy about one thing, then sad about another. Each paragraph might be tagged with a certain affect, in the way execution actions are.
SCANning or ANALYZEing an item more than once continues to add multiple instances of itself to Gidget's "memory," i.e. the "scanned" and "analyzed" lists on the right column.
This potentially makes it appear as if there are more instances of things than there actually are in the world.
This was a condition I overlooked when implementing the code to animate goal execution.
For example, Gidget grabs a rock and the blackhole grabs it from him.
It appears if a gull is on an object, gidget will not "goto" it if "avoiding".
Example: Level 31 (getTwoRocksGull2_Bug)
[Gidget sees two rocks, but only goes and grabs one.]
Currently, the name is just modified with no fanfare. Should it be more apparent that it changed?
ANALYZEing an item has gidget state:
"I analyzed X. Now I can make it do things!"
Analyze does the following things:
Currently:
Possible solutions:
Executing "play" stops after executing the first line. Program will continue (and finish) only after playing "play" again.
This appears to happen in levels with "gulls" in them. Another example is Level 29 (getTwoRocksGulls).
SCANning gidget causes some unexpected behaviors:
Feature requests after trying to implement movie in current animation script:
Optional (let's discuss):
2. Sprite rumbling/shake animation (like we saw in the Nintendo DS example - can be used in the "boom" sequence and/or when Gidget lands on his/her/its head).
3. Sprite rotation (CSS3 compatibility with older browsers may be limited)
4. Glide ability from (x1,y1) to (x2,y2) for sprites (can be used for Gidget's falling sequence, factory workers running out of building, and possibly for helicopters.)
If we choose not to implement the optional section above, we might not have to actually "animate" anything. Instead, we could just use the current code, as-is, and have it go through the storyboard frames (much like the MOV file I uploaded). However, depending on the number of frames we implement, this can appear choppy.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.