This gives you two instances of your pattern, tiled in the horizontal direction.

Note - your seed patterns (like the ones made by p and p1 above) should normally be drawn to the top and right of the turtle's starting position. If you go below or to the left of this position, you will overlap other patterns in your tiled picture. If you deliberately want this overlap, you are free to draw in any direction.

If you want more patterns in a row, just add them in:

clear()
invisible()
val pic = HPics(
p1,
p1,
p1,
p1
)
draw(pic)

Now you have four of your pattern blocks in a row.

What if you want the third block in the row to have two more blocks on top of it?

Code completion within Kojo will help you with the inputs/args to the transformations.
Note - With function call notation, the transformation names begin with capital letters. The examples above should make this clear.

Another container - GPics

You have already seen the HPics and VPics containers. You generally use these containers to make a picture by tiling a seed pattern. There's another container called GPics which you can use to build arbitrary pictures out of a bunch of other pictures. GPics does not try to tile the pictures within it. It just draws them one on top of the other. It's your job to translate, rotate etc the pictures within a GPics to get the figure that you want.
Here's an example of GPics usage:

Effects

Effects build upon transformations to provide richer, uhm, effects. Generally, transformations modify a picture, while effects make multiple copies of a picture and put them together in interesting ways.

The following effects are available:

spin

reflect

Again, code completion within Kojo will help you to use these effects.