|
| 1 | +# Overarching thoughts (North Star) |
| 2 | +* The primary purpose for Blocks is to be an easier environment for students to program robots. |
| 3 | + * Students should be able to program in Blocks without any experienced software mentor help. |
| 4 | + * This means that reducing confusion in blocks is more important than being 1:1 mapping to Python |
| 5 | + * For ease of use, we are ok with not being able to do everything in Blocks you can do in Python. |
| 6 | +* You should be able to make a competitive robot using Blocks |
| 7 | + * Our goal is to raise the floor, not lower the ceiling |
| 8 | +* Programming in Blocks is still programming. You can make logic errors and programs that don't work and have errors |
| 9 | +* Some students will move on from Blocks to text based languages |
| 10 | + * Students who want to do more than they can in Blocks can export from Blocks and use that as a starting point for their own Python coding. |
| 11 | + |
| 12 | +# Intentional Limitations (for simplicity) |
| 13 | +* Each blockly workspace goes to one Python file (module) and can only contain one class |
| 14 | +* The only type of methods that can be created are class instance methods |
| 15 | +* All variables created in blockly will be class instance variables |
| 16 | + |
| 17 | +# Design thoughts |
| 18 | +(We assume that these bullet points apply to programming in C++, Java, and Python too.) |
| 19 | +## OpModes |
| 20 | +* An OpMode can be either Autonomous or Teleop |
| 21 | +* An OpMode can be marked as Disabled or Enabled |
| 22 | +* An OpMode has access to a singleton instance of the Robot class |
| 23 | +## Robot |
| 24 | +* There should be one robot class that is shared between all OpModes |
| 25 | +* A robot has zero or more mechanisms |
| 26 | +* A Robot has zero or more components |
| 27 | + |
| 28 | +## Mechanisms |
| 29 | +* A mechansim can be created by the student and can have zero or more submechanisms and zero or more components |
| 30 | +* Example: A claw could have a servo (to open and close) and a range sensor (to determine when something is in the claw) |
| 31 | + |
| 32 | +## Components |
| 33 | +* Every actuator is a component |
| 34 | +* Every sensor is a component |
0 commit comments