プログラミング演習I

特別課題
• あまりにも優秀すぎて,
時間をもてあましている人へ
演習 Bronze
• Othello用の表示プログラムを作成せよ.
• 8×8の配列(int cell[8][8])を作り,
そこに0,1,-1を格納する.それぞれ,空,黒
,白を意味する.
• そして,その情報を8×8のマス目として表示
するプログラムを作成せよ.
– ただし,cell[y][x]とせよ.
– 白「○」,黒「●」,空白「・」と表示せよ.
演習 Bronze (con’t)
• 実行結果例
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・○●・・・
・・・●○・・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
cell[3][3]=-1;
cell[3][4]=1;
cell[4][3]=1;
cell[4][4]=-1;
それ以外=0 の例
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・○●・・・
・・・●●●・・
・・・・・・・・
・・・・・・・・
・・・・・・・・
cell[3][3]=-1;
cell[3][4]=1;
cell[4][3]=1;
cell[4][4]=1;
cell[4][5]=1;
それ以外=0 の例
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・○●・・・
・・・○●●・・
・・・○・・・・
・・・・・・・・
・・・・・・・・
cell[3][3]=-1;
cell[3][4]=1;
cell[4][3]=-1;
cell[4][4]=1;
cell[4][5]=1;
cell[5][3]=-1;
それ以外=0 の例
・・・・・・・・
・・・・・・・・
・・・・・・・・
・・・○●・・・
・・●●●●・・
・・・○・・・・
・・・・・・・・
・・・・・・・・
cell[3][3]=-1;
cell[3][4]=1;
cell[4][2]=1;
cell[4][3]=1;
cell[4][4]=1;
cell[4][5]=1;
cell[5][3]=-1;
それ以外=0 の例
演習 Bronze (con’t)
• 必然的に,以下の処理が必要となる.
– cell[0][0]~cell[7][7]の64個すべてに
,0を代入.
– その後,
cell[3][3] = -1;
cell[3][4] = 1;
cell[4][3] = 1;
cell[4][4] = -1;
演習 Silver
• ユーザからの入力を受け付けるプログラムを
作成せよ.
– Windowsであれば,getch()によりユーザから
の入力を受け取ることができる.
– 横座標としてA~Hの入力を受け付ける.
• それ以外が入力されたら再入力を促す.
• A~Hが入力されたら,0~7に変換.
• Webページ上にヒントあり
演習 Silver (con’t)
ヒント
printf(“横座標(A-H)を入力してください.Q を入力で終了> ");
ch = getch();
printf("\n");
// 大文字だったら,小文字に変換
if( 'A'<=ch && ch<='Z' ){
???
}
// 正しい入力か調査
if( ??? ){
???
} else {
???
}
演習 Gold
• 2人プレイ用Othelloを作成せよ。
– 8×8の配列を作り、そこに0,1,-1が格納されて
いる。それぞれ、空、黒、白を意味する。そして、
その情報を8×8のマス目として表示。
– 人間(二人)の入力を受け取り、オセロをプレイ
可能とする。「石を置けるか否か」の判断や、石を
置いたときの「ひっくり返し」の処理を行う。
7
演習 Platinum
• 1人プレイ用Othelloを作成せよ。
– 人間の相手をするコンピュータ
– ヒント:開放度理論など
8