Not sure if Latch was suggesting the same thing, but I would go with using an array too:
Dim ShipDamage(100,4,3)
This allows for up to 100 enemy ships - and your ship could be 0.
Get your ship image (found this one on the net):
Then divide it into sections - saving each one as a separate image.
Next, colour each of the sections red and save those too.
This was done rough and quick, but it should give you the idea...
Note that in the above Dim, the 4,3 corresponds to the size of the grid (0 to 4 across and 0 to 3 down).
When an enemy ship gets hit, you decide what section was hit and use something like:
ShipDamage(ShipNum,SectionX,SectionY)=1
Note you can use 0=No Damage and 1=Damaged or inc the value until a certain value has been reached.
On your hud, if you target ship 20, you use a loop to run through the grid array placing an uncoloured section on the hud if it's zero and a red section if it's 1.
CurrentTarget=20
For Ny=0 To 3
Next Nx
If ShipDamage(CurrentTarget,Nx,Ny)=0
Rem Place non-red section on grid
Else
Rem Place red section on grid
Endif
For Nx=0 To 4
Next Ny
This gives you something like:
[Edit] Just had a thought - might look better if the undamaged ship was green. You could also have the sections unjointed too for effect...
TDK_Man