No he mirado todo el código pero el error es claro.
En la linea 38 en la estructura UBICARBARCOS creas un objeto llamado TipoBarco, del tipo BARCO. Luego en la linea 77 haces uso de ese objeto, pero lo llamas de forma equivocada: unBarco.tipoBarco.onGrid[0].X = -1;
Es: unBarco.
TipoBarco.onGrid[0].X = -1;
No: unBarco.
tipoBarco.onGrid[0].X = -1;
Ves la diferencia.
El error dice que no tienes ningun ningun miembro tipoBarco poro si tienes uno TipoBarco.
No he mirado a ver si tienes mas errores asi que de momento lo dejo ahi. XDD
Te lo dejo aqui por que es muy grande:
http://codepad.org/bwj1MoTJ
Y otra cosa... use las etiquetas para que vean mejor el codigo.