Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# default-project-template
# dishwasher-sim

![default-project-template](banner.png)
![dishwasher-sim](banner.png)

Find the project online at [projects.raspberrypi.org/en/projects/default-project-template](https://projects.raspberrypi.org/en/projects/default-project-template)
Find the project online at [projects.raspberrypi.org/en/projects/dishwasher-sim](https://projects.raspberrypi.org/en/projects/dishwasher-sim)

## Resources
For project materials and solutions, see [en/resources](https://github.com/raspberrypilearning/default-project-template/tree/master/en/resources) and [en/solutions](https://github.com/raspberrypilearning/default-project-template/tree/master/en/solutions).
For project materials and solutions, see [en/resources](https://github.com/raspberrypilearning/dishwasher-sim/tree/master/en/resources) and [en/solutions](https://github.com/raspberrypilearning/dishwasher-sim/tree/master/en/solutions).

## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md)
Expand Down
Binary file modified banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
101 changes: 8 additions & 93 deletions en/README.md
Original file line number Diff line number Diff line change
@@ -1,96 +1,11 @@
# Project Structure
# Dishwasher simulator

This repository is used to build CCP projects. Below is the directory structure and a description of what each folder and file is used for.
This English project builds a Scratch dishwasher simulator from the starter project in `code/dishwasher-sim-starter`.

```plaintext
en/
├── code/
│ ├── project-name-complete/
│ │ ├── main.py
│ │ └── project_config.yml
│ └── project-name-starter/
│ ├── main.py
│ └── project_config.yml
├── images/
│ └── .keep
├── resources/
│ └── .keep
├── solutions/
│ └── .keep
├── README.md
├── meta.yml
├── step_1.md
├── step_2.md
└── step_3.md
```
## Project files

## Directory and File Descriptions

### `code/`
Contains Python or HTML code used in the Raspberry Pi Code Editor.
- Each project must be in its own subdirectory. Directory names should be descriptive but are otherwise flexible.
- Inside each subdirectory:
- `main.py` (for Python projects) or `index.html` (for HTML projects)
- `project_config.yml` containing:
- `name`: The project name
- `identifier`: A unique identifier for the project
- `type`: 'python' or 'html'
- `build`: `false` by default; set to `true` for the editor project to be built

### `images/`
Stores all images for the project.
- Must contain a `banner.png` (the project’s hero image).
- Edited images should be accompanied by their original versions.
- Additional supporting images should be sensibly named.

### `resources/`
Contains supporting resources for the project.
- Must include the PDF version of the project, clearly named.
- Other resources such as offline starter projects, assets, or supporting files can also go here.
- Learners can download a `.zip` of this folder via:
`https://rpf.io/p/en/project-slug-go`

### `solutions/`
Contains the final completed version of the project, if needed.
- Learners can download this via:
`https://rpf.io/p/en/project-slug-get`

### `meta.yml`
Defines project metadata used for publishing. Example fields:
```yaml
title: Project title in sentence case
hero_image: images/banner.png
description: A short description of the project
listed: false
pdf: false
steps:
- title: What you will make
- title: Step title
completion:
- engaged
- title: Step title
completion:
- internal
- title: Challenge
challenge: true
completion:
- external
```

- **`listed`**:
- `true`: project is published from the master branch
- `false`: project is not publicly listed (but still accessible via slug URL)
- **`pdf`**: Path to a PDF in `resources/`, making it downloadable
- **`completion`**: Metrics for learner progress
- `engaged`: Learner has reached the first "making" step
- `internal`: Final "making" step of the project
- `external`: Last step of the project, often a challenge
- **Challenges**: Optional, provide extra tasks and count as `external` completion steps

### `README.md`
Documentation for the project, including the structure and explanation of contents.

### `step_1.md`, `step_2.md`, `step_3.md`
Markdown files containing step-by-step instructions for learners.
- Each step corresponds to a tutorial section.
- The number of steps varies by project.
- `code/dishwasher-sim-starter/` contains the starter `.sb3` with sprites, costumes, and sounds, but no variables, lists, or scripts.
- `code/dishwasher-sim-complete/` contains the completed `.sb3` used as the reference project.
- `solutions/` contains the completed `.sb3` for download.
- `images/` contains learner-facing screenshots and asset examples used in the steps.
- `step_1.md` to `step_9.md` contain the tutorial.
Binary file not shown.
4 changes: 4 additions & 0 deletions en/code/dishwasher-sim-complete/project_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: "Dishwasher simulator completed"
identifier: "dishwasher-sim-complete"
type: 'scratch'
build: false
Binary file not shown.
4 changes: 4 additions & 0 deletions en/code/dishwasher-sim-starter/project_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
name: "Dishwasher simulator starter"
identifier: "dishwasher-sim-starter"
type: 'scratch'
build: true
1 change: 0 additions & 1 deletion en/code/project-name-complete/main.py

This file was deleted.

4 changes: 0 additions & 4 deletions en/code/project-name-complete/project_config.yml

This file was deleted.

1 change: 0 additions & 1 deletion en/code/project-name-starter/main.py

This file was deleted.

4 changes: 0 additions & 4 deletions en/code/project-name-starter/project_config.yml

This file was deleted.

Binary file added en/images/banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/bowl-cleaning-states.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/clean-plates.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/cloth-states.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/copy-scripts.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/dish-sprites.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/finished-project.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/music-volume.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/rack.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/skip-button.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/soap.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added en/images/spoon-cleaning-states.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions en/landing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
## What you will make

You're going to build a **dishwasher simulator**. The player adds soap, scrubs a dirty dish until it sparkles, then drags it into the rack before the next dirty dish appears.

![A dishwasher game with a kitchen sink, soap, a rack, and a dirty mug ready to clean.](images/finished-project.png)
18 changes: 14 additions & 4 deletions en/meta.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
title: Project title in sentence case
title: Dishwasher simulator
hero_image: images/banner.png
description: A short description of the project
description: >-
Build a Scratch game where the player soaps, scrubs, and racks dirty dishes
one at a time.
listed: false
pdf: false
steps:
- title: What you will make
- title: Step title
- title: Start the dishwasher
completion:
- engaged
- engaged
- title: Add soap and a cloth
- title: Make one dish appear
- title: Scrub the dish
- title: Put it in the rack
- title: Copy the dish scripts
- title: Add music controls
completion:
- internal
- title: Challenge
challenge: true
completion:
Expand Down
Binary file added en/solutions/Dishwasher simulator.sb3
Binary file not shown.
51 changes: 14 additions & 37 deletions en/step_1.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,22 @@
## What you will make
OR
## What you will do - change meta if you use this

A brief description - one or two sentences.
You're going to build a **dishwasher simulator**. The player adds soap, scrubs a dirty dish until it sparkles, then drags it into the rack before the next dirty dish appears.

--- print-only ---
> [!NOPRINT]
>
> <div class="scratch-preview">
> <iframe allowtransparency="true" width="485" height="402" src="https://scratch.mit.edu/projects/embed/1362381726/?autostart=false" frameborder="0"></iframe>
> </div>

![ALT TEXT](images/IMAGE.png)
> [!PRINTONLY]
>
> ![A dishwasher game with a kitchen sink, soap, a rack, and a dirty mug ready to clean.](images/finished-project.png)

--- /print-only ---
You will start with a Scratch project that already has the sprites, costumes, and sounds. You will create the variables and list as you build the code.

--- no-print ---

[Editor embed](https://editor.raspberrypi.org/en/embed/viewer/project-slug)

--- /no-print ---

--- no-print ---

Video embed

<video width="640" height="360" controls>
<source src="images/videoname.mp4" type="video/mp4">
</video>

Youtube embed
<html>
<div style="position: relative; overflow: hidden; padding-top: 56.25%;">
<iframe style="position: absolute; top: 0; left: 0; right: 0; width: 100%; height: 100%; border: none;" src="https://www.youtube.com/embed/XXXXXXXXX?rel=0&cc_load_policy=1" allowfullscreen allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share">
</iframe>
</div><br>
</html>

Scratch embed
<div class="scratch-preview">
<iframe allowtransparency="true" width="485" height="402" src="https://scratch.mit.edu/projects/embed/XXXXXXXXX/?autostart=false" frameborder="0"></iframe>
</div>

--- /no-print ---
![The dirty dish sprites included in the starter project.](images/dish-sprites.png)

### You will need:
- a
- b
- c

- The Scratch editor
- The [Dishwasher simulator starter](https://scratch.mit.edu/projects/1362382639/editor){:target="_blank"} project
46 changes: 43 additions & 3 deletions en/step_2.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,48 @@
## Step title
## Start the dishwasher

--- task ---
Set up the game state, place the rack, and show the first dish.

> [!TASK]
>
> Open the [Dishwasher simulator starter](https://scratch.mit.edu/projects/1362382639/editor){:target="_blank"}. It already has the sprites, costumes, and sounds you need.

--- /task ---
> [!TASK]
>
> Click the `Stage`, then open the `Variables`{:class="block3variables"} blocks menu. Make these variables **for all sprites**:
>
> - `clean plates`{:class="block3variables"} stores the player's score. Leave this variable ticked so it appears on the Stage.
> - `clean`{:class="block3variables"} remembers whether the current dish is clean. Untick this variable.
> - `soap`{:class="block3variables"} remembers whether the player has picked up soap. Untick this variable.
>
> <p align="center"><img src="images/clean-plates.png" alt="The clean plates variable ticked in the Variables menu." width="226" height="68" style="object-fit: contain;"></p>

> [!TASK]
>
> Click the `Stage`. Add this script to reset the game and show the `bowl` first.
>
> ```blocks3
> +when green flag clicked
> +set [clean plates v] to (0)
> +set [clean v] to [false]
> +set [soap v] to [false]
> +broadcast (bowl v)
> ```

> [!TASK]
>
> Click the `rack` sprite. It will be the target for clean dishes. Use a `when green flag clicked`{:class="block3events"} block to put it in the right place.
>
> The `rack` sprite is just a collision box. It looks plain because the drying rack the player sees is already drawn on the backdrop.
>
> <p align="center"><img src="images/rack.png" alt="The rack sprite." width="180" height="120" style="object-fit: contain;"></p>
>
> ```blocks3
> +when green flag clicked
> +go to x: (140) y: (-38)
> ```

> [!TIP]
>
> In games, two sprites **collide** when they are touching. Later, a `touching ()?`{:class="block3sensing"} block will detect when a clean dish collides with the rack.

Click the green flag. Nothing appears yet, but the score resets and the rack moves into place.
Loading
Loading