Cargo-bot difficulty

I love the idea behind Cargo-bot. I would like it so much more if it didn’t get difficult so quickly. I would love to have my programming students use this but I know some would get frustrated by how difficult just the tutorials can be. I believe it should be fairly easy to get three stars in the tutorial but this is not the case. Even the Easy levels take a considerable amount of time to get three stars. I’m not a pushover when it comes to challenging students but there’s a difference between struggling and frustration. Will there be addition levels available or user-created levels available? I’m excited about this product. Can’t wait to see it grow.

@tazboy, unlike most ‘apps’ , we are very fortunate that those nice people at Two Lives Left have been kind enough to share the source code for Cargo-Bot (see code examples shipped with Codea).

Whilst it can appear fairly daunting, they’ve done a great job documenting the code so us mere mortals can play around and understand what’s going on under the hood. I guess, it’s not beyond the realms of possibility that you could customise the code for your own requirements to make the game easier and add extra functionality for your own purposes.

There seems to be a misunderstanding. I was not referring to source code, Codea, or programming using Codea, I was referring to the game Cargo-bot. The game is meant to help people think like programmers without actually coding. I was hoping the game would have a few more puzzles that were simpler to solve.

If you just open the cargo-bot project the first tab visible is ‘‘Level’’: it defines the levels!

if you go to line 51 you see the first level defined:

levels = {
    {
        name = "Cargo 101",
        claw = 1,
        stars = {3,3,3},
        funcs = {8,8,8,5},
        toolbox = {"right","pickup","left","f1","f2","f3","f4"},
        stage = {{"yellow"},{}},
        goal = {{},{"yellow"}},
        hint = "Down, Right, Down",
    },

This syntaxt in insanely clear! (thank you Simeon)

If you want to change the number of places, then add some {} with comas:

stage = {{"yellow"},{},{},{},{}},

…will add 3 empty places on the right

Define a goal with the same number of places

goal = {{},{},{},{"yellow"},{}},

That should do it. Figure out the other changes you can make by looking at the other levels. That is the beauty of lua/codea that coding becomes so simple.

So now you see it is really easy to make the levels you need yourself

And you can adjust the difficuly to your exact needs. (the first levels seemed preatty easy to me? But maybe you students are small kid?)

Hope this explanation will give you the starting point you were missing.

@Jmv38
I think you misunderstood the question of tazboy,

He more or less wants a second app, which would be much easier
e.g. more examples of how you can solve …
and easier following steps.

I agree, solutions in the original become very quick ‘challenging’ especially if you have to ‘learn’ programming!

@tazboy
suggestion: etoys or Scratch (living Smalltalks) are very much suited to
learn programming, coming form MIT and are too suitable for kids.

Though Smalltalk itself is easy AND not so easy too! :wink:

@tazboy an idea for you. Make a competition where your students can define new levels and other students have to try to solve the new levels.

I think the distraction is in attempting to get 3 stars. The stars are about using the minimum number of control pieces in the program, not solving the problem.

For students the focus should be first on solving the problem on each level and ignoring the stars.

Ie write some code that just works.

Then getting 3 stars should be viewed as refactor for “performance”. The issue I have with that is it’s an artificial performance constraint anyway, minimum number of instructions in code, not processing time. This would be like saying to a programmer: “optimise your code for file size” which isn’t even a sensible way to refactor anyway.

The only benefit of the students attempting to shorten their code by doing odd things on the early levels, is because in the later levels you have to use some of those tricks or you won’t have enough space in your program to solve the problem.

What would be nicer in my opinion in Cargo Bot would be to have a different stars path which was about minimising the number of operations executed to complete the task, as this style of optimisation is much more satisfying and real world than program size.