見出し画像

数日後にゲーム作るタニ ふつかめ 〜形から入るタイプ〜

「いちにちめ」では、オセロ制作の導入として○×ゲームを制作し、その動作の様子をご紹介しました。特にソースコード等は触れずにオセロ制作へいきます(オセロ制作の方で同様の内容に触れるので)。ちなみに、オセロ制作の方はすでにここに書いていく内容よりも進んでいるので小分けにしていきます。

今回は、「オセロの形をしたもの」が表示されるところまでを作ります。改めて述べておくと、C言語で制作しております。

まずは何と言ってもタイトル表示!これはmain関数内で

puts("-----オセロゲーム-----"); //こっちで書いた
// printf("-----オセロゲーム-----\n"); こっちでもいいよ

文字列だけなのでputsを使いましたー、きっとputstring。本によってはputsの紹介ってあまりされないですね、Cで文字列扱うのが難しいからかな。printfの時は改行を忘れない。

続いてオセロの要、盤面を表示していきます。まず、main関数内で、盤面となるint型の2次元リストを定義し、盤面のセッティング、盤面の表示をそれぞれ二つの関数で実行します(関数は後で)。

int board[8][8] = {};
set_board(board);
display_board(board);

最初9×9のリストを作ろうとしていました、オセロは8×8ですね、おバカさん。これを作る前に新・C言語〜ゲームプログラミングの館〜というサイトでDXライブラリを使用したゲームプログラミングを学び、そこで

計算するところと、表示、実行する関数は分ける

というのも、学んでいたので、イメージ的にはset_board関数が、boardの処理、display_board関数が、画面への表示といったところかな。以下、関数。

void set_board(int board[8][8]){
	board[3][3] = 1;
	board[3][4] = 9;
	board[4][3] = 9;
	board[4][4] = 1;
}

まずは、set_board関数。返り値なし、引数は2次元リスト。オセロの最初の4枚を並べたものです。いきなり、1と9を使いました。1が白(○)、9が黒(●)、0が何も置かれていない状態(▫︎)としています。正直この部分を関数で分けるかどうかは迷いましたが、やっぱりmain関数内はすっきりさせたいよね!

void display_board(int board[8][8]){
	printf("  0 1 2 3 4 5 6 7\n");
	for(int i = 0; i < 8; i++){
		printf("%d ", i);
		for(int j = 0; j < 8; j++){
			if(board[i][j] == 0){
				printf("□ ");
			} else if(board[i][j] == 1){
				printf("○ ");
			} else if(board[i][j] == 9){
				printf("● ");
			}
		}
		printf("\n");
	}
}

続いてdisplay_board関数。返り値なし、引数は2次元リスト。行と列の数字を書いておかないと盤面をクリックできるわけではないので、必要!1行目のprintfの部分はforで回してもいいけど、まあ7ぐらいなら手入力でいいかなと。forの内部はboardリスト内を1つずつ見て、各マスを表示ですね。

スクリーンショット 0002-04-20 18.19.59

今回のコードで上の画像の状態をシェル上で再現できますね!

今回は見た目なので大した処理はなされてないですが、しっかりこれからオセロを作っていく準備ができましたね!やた!

次回は入力を受け取り、盤面にオセロを置けるようにします!

紹介したwebサイト


この記事が気に入ったらサポートをしてみませんか?