ZAMYLAちゃんのは持ってみましょう フィフティーンの楽しみ。 フィフティーンはあなたが得る最初のゲームです。 実装し、それは、対話型のもの。 今、心配しないように。 あなたが記述する必要はありません 全部自分で。 ので、ディストリビューションコードを見る ゲームの構造の多くは、すでに あなたのために設定。 これは、コマンドラインを受け取り、解析し ユーザからの引数が作成されます ボードには、その入力に基づいて。 これは、ゲームに当選したかどうかをチェックして終了 ユーザーのゲームに勝ったら。 そして試合に勝つために、それを取得 ユーザからの入力と 移動機能を呼び出します。 だから我々は4を実装することになるだろう フィフティーンのゲーム機能、 INIT、ドロー、移動、および獲得した。 最初に、初期化に取り組むみましょう。 INITでは、初期化のために、我々は表現する 2D整数配列内のボード。 そして、これはと呼ばれるグローバル変数です 寸法MAX、およびMAXとボード、 ボードの最大寸法。 今、ボードの実寸 ユーザによって与えられたで表される 整数d、可能性 MAX未満であること。 しかし、C言語では、配列のサイズを変更することはできません、 ので、あなたがで立ち往生している その最大寸法。 INITでのあなたの仕事は、移入している ボードの値 正しい値で。 今、私たちは、1次元の配列を見てきましたが、 どのように2次元配列は、働いていますか? 行のインデックス、ゼロがあります いつものようにインデックス化してから、またの コラム。 そして、あなたは内でグリッドを埋めるだろう ちょうどこのような値は、降順。 グリッド、0、0、行0、列 0、グリッド0,1は7、8である。 これは、例えば、ある dは、少しdは3である。 今、フィフティーンボードも必要 あなたがこれまでにした場合は、空白のタイルが含まれている 物理的なゲームをプレイ。 しかし、ボードは整数配列であるため、 すべての値は整数でなければならない。 だから、整数を決めるのはあなた次第です 空白のタイルを表現するための値。 あなたのボードを初期化するには、使用することができます 含有するループ構造 基板対基板の状態を開始 私jがある要素を表します 行i及び列j。 彼らは、降順に開始し、 、覚えているかのタイルの数 奇数である場合、あなたはする必要があるとしている 2の1の位置を入れ替える。 そうそこに、我々は我々が持っている 初期化ボード。 今、我々は初期化されてきたことを私たちの ボードは、それを描画する時が来た。 ドローの現在の状態を表示します ボードはできますが、確認する必要があります 同じ順序でタイルを印刷する あなたがそれらを初期化したこと。 そして、あなたはまた、フォーマットする必要があります あなたの番号を正しく。 我々は、単一の数字を持っている可能性があるためと 二桁は、あなたがしたい の前に空白スペースを印刷 任意の単一の桁の数字。 あなたが使用してそれを使用 プレースホルダ - 。 しかし、私たちの空白を覚えています。 私たちは、実際の数を印刷しない 私たちは、表現するために選択したことを その空白のボードのスペースだけでなく、私たち 全く何も印刷しないしたくない。 それで、あなたにできることは、シンボルを定義することである または表現する文字 空白のタイル。 前の例では、私は選択した アンダースコア、およびあなただけプリントする あなたは空白に到達するたびに、その あなたのドロー機能のスペース。 だから、ネストされたforループしているでしょう描く。 このようなもの。 行ごとに、その後、各値のために 行は、あなたが印刷するつもりだ この分野の値。 あなたはすべての値を印刷したら 並んでいる、それから 新しい行を印刷することができます。 覚えているあなたのドローの注文 関数は次数をエコーまたはミラー化する必要があり あなたの初期化関数内。 これでボードを初期化していること あなたがそれを描いたので、それができるようにする時が来た ユーザーがそれを編集し、その動きをする。 そうFifteen.c機能において、 プログラムは、ユーザからの入力を受け取り、 それから渡して、移動機能を呼び出し、 そのタイルの数 ユーザーは、移動したいと考えています。 今、注意してください。 これは、タイルの実際の数である なく、その実際の位置。 だから、あなたは、タイルのために検索する必要があります それがどこにあるか知っている立場。 今、あなただけのユーザーに許可する必要があります それが合法かどう動きを確認します。 法的な動きがある任意のタイルです 空白のタイルに隣接。 すなわち、上記および下記に、手段 左右に。 だから、どこに知っておく必要があります 空白のタイルも同様である。 今、すべてのためにあなたが探している移動 ユーザーのタイルが、それはおそらく 空白のタイルを検索するのがベストではない あなたがそれをやっているので、毎回 毎回 ユーザーは、移動したいと考えています。 そうではなく、それはどこで覚えておくことをお勧めします 空白のタイルは、いくつかを使用しています よく指定された変数。 だから、ユーザーが自分のを行うことができたら 移動し、彼らは彼らに十分である フィフティーンの試合に勝つへの道。 フィフティーン、タイルの試合に勝つために 特定の順序である必要があり、 獲得したか否かをチェックする機能 ゲームは勝っている。 ゲームに当選した場合はtrueを返し、 タイルは、正しい順序になっている、 そしてそれ以外の場合はFalse。 そうフィフティーン、タイルの試合に勝つために で、昇順されなければならない 右下隅の空白のタイル。 それでは、どのように利用者かどうかをチェックしますか 右にボードを移動した 向き? さて、あなたは、ボードを反復してよ ことを確認して値をチェック 彼らは正しい場所にいる。 これを行うには、ネストされた使用することができます あなたが行ったようにループの ドローでのとinit中。 確認する方法はいくつかあります とボードであるかどうかを検証する 正しいと受賞 形成、しかし。 あなたが左から右に行くと、開始 トップダウンの行からは、すべての 数はより大きくなければなりません 以前の1。 あなたがしたどのような値には注意してください しかし、あなたの空白のタイルのために選ば。 またはあなたがするカウンタ変数を使用することができます 場合、それぞれの値が所定の位置にあることを確実に あなたはいくつかの並べ替えを考え出す これを表現するための式。 だから、実験する楽しみを持っている 数学と。 あなたは道、リターンを作ってみた後は 真のユーザーがゲームに勝った後は。 しかし、任意の値が誤っている場合、リターン 偽、ユーザーが移動し続ける必要があります 彼らは試合に勝っていないため。 あなたが一緒に、このチェックを実装したら、 初期化して、描画、および移動 あなたは15のゲームを終えたところ。 おめでとうと楽しい演奏を持っている。 私の名前はZamylaであり、これはCS50である。