こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

簡単なマインスイーパーをJavaで作りたいです。

Javaの勉強をしたいと思い下のソースのマインスイーパーを
ウィンドウ上で実行できるようにしたいです。
そのときに他のソースから呼び出す形にしたいです。
どのようにしたら良いでしょうか?教えてください。
出来ればソースがあるとありがたいです。


import java.util.Scanner;

public class MineSweeper extends MinePrinter {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

MineSweeper game = new MineSweeper();
game.displayStrblock();

while (!game.dead) {
System.out.println("\n:爆弾数・・・" + game.mines);
System.out.println("\n:場所を選んでください");
System.out.println("縦の場所の数字を入力");
int tate = Integer.parseInt(sc.next());

System.out.println("横の場所の数字を入力");
int yoko = Integer.parseInt(sc.next());

game.mineClick(tate, yoko);
game.displayStrblock();

}
}

}

class MinePrinter {

String[][] strblock = new String[5][5];
int[][] blocks = new int[5][5];
int mines = 0;
boolean dead = false;

public MinePrinter() {
mineSet();

}

void mineClick(int i, int j) {
if (aroundManyMines(i, j) == 99) {
System.out.println("burst!!!");
System.out.println("You Dead!!\n");
strblock[i][j] = "*";
dead = true;
} else {
strblock[i][j] = Integer.toString(aroundManyMines(i, j));
}
}

void mineSet() {
for (int i = 0; i < blocks.length; i++) {
for (int j = 0; j < blocks[i].length; j++) {
if (Math.random() < 0.2) {
blocks[i][j] = 99;
mines += 1;
} else {
blocks[i][j] = 0;
}
}
}
for (int i = 0; i < strblock.length; i++) {
for (int j = 0; j < strblock.length; j++) {
strblock[i][j] = "#";
}
}
}

void displayStrblock() {
for (int i = 0; i < strblock.length; i++) {
for (int j = 0; j < strblock.length; j++) {
System.out.print(strblock[i][j] + " ");
}
System.out.println(":" + i);
}
}

int aroundManyMines(int i, int j) {
if (blocks[i][j] == 99) {
return 99;
}

int ans = 0;

for (int r = -1; r <= 1; r++)
for (int c = -1; c <= 1; c++) {
try {

if (blocks[i + r][j + c] == 99) {
ans += 1;
}
} catch (ArrayIndexOutOfBoundsException e) {
continue;
}
}
return ans;
}
}

投稿日時 - 2014-01-28 01:34:52

QNo.8450084

困ってます

質問者が選んだベストアンサー

こんにちは。
補足ありがとうございました。

>ウインドウ上での実行にはguiを使いたいと思っています。
GUIを利用するということは、ようはWindowsにインストールされているようなものを作るということでしょうか。

現在のソースから利用できる部分は利用しますが、基本的には別物となり、
ここで回答するにはちょっとボリューミーです。

>オブジェクト思考を学びたいので他のソースからクラスを継承する形を考えていましたが、なんらかのオブジェクト思考を用いたプログラムであればどのような形でも結構です。
ただ単に継承すればオブジェクト指向ってわけではないと思います。
きちんとしたクラス設計を行わないと、なんの意味もありません。


GUIで動かしてみたいならAppletを調べてみるか、通常のアプリケーションのように作りたいのであれば
Swingについて勉強してみてください。

投稿日時 - 2014-01-28 11:41:44

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

こんにちは。

ウィンドウ上というのは、どういうものを想定していますか?
guiで、作りたいという事でしょうか。

また、別ソースからというのも、どのような想定でしょうか。
補足ください。

投稿日時 - 2014-01-28 06:37:55

補足

返信ありがとうございます。
Java初心者で説明が足りず申し訳ありませんでした。

ウインドウ上での実行にはguiを使いたいと思っています。

オブジェクト思考を学びたいので他のソースからクラスを継承する形を考えていましたが、なんらかのオブジェクト思考を用いたプログラムであればどのような形でも結構です。

よろしくお願いします。

投稿日時 - 2014-01-28 10:04:30