Add some print statements to self.search_capture() to see where the append to the list is happening incorrectly, as obviously the length never equals zero. Note that in "right" and "left" either the row or the column should be the same, and you add/subtract from both. I would suggest that you make each move a separate function, that you pass a color to, and test each one individually.
BustACode commented: The reason I wrote it is that some of the programs were rendered unreadble, even by me later. So it gets rid of the detritus. +0
mark103 commented: ty this is the answer i'm looking for +2