現在、iPhone 用のチェス ゲームを作成しています。ボード上のピースは、それぞれがボードの四角形を表す一連の UIImageViews によって表され、その四角形に表示する正しい画像を参照します。1 つの正方形が選択され、移動が行われました。関数 -(void)updateBoard; 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」などは UIImageView であり、[game imageForSquare:] メソッドは、表示する必要がある適切な画像の NSString* を返します。
2 人の人間のプレーヤーでプレイすると、ボードは完全に更新され、その後、プログラムは次のプレーヤーからの入力を待ちます。多くのゲームを問題なく実行しました。
また、アルゴリズムを使用してその動きを選択するコンピューター プレーヤーもあり、現在、2 人のコンピューター プレーヤーが互いに対戦するゲームを設定しようとしています。(人間対コンピューターのゲームはまだ試していません)。
問題は、updateBoard メソッドが呼び出されたときに、画像が更新されないことです。ただし、下部にある NSLog の読み取りでは、すべてが正常に実行されたことが示され、コンソールを介して 2 人のプレーヤーがゲームをプレイしているのを実際に見ることができます。
これは、 updateBoard を呼び出した直後に次のコンピュータープレーヤーに制御を渡し、何らかの形で UIImageViews が正しく更新されないという事実と関係があると思います。次のプレーヤーが呼び出されるコード行をコメントアウトするテストを行いました (つまり、1 回の移動のみが行われ、その後実行が停止することを意味します)。ボードは正しく更新されました。
長い質問で申し訳ありませんが、何か提案があればよろしくお願いします!