Maybe have a look at Planning and Implementing a Program
I think, for your project, I would create a 2D array (boatNoises[][]) holding the sound sequences and then a single makeNoise() function could be used - something like this (very rough pseudo code)
void makeNoise(byte boatState) {
byte numSounds = boatNoises[boatState][0];
for (byte n = 1; n <= numSounds; n++;) {
tone(boatNoises[boatState][n]);
}
}
I know that is very crude because I have not studied the exact nature of the sound sequences but I hope it gives a glimpse of the idea
The idea is to avoid the need for a separate function for each state
...R