I am currently creating a chess game for the iPhone. The parts on the board are represented by a series of UIImageViews, each of which is shown on the square of the board, and refers to the correct image to display for that square. One square was selected, and a move was made, the function is (void) updateBoard; called in ViewController:
-(void)updateBoard{ NSLog(@"updating board"); [square1 setImage:[UIImage imageNamed:[game imageForSquare:1]]]; [square2 setImage:[UIImage imageNamed:[game imageForSquare:2]]]; [square3 setImage:[UIImage imageNamed:[game imageForSquare:3]]]; [square4 setImage:[UIImage imageNamed:[game imageForSquare:4]]]; [square5 setImage:[UIImage imageNamed:[game imageForSquare:5]]]; [square6 setImage:[UIImage imageNamed:[game imageForSquare:6]]]; [square7 setImage:[UIImage imageNamed:[game imageForSquare:7]]]; [square8 setImage:[UIImage imageNamed:[game imageForSquare:8]]]; [square9 setImage:[UIImage imageNamed:[game imageForSquare:9]]]; [square10 setImage:[UIImage imageNamed:[game imageForSquare:10]]]; [square11 setImage:[UIImage imageNamed:[game imageForSquare:11]]]; [square12 setImage:[UIImage imageNamed:[game imageForSquare:12]]]; [square13 setImage:[UIImage imageNamed:[game imageForSquare:13]]]; [square14 setImage:[UIImage imageNamed:[game imageForSquare:14]]]; [square15 setImage:[UIImage imageNamed:[game imageForSquare:15]]]; [square16 setImage:[UIImage imageNamed:[game imageForSquare:16]]]; [square17 setImage:[UIImage imageNamed:[game imageForSquare:17]]]; [square18 setImage:[UIImage imageNamed:[game imageForSquare:18]]]; [square19 setImage:[UIImage imageNamed:[game imageForSquare:19]]]; [square20 setImage:[UIImage imageNamed:[game imageForSquare:20]]]; [square21 setImage:[UIImage imageNamed:[game imageForSquare:21]]]; [square22 setImage:[UIImage imageNamed:[game imageForSquare:22]]]; [square23 setImage:[UIImage imageNamed:[game imageForSquare:23]]]; [square24 setImage:[UIImage imageNamed:[game imageForSquare:24]]]; [square25 setImage:[UIImage imageNamed:[game imageForSquare:25]]]; [square26 setImage:[UIImage imageNamed:[game imageForSquare:26]]]; [square27 setImage:[UIImage imageNamed:[game imageForSquare:27]]]; [square28 setImage:[UIImage imageNamed:[game imageForSquare:28]]]; [square29 setImage:[UIImage imageNamed:[game imageForSquare:29]]]; [square30 setImage:[UIImage imageNamed:[game imageForSquare:30]]]; [square31 setImage:[UIImage imageNamed:[game imageForSquare:31]]]; [square32 setImage:[UIImage imageNamed:[game imageForSquare:32]]]; [square33 setImage:[UIImage imageNamed:[game imageForSquare:33]]]; [square34 setImage:[UIImage imageNamed:[game imageForSquare:34]]]; [square35 setImage:[UIImage imageNamed:[game imageForSquare:35]]]; [square36 setImage:[UIImage imageNamed:[game imageForSquare:36]]]; [square37 setImage:[UIImage imageNamed:[game imageForSquare:37]]]; [square38 setImage:[UIImage imageNamed:[game imageForSquare:38]]]; [square39 setImage:[UIImage imageNamed:[game imageForSquare:39]]]; [square40 setImage:[UIImage imageNamed:[game imageForSquare:40]]]; [square41 setImage:[UIImage imageNamed:[game imageForSquare:41]]]; [square42 setImage:[UIImage imageNamed:[game imageForSquare:42]]]; [square43 setImage:[UIImage imageNamed:[game imageForSquare:43]]]; [square44 setImage:[UIImage imageNamed:[game imageForSquare:44]]]; [square45 setImage:[UIImage imageNamed:[game imageForSquare:45]]]; [square46 setImage:[UIImage imageNamed:[game imageForSquare:46]]]; [square47 setImage:[UIImage imageNamed:[game imageForSquare:47]]]; [square48 setImage:[UIImage imageNamed:[game imageForSquare:48]]]; [square49 setImage:[UIImage imageNamed:[game imageForSquare:49]]]; [square50 setImage:[UIImage imageNamed:[game imageForSquare:50]]]; [square51 setImage:[UIImage imageNamed:[game imageForSquare:51]]]; [square52 setImage:[UIImage imageNamed:[game imageForSquare:52]]]; [square53 setImage:[UIImage imageNamed:[game imageForSquare:53]]]; [square54 setImage:[UIImage imageNamed:[game imageForSquare:54]]]; [square55 setImage:[UIImage imageNamed:[game imageForSquare:55]]]; [square56 setImage:[UIImage imageNamed:[game imageForSquare:56]]]; [square57 setImage:[UIImage imageNamed:[game imageForSquare:57]]]; [square58 setImage:[UIImage imageNamed:[game imageForSquare:58]]]; [square59 setImage:[UIImage imageNamed:[game imageForSquare:59]]]; [square60 setImage:[UIImage imageNamed:[game imageForSquare:60]]]; [square61 setImage:[UIImage imageNamed:[game imageForSquare:61]]]; [square62 setImage:[UIImage imageNamed:[game imageForSquare:62]]]; [square63 setImage:[UIImage imageNamed:[game imageForSquare:63]]]; [square64 setImage:[UIImage imageNamed:[game imageForSquare:64]]]; NSLog(@"-------------------BOARD READOUT-----------------------:"); for (int i = 1; i <=64; i++) { NSLog(@"Square %i: %@", i, [game imageForSquare:i]); }
}
'square1', 'square2', etc. is UIImageViews, and the [game imageForSquare:] method returns the NSString * of the corresponding image to be displayed.
When playing with two human players, the board is perfectly updated, and after that the program is waiting for input from the next player, and I started many games without problems.
I also have a computer player that selects its course using an algorithm, and now I'm trying to set up a game with two computer players against each other. (I have not tried a computer game against a man).
The problem is that when the updateBoard method is called, none of the images is updated, although the NSLog reading below tells me that everything is working fine, and I really see two players playing the game through the console.
I assume that this is due to the fact that immediately after calling updateBoard, I transfer control to the next computer player and somehow prevents the UIImageViews from updating correctly. I did a test to comment on a line of code in which the next player is called (this means that only one step is executed and then execution stops), and the board is updated correctly.
Sorry for the long question, in advance for any suggestions!