The 169 range is used by Microsoft when Windows cannot access a DHCP controller to get an proper address. Maybe this is where the problem lies.
First thing I would do is get rid of the auto assigned IP addresses on all PCs and allocate nice same static IP addresses as per my example above.
You can then to ping tests from a command prompt to each IP address to check if it is live.
e.g.
On PC1:
ping 192.168.0.2
On PC2:
ping 192.168.0.1
Both should yield result similar to:-
Pinging 192.168.0.x with 32 bytes of data:
Reply from 192.168.0.x: bytes=32 time<1ms TTL=64
Reply from 192.168.0.x: bytes=32 time<1ms TTL=64
Reply from 192.168.0.x: bytes=32 time<1ms TTL=64
Reply from 192.168.0.x: bytes=32 time<1ms TTL=64
Ping statistics for 192.168.0.x:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
(replace 192.168.0.x with the IP being pinged)