質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

3826閲覧

javafx、マインスイーパーのGUIアプリケーションの作成

javasyosinnsya1

総合スコア26

JavaFX

JavaFXとは、Java仮想マシン上で動作するリッチインターネットアプリケーション (RIA) のGUIライブラリです。Swingとは異なり、FXMLと呼ばれる XMLとCSSを併用してデザインを記述します。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/06/08 08:59

・盤面の作成
・地雷をランダムに配置する
・隣に何マスあるか計算する
・クリック時の挙動
・クリックした場所に地雷があったらゲームオーバーの処理
・クリックした場所が0なら周囲も開いていく

これらの画面処理を行うにはどうしたらよいのか教えてください。
GridPaneで8×8の計64個のマスを作り、その中に10個地雷を置くような形にしたいです。
よろしくお願い致します。

Java コード import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class MS extends Application { private Button[][] bt2 = new Button[8][8]; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) throws Exception { for(int m=0; m<bt2.length; m++){ for(int c=0; c<bt2[m].length; c++){ bt2[m][c] = new Button(Integer.toString(m) + Integer.toString(c)); } } GridPane gp = new GridPane(); for(int m=0; m<bt2.length; m++){ for(int c=0; c<bt2.length; c++){ gp.add(bt2[m][c], m, c); } } Scene sc = new Scene(gp, 248, 200); stage.setScene(sc); stage.setTitle("マインスイーパー"); stage.show(); } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

GUIは後回しにして、まずCUIで基本的なロジックが組めるかからスタートするべきです。
地雷の代わりに"*"などの文字を使い、コンソールへの出力が思うようにいくかどうか、
それを完成させられなければGUIどころの話ではありません。

投稿2017/06/08 15:01

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

残念ながら今回の質問はまるなげ質問とみなされると思います。なにかしら自分で考えたコードを提示してそれをベースにした質問でないと・・・

おそらく一番簡単なのは「隣に何マスあるか計算する」です。しかしそれも「マス」をどう作ればよいか思いつかなければ先に進むのは厳しいかも知れません。

そこで一つヒントになるかも知れないコードの一例を挙げてみます。
以下は一つのマスを表すクラスを書き始めるときの最初の断片です。

java

1// 表示内容は状態に応じて例えば次のようにすると決めておく。 2// ■: 初期状態。閉じられている状態 3// ?: フラッグを置いた(右クリックした)状態 4// 0~8: 爆弾がないマスを成功裡に開いた状態 5// X: 爆弾を開いてしまった状態。ドッカーン・・・ 6public class MSCell extends Button { 7 public boolean placedBumb; //爆弾があるならtrue 8 9 MSCell() { 10 super("■"); 11 } 12 13 public boolean isOpened() { 14 return !getText().equals("■"); 15 } 16}

これをN行N列のcells配列に格納しておけばi行、j列のセルに「爆弾があるか」はcells[i][j].placedBumbがtrue/falseかで判断できますね?

cells配列は現状通りMSクラスにおくとすると、i,jの位置のセルの周りの爆弾数をカウントするメソッドはMSクラスに定義することになります。

投稿2017/06/08 14:50

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問