• 締切済み

マインスイーパー

マインスイーパーのプログラムをpascal言語を使って学校で作っています。 地雷を除去するプログラムまで作れたのですが、八方に地雷がない場合に自動的にヒントがあるマスまで展開してマスを開くプログラムがうまく作れません。 課題ではスタックをうまく使って書けといわれたのですがどうすればいいでしょうか? 主だった流れの解説でもいいので、アドバイスお願いします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「8方向に地雷がなければ 8方向全てを勝手に開ける」というロジックを組めばいいのでは? スタックうんぬんは無視して, 再帰的にやってしまうのが簡単だと思う.

関連するQ&A

  • マインスイーパ、自動解析プログラムの作り方

    マインスイーパの自動的に解くプログラムがありますが、 あれはどのような仕組みになっているのでしょうか。 どうやって、マス目の数字を取得しているのか、 どうやって、マスを開けているのか。 プログラムによっては、まだ開けていないマスに 色をつけてくれるものまであり、 手品でも見ているような感じです。 もし、作られた方がいらっしゃったら、 タネ明かしして頂けないでしょうか。 ソースコードレベルでなくても、 だいたいの概略や、ヒントのようなものでも良いので、 よろしくお願いします。

  • CASLとCASL2の違いについて

    はじめまして。情報科学を勉強している大学生です。 お時間ございましたら、回答のほどよろしくお願いします。 現在、Pascal→CASL2のコンパイラの作成という課題に取り組んでいます。 意味解析まで終わって、アセンブラ言語に変換するとこまで来たのですが、先生の言っていた言葉の意味がよくわからず困っています。 「CASL2はCASLと違って、スタックポインタがGR4から独立したから、(コンパイラを作る際に)ちょっとした工夫が必要になる」 といった感じのことを言っていたのですが、具体的になぜ工夫が必要なのかわかりません。 理解している友達にも聞いたんですが、いまいちわかりませんでした。 webでもいろいろ調べたんですが、説明しているサイトが見つからず八方塞の状況です。 そこで、 「具体的になぜ、どのような工夫がいるのか」 を教えていただきたく思います。参考になるページを紹介していただけるだけでも結構です。 それでは、よろしくお願いします。

  • C言語のプログラミングのある問題について・・・?

     私は、ある大学に通う二年生です。実は、授業でC言語のプログラミングの授業があるのですが、includeとか、for文とか、とにかくそこに出てくる用語も全然と言っても良いぐらい分からないし、それにその科目を教えている先生から課題が出されました。  その課題というのは、以下の問題です。誰か僕に力をください。  お願いします。   問    正の整数1から10までの範囲でパスカルの三角形を画面上に出力するプログラムを作り、さらにその三角形をもう一つ組み合わせてひし形を作り、ひし形が出力できるように補修せよ。  (注)「使用できる配列は、1次元に限る」という条件を守って作ること。

  • javaで数独を解くプログラムについて

    java初心者です。 学校で数独を解けという問題が出て、問題の意味もまったくわからないのでヒントください。 問題 数独を解くプログラムを作成せよ。ただし、すでに埋まっているマスを入力する時にはi,j,n(改行)でひとつの数字を入力できるものとし、終了条件は、0,0,0を入力するとする。 問題用紙には1問だけ数独が載ってあるのですが、 初歩的な質問で申し訳ありませんが まずこのプログラムは、その1問だけ載っているマスが少し埋まっているプログラムを打ち込んでから解くプログラムを考えるのでしょうか? 普通、数独を解くプログラムとは、空いているマスにキーボード入力して、解くのでしょうか?それとも自動に動いて解くのでしょうか? はじめにプログラムをコンパイルしたときにどう言葉が出るようにすればようのでしょうか? 終了条件0,0,0とは、000を入力したら終わる?ということでしょうか? マスを作って、クリックすると数字が…というようなjavaは習ってなくコマンドプロントでコンパイルだけなので、数字を打って入力、エンターというだけで解くのだと思うのですが、まったくわからないです。 根本的にわからなくてすいません。 ぜひご回答よろしくおねがいします。

  • C初心者に課題をください。

    現在学校でC言語の勉強をしています。 自分のC言語の実力は、基本情報のC言語がちょっと理解できるぐらいです。 しかも、Cを読むのは慣れていますが、あまり書いたことはありません。 そこで、C言語の実力向上を図って、自分に課題を出していろんなプログラムを作って行きたいのですが、さっそく何を作ればいいのかわかりません。 過去に自分がこんなプログラムを作ったとか、よい案がありましたら何でもいいので是非教えてください。 大体の機能と、あればヒントとか教えてくれる程度でいいです。 例) どんなプログラム?:電卓 機能:入力例(500*3)→表示(1500) 四則演算ができる。 続けて演算子と数値を入力すると表示結果と計算する。 よろしくお願いします。

  • 写真の抜き出し

    「とてもよく出来る」先生の研究室に入って何も指導していただけないまま1年が過ぎました。 現在の私のC言語の実力はポインタがわかる程度です。 他の人も同じくらいのレベルなのですが、こんなレベルなのにも関わらず 今回出された課題が「給食の写真の中からご飯部分を抜き出すプログラムを作れ」という高度なもの。 本やネットで調べていいということで色々調べてみたのですが何せ知識が少ないのです。 流れとしてなんとなく考えて ・閾値を用いて画像を抜き出す ・(食器の)丸い形を探して画像を抜き出す という方法のどちらかでやればできるのではないかと考えています。 5月中の課題のはずがきまぐれの多い先生なので次の月曜までに作らないといけなくなりました。 あと3日間。バイトの時間を差し引くとあと42時間程度しかないのですが 出来る限り頑張ろうと思うのでヒントや、参考になるサイトなどを教えていただけませんか? 現在「c言語で学ぶ実践画像処理」という本を読んでそこにあるプログラムを Visual c++で打ってはみたのですがきちんと動作しません。 きっと本にも書かないような基本事項さえも身についていないのだと(゜Д゜;) 出てくる関数が知らないものばかりなので自分で一から組むこともできず困っています。 どうか、アドバイスをお願いいたします。

  • WSHとは?VBscriptとは?

    プログラムに詳しい方教えてください。 会社の業務の都合上パソコンで行う動作の自動化を考えております。 ~自動化したいこと①~ その中でメーラー(Outlook)で受信したメールの件名を区別して文章を読み取りテキスト化できないかと思っております。 ~自動化したいこと②~ また、可能であれば受信したメールの件名より新たなアプリケーションを起動する、起動したアプリケーションのボタンを自動でクリックし実行するということもできればと検討しています。 インターネットで調べたのですが何らかのプログラム言語では①は可能かもしれないとわかってきたのですが①②両方とも実現するためにどのような言語を勉強すればいいのかわかりません。 というか、はたして可能なのかどうかすらわかりませんでした。ヒントらしきものとしてタイトルにあるキーワードは見つかりましたがプログラムに詳しくないのでわかりません。 どなたか詳しい方アドバイスをいただけないでしょうか? よろしくお願い致します。

  • C言語

    C言語による課題です.指数関数のマクローリン展開について,第n項までの近似値を求めるプログラムを作成し,各ステップごとに理論値との誤差を比較しなさい.(xとnは任意の値で自分で入力する.) 宜しくお願いします.

  • 複素Newton法?

    複素数版?のTaylor展開に基づく、複素Newton法を使って、x^3=1の解を求めるC言語のプログラムを作成しなくてはならないのですが、Taylor展開も、通常のNewton法も理解していますが、複素数になった場合、どのように使えばいいのか分かりません・・・ なんとなく、オイラーの公式によって、exp(ix)の形にするのかなぁとは思うものの、それ以外全く分かりません。 アルゴリズムのヒントだけでもいいので、どなたかよろしくお願いします。

  • アルゴリズム系の問題知りませんか?

    再来週大学院試験を控えている者です。 入試の項目に「プログラミング(アルゴリズム)」と書いてあり、ある程度複雑なアルゴリズムを考えるような問題が出る事が予想されます。 きっと二分探索木やクイックソートのような問題が出るように思います。 アルゴリズムを考えるような問題としていい問題ご存じないでしょうか? アルゴリズムを考えるような問題としてはハノイの塔とかよいように思いますが ちょっと入試の問題としては出ないような気がします。 自分では他に線形リストやスタックなども勉強したんですが、 C,JAVA,Pascal,フォートランなどどの言語で回答してもよい事になっているので言語に限定した問題は出ないように思います。 90分で解く3問あるうちのプログラムは1つですから30分以内に解けるような問題のはずです。 (出題される可能性も考えていただければ幸いです)よい問題をご存知でしたら教えてください。 よろしくお願いします。