An Amazing Maze Game
Experience: 1st year, 2nd quarter
Practice: Creating computational artifacts, Collaborating around computing, Testing and refining computational artifacts, and Communicating about computing
Concept: Algorithms, Control, Modularity, and Program Development
Overview and Purpose
Coders create a player controlled maze game with multiple, custom levels. The purpose of this project is to introduce conditional statements (if blocks) to create player controls, while reinforcing how to use the image editor to design mazes.
Objectives and Standards
- I will learn how to create player controls in Scratch.
- I will learn how to create custom backdrops in Scratch.
- How can we create player controls in Scratch?
- How can we create custom backdrops in Scratch?
- I will create a player controlled maze with custom levels.
- How can we create a player controlled maze with custom levels?
1B-AP-10 Create programs that include sequences, events, loops, and conditionals
- Control structures specify the order (sequence) in which instructions are executed within a program and can be combined to support the creation of more complex programs. Events allow portions of a program to run based on a specific action. For example, students could write a program to explain the water cycle and when a specific component is clicked (event), the program would show information about that part of the water cycle. Conditionals allow for the execution of a portion of code in a program when a certain condition is true. For example, students could write a math game that asks multiplication fact questions and then uses a conditional to check whether or not the answer that was entered is correct. Loops allow for the repetition of a sequence of code multiple times. For example, in a program that produces an animation about a famous historical character, students could use a loop to have the character walk across the screen as they introduce themselves. (source)
1B-AP-08 Compare and refine multiple algorithms for the same task and determine which is the most appropriate.
- Different algorithms can achieve the same result, though sometimes one algorithm might be most appropriate for a specific situation. Students should be able to look at different ways to solve the same task and decide which would be the best solution. For example, students could use a map and plan multiple algorithms to get from one point to another. They could look at routes suggested by mapping software and change the route to something that would be better, based on which route is shortest or fastest or would avoid a problem. Students might compare algorithms that describe how to get ready for school. Another example might be to write different algorithms to draw a regular polygon and determine which algorithm would be the easiest to modify or repurpose to draw a different polygon. (source)
1B-AP-09 Create programs that use variables to store and modify data.
- Variables are used to store and modify data. At this level, understanding how to use variables is sufficient. For example, students may use mathematical operations to add to the score of a game or subtract from the number of lives available in a game. The use of a variable as a countdown timer is another example. (source)
1B-AP-11 Decompose (break down) problems into smaller, manageable subproblems to facilitate the program development process.
- Decomposition is the act of breaking down tasks into simpler tasks. For example, students could create an animation by separating a story into different scenes. For each scene, they would select a background, place characters, and program actions. (source)
1B-AP-13 Use an iterative process to plan the development of a program by including others' perspectives and considering user preferences.
- Planning is an important part of the iterative process of program development. Students outline key features, time and resource constraints, and user expectations. Students should document the plan as, for example, a storyboard, flowchart, pseudocode, or story map. (source)
1B-AP-15 Test and debug (identify and fix errors) a program or algorithm to ensure it runs as intended.
- As students develop programs they should continuously test those programs to see that they do what was expected and fix (debug), any errors. Students should also be able to successfully debug simple errors in programs created by others. (source)
1B-AP-16 Take on varying roles, with teacher guidance, when collaborating with peers during the design, implementation, and review stages of program development.
- Collaborative computing is the process of performing a computational task by working in pairs or on teams. Because it involves asking for the contributions and feedback of others, effective collaboration can lead to better outcomes than working independently. Students should take turns in different roles during program development, such as note taker, facilitator, program tester, or “driver” of the computer. (source)
1B-AP-17 Describe choices made during program development using code comments, presentations, and demonstrations.
- People communicate about their code to help others understand and use their programs. Another purpose of communicating one's design choices is to show an understanding of one's work. These explanations could manifest themselves as in-line code comments for collaborators and assessors, or as part of a summative presentation, such as a code walk-through or coding journal. (source)
Practices and Concepts
Practice 5: Creating computational artifacts
- "The process of developing computational artifacts embraces both creative expression and the exploration of ideas to create prototypes and solve computational problems. Students create artifacts that are personally relevant or beneficial to their community and beyond. Computational artifacts can be created by combining and modifying existing artifacts or by developing new artifacts. Examples of computational artifacts include programs, simulations, visualizations, digital animations, robotic systems, and apps." (p.80)
- P5.2. Create a computational artifact for practical intent, personal expression, or to address a societal issue. (p.80)
- P5.3. Modify an existing artifact to improve or customize it. (p.80)
Practice 2: Collaborating around computing
- "Collaborative computing is the process of performing a computational task by working in pairs and on teams. Because it involves asking for the contributions and feedback of others, effective collaboration can lead to better outcomes than working independently. Collaboration requires individuals to navigate and incorporate diverse perspectives, conflicting ideas, disparate skills, and distinct personalities. Students should use collaborative tools to effectively work together and to create complex artifacts." (p.75)
- P2.1. Cultivate working relationships with individuals possessing diverse perspectives, skills, and personalities. (p.75)
Practice 6: Testing and refining computational artifacts
- "Testing and refinement is the deliberate and iterative process of improving a computational artifact. This process includes debugging (identifying and fixing errors) and comparing actual outcomes to intended outcomes. Students also respond to the changing needs and expectations of end users and improve the performance, reliability, usability, and accessibility of artifacts." (p.81)
- P6.1. Systematically test computational artifacts by considering all scenarios and using test cases." (p.81)
- P6.2. Identify and fix errors using a systematic process. (p.81)
Practice 7: Communicating about computing
- "Communication involves personal expression and exchanging ideas with others. In computer science, students communicate with diverse audiences about the use and effects of computation and the appropriateness of computational choices. Students write clear comments, document their work, and communicate their ideas through multiple forms of media. Clear communication includes using precise language and carefully considering possible audiences." (p.82)
- P7.2. Describe, justify, and document computational processes and solutions using appropriate terminology consistent with the intended audience and purpose. (p.82)
- "Control structures specify the order in which instructions are executed within an algorithm or program. In early grades, students learn about sequential execution and simple control structures. As they progress, students expand their understanding to combinations of structures that support complex execution." (p.91)
- Grade 5 - "Control structures, including loops, event handlers, and conditionals, are used to specify the flow of execution. Conditionals selectively execute or skip instructions under different conditions." (p.103)
- "Algorithms are designed to be carried out by both humans and computers. In early grades, students learn about age-appropriate algorithms from the real world. As they progress, students learn about the development, combination, and decomposition of algorithms, as well as the evaluation of competing algorithms." (p.91)
- Grade 5 - "Different algorithms can achieve the same result. Some algorithms are more appropriate for a specific context than others." (p.103)
- "Modularity involves breaking down tasks into simpler tasks and combining simple tasks to create something more complex. In early grades, students learn that algorithms and programs can be designed by breaking tasks into smaller parts and recombining existing solutions. As they progress, students learn about recognizing patterns to make use of general, reusable solutions for commonly occurring scenarios and clearly describing tasks in ways that are widely usable." (p.91)
- Grade 5 - "Programs can be broken down into smaller parts to facilitate their design, implementation, and review. Programs can also be created by incorporating smaller portions of programs that have already been created." (p.104)
- "Computer programs store and manipulate data using variables. In early grades, students learn that different types of data, such as words, numbers, or pictures, can be used in different ways. As they progress, students learn about variables and ways to organize large collections of data into data structures of increasing complexity." (p.91)
- Grade 5 - "Programming languages provide variables, which are used to store and modify data. The data type determines the values and operations that can be performed on that data." (p.103)
- A step-by-step process to complete a task. (source)
- A formula or set of steps for solving a particular problem. To be an algorithm, a set of rules must be unambiguous and have a clear stopping point. (source)
- A feature of a programming language that performs different computations or actions depending on whether a programmer-specified Boolean condition evaluates to true or false. (A conditional could refer to a conditional statement, conditional expression, or conditional construct.) (source)
- Referring to an action that takes place only if a specific condition is met. Conditional expressions are one of the most important components of programming languages because they enable a program to act differently each time it is executed, depending on the input. Most programming languages use the word if for conditional expressions. For example, the conditional statement: “if x equals 1 exit” directs the program to exit if the variable x is equal to 1. (source)
- The computational concept of making decisions based on conditions (e.g., current variable values). (source)
- An action or occurrence detected by a program. Events can be user actions, such as clicking a mouse button or pressing a key, or system occurrences, such as running out of memory. Most modern applications, particularly those that run in Macintosh and Windows environments, are said to be event-driven,because they are designed to respond to events. (source)
- The computational concept of one thing causing another thing to happen. (source)
- Any identifiable occurrence that has significance for system hardware or software. User-generated events include keystrokes and mouse clicks; system-generated events include program loading and errors. (source)
- A programming structure that repeats a sequence of instructions as long as a specific condition is true. (source)
- In a loop structure, the program asks a question, and if the answer requires an action, it is performed and the original question is asked again until the answer is such that the action is no longer required. For example, a program written to compute a company’s weekly payroll for each individual employee will begin by computing the wages of one employee and continue performing that action in a loop until there are no more employee wages to be computed, and only then will the program move on to its next action. Each pass through the loop is called an iteration. (source)
- The computational concept of running the same sequence multiple times. (source)
- The characteristic of a software/web application that has been divided (decomposed) into smaller modules. An application might have several procedures that are called from inside its main procedure. Existing procedures could be reused by recombining them in a new application (source)
- One or more Scratch blocks connected together to form a sequence. Scripts begin with an event block that responds to input (e.g., mouse click, broadcast). When triggered, additional blocks connected to the event block are executed one at a time. (source)
- A symbolic name that is used to keep track of a value that can change while a program is running. Variables are not just used for numbers; they can also hold text, including whole sentences (strings) or logical values (true or false). A variable has a data type and is associated with a data storage location; its value is normally changed during the course of program execution. (source)
- Variables play an important role in computer programming because they enable programmers to write flexible programs. Rather than entering data directly into a program, a programmer can use variables to represent the data. Then, when the program is executed, the variables are replaced with real data. This makes it possible for the same program to process different sets of data. (source)
More vocabulary words from CSTA
- Potential subjects: Math, media arts
- Example(s): The player controls in this project explore altering the values of X and Y coordinates to change a player’s location, which relates to coordinate planes in math. Click here to see other examples and share your own ideas on our subforum dedicated to integrating projects or click here for a studio with similar projects.
- There are a wide range of careers in game development that involve coding. For example, coding character movement, player controls, particle and game physics, random world or object generators, sound synthesis, game engines and tools, localization, performance and server optimization, etc. Click here to visit a website dedicated to exploring potential careers through coding.