There was a comment here that blocks only allows two motors in a motorgroup.
While on the surface that is true, the graphical configuration only allows two motors, with a little hacking and using switch blocks we can add as many more as we want (and a little insider knowledge I will share).
Lets say we want motors on ports 10, 11 and 12 to be part of a motor group. We start by making a motor group using ports 10 and 11 (select 10 as the first motor when creating it), next we create a single motor on port 12.
Converting our project to text we can see the generated Python code that VEXcode has created, this is the relevant part.
motor_group_10_motor_a = Motor(Ports.PORT10, False)
motor_group_10_motor_b = Motor(Ports.PORT11, False)
motor_group_10 = MotorGroup(motor_group_10_motor_a, motor_group_10_motor_b)
motor_12 = Motor(Ports.PORT12, False)
VEXcode uses a fairly structured naming convention due to the way code is generated but this may change in future versions so be careful.
The two things we are most interested in is the name of the motor group, in this case motor_group_10 and the name of the additional motor we want to add to it motor_12
To store the motors in a motor group the class uses an internal list called _motors, the leading underscore is meant to imply this is a private variable, but the reality is that no such thing exists in Python (or at least in the version we use). Adding additional motors to this list is what we need to do. The line of python code to do that would be (for this specific example)
motor_group_10._motors.append(motor_12)
We are appending motor_12 to the list.
Here is how that is done using blocks and switch.
If you experiment with this please use a new project rather than your competition code, remember that if you convert a blocks project to text to see what VEXcode is generating as names use a copy as you cannot convert back.
Many other hacks are possible using switch, for example, a 6 motor drivetrain perhaps.
happy hacking.