簡単なマインスイーパーをJavaで作る方法

このQ&Aのポイント
  • Javaで簡単なマインスイーパーを作成する方法を教えてください。
  • ソースコードを使ってウィンドウ上でマインスイーパーを実行できるようにしたいです。
  • マインスイーパーのソースコードを他のプログラムから呼び出す形にしたいです。どうしたら良いでしょうか?
回答を見る
  • ベストアンサー

簡単なマインスイーパーを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; } }

  • Java
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 補足ありがとうございました。 >ウインドウ上での実行にはguiを使いたいと思っています。 GUIを利用するということは、ようはWindowsにインストールされているようなものを作るということでしょうか。 現在のソースから利用できる部分は利用しますが、基本的には別物となり、 ここで回答するにはちょっとボリューミーです。 >オブジェクト思考を学びたいので他のソースからクラスを継承する形を考えていましたが、なんらかのオブジェクト思考を用いたプログラムであればどのような形でも結構です。 ただ単に継承すればオブジェクト指向ってわけではないと思います。 きちんとしたクラス設計を行わないと、なんの意味もありません。 GUIで動かしてみたいならAppletを調べてみるか、通常のアプリケーションのように作りたいのであれば Swingについて勉強してみてください。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 ウィンドウ上というのは、どういうものを想定していますか? guiで、作りたいという事でしょうか。 また、別ソースからというのも、どのような想定でしょうか。 補足ください。

ryu0810
質問者

補足

返信ありがとうございます。 Java初心者で説明が足りず申し訳ありませんでした。 ウインドウ上での実行にはguiを使いたいと思っています。 オブジェクト思考を学びたいので他のソースからクラスを継承する形を考えていましたが、なんらかのオブジェクト思考を用いたプログラムであればどのような形でも結構です。 よろしくお願いします。

関連するQ&A

  • javaの問題

    import java.util.Scanner; class test6{ static void printArray(int[] a) { for(int i=0;i<a.length;i++) System.out.print(String.format("%1$6s", (a[i]+" "))); System.out.println(); } static void printArray(int[][] a) { for(int[] i:a) { for(int j:i) System.out.print(String.format("%1$6s",(j+"\t"))); System.out.println(); } } public static void main(String[] args) { int[] a = {12,536,-8,7}; int[][] c = {{32,-1,32,45,67}, {535,99999,2}, {2,5,-123,9}}; printArray(a); printArray(c); } } このプログラムを表示するとこのようになるのですが、 12 536 -8 7 32 -1 32 45 67 535 99999 2 2 5 -123 9 これに一工夫加えて見やすくしたいです。 このような形にするのはどのようにすればよいのでしょうか + + | 32 -1 45 67 | | 535 99999 2 | | 2 5 -123 9 | + +

  • javaのプログラムについて

    java始めたばかりの者です。 class sample1 { public static void main(String[] args) { for(int i=1; i<=5; i++){ for(int j=0; j<i; j++){ System.out.println("*"); } System.out.println("\n"); } } } これを実行すると * * * * * * * * * * * * * * * こうなってしまい * ** *** **** ***** このようにするにはどうしたらいいのでしょうか??

    • ベストアンサー
    • Java
  • JAVAの質問です。

    JAVAの質問です。 javaでスロットを作りたいのですが…。 3行3列で縦と横同じ数字の場合”おめでとう”と表示されるプログラムを作りたいのですがわからないです。 助けてください(>_<) public class surotto { public static void main(String args[]) { int hako[][]; int i,j; hako = new int[3][3]; System.out.println("スロットスタート。"); for(i=; i<3; i++){ for(j=0; j<3; j++){ hako[i][j] = (int)(Math.random()*10); } } for(i=0; i<3; i++){ for(j=0;j<3;j++){ System.out.println([i][j]); } System.out.println("\r\n"); } for(i=0; i<3 ; i++){ if((hako[i][0] == hako[i][1]) && (hako[i][1] == hako[i][2])){ System.out.println("横がそろいました、おめでとう\n"); } } for(j=0; j<3 ; j++){ if((hako[0][j] == hako[1][j]) && (hako[1][j] == hako[2][j])){ System.out.println("縦がそろいました、おめでとう\n"); } }

    • ベストアンサー
    • Java
  • 並び換えるクラスについて

    小さい順に並べかえをテストするクラスが下のように指定されている場合、 小さい順に並べかえ処理をするクラスはどのようにすればいいのでしょう? class SortTest{ public static void main(String[] args){ int[] arri = {3, 2, 8, 7, 4, 6, 1, 0, 5, 9}; System.out.println(); System.out.print("\tソート前:"); arrayPrintln(arri); tool.Sort.ascendBubble(arri); // クラスメソッドに処理を委譲 System.out.print("\tソート後:"); arrayPrintln(arri); System.out.println(); double[] arrd = {3.3, 2.2, 8.8, 7.7, 4.4, 6.6, 1.1, 0.0, 5.5, 9.9}; System.out.println(); System.out.print("\tソート前:"); arrayPrintln(arrd); tool.Sort.ascendBubble(arrd); // クラスメソッドに処理を委譲 System.out.print("\tソート後:"); arrayPrintln(arrd); System.out.println(); } //配列の値を出力するメソッド******************* public static void arrayPrintln(int[] arr){ for(int i=0; i<arr.length; i++){ System.out.print(arr[i] + " "); } System.out.println(""); } public static void arrayPrintln(double[] arr){ for(int i=0; i<arr.length; i++){ System.out.print(arr[i] + " "); } System.out.println(""); } } 初心者な私がggったりして作成したやつが↓です。 class Sort{ public ascendBubble(int[] arri); public ascendBubble(double[] arri); //public void getArri(){ //public void getArri(String[] arri){ public void getArri(int[] arri){ for(int i=0;i<arri.length-1;i++){ for(int j=arri.length-1;j>i;j--){ if(arri[j]<arri[j-1]){ int t=arri[j]; arri[j]=arri[j-1]; arri[j-1]=t; } } } } public void getArri(double[] arri){ for(int i=0;i<arri.length-1;i++){ for(int j=arri.length-1;j>i;j--){ if(arri[j]<arri[j-1]){ int t=arri[j]; arri[j]=arri[j-1]; arri[j-1]=t; } } } } } わかりずらいかと思いますが、 アドバイスの方よろしくお願いします。

  • javaのfor文

    nの値の和を求めるのはこれ以外に書き方はありますか? import java.util.*; class SampleGoo{ public static void main(String args[]){ Scanner std = new Scanner(System.in); System.out.print("整数値:");int n = std.nextInt(); int ans = 0; for (int i = 1;i <= n;i++){ ans = ans + i; } System.out.println(Integer.toString(ans)); } }

  • javaのfor文

    nの値の和を求めるのはこれ以外に書き方はありますか? import java.util.*; class SampleGoo{ public static void main(String args[]){ Scanner std = new Scanner(System.in); System.out.print(\"整数値:\");int n = std.nextInt(); int ans = 0; for (int i = 1;i <= n;i++){ ans = ans + i; } System.out.println(Integer.toString(ans)); } }

  • javaの二次元配列について質問です

    配列上にあるただ一つの1を入力に応じて移動させるプログラムを作っています。 たとえば0が入力されたら 0, 0, 0 0, 1, 0 0, 1, 0 → 0, 0, 0 0, 0, 0 0, 0, 0 という風に移動させ、端に行ったら移動できないようにしたいです。 今書いたプログラムだと、最初にある1が残ったままになってしまいます。 int[] p = {-1, -1}; int[][] im = new int[3][3]; Scanner scn = new Scanner(System.in); for (int i = 0; i < p.length; i++) { p[i] = 1; } im[p[0]][p[1]] = 1; for (int i = 0; i < im.length; i++) { for (int j = 0; j < im[i].length; j++) { System.out.print(im[i][j] + ","); } System.out.println(); } int n = 0; n = scn.nextInt(); if (n == 0) { p[0] -= 1; } else if (n == 1) { p[1] += 1; } else if (n == 2) { p[0] += 1; } else if (n == 3) { p[1] -= 1; } im[p[0]][p[1]] = 1; for (int i = 0; i < im.length; i++) { for (int j = 0; j < im[i].length; j++) { System.out.print(im[i][j] + ","); } System.out.println(); }

  • java ネストしたfor文について

    ***** **** *** ** * 上のように*が減るようにしたいのですが下のソースではどこが悪いか教えてください class TestGoo{ public static void main(String args[]){ for(int i = 5; i>=1; i--){ for(int j = 5;j>=1; j--){ System.out.print('*'); } System.out.println(); } } }

  • 配列について

      class Array01{ public static void main(String[] args){ int[][] ia = {{11,12},{21},{41,42,44}}; for(int i = 0; i < ia.length; i++){ for(int j = 0; j < ia[i].length; j++ ){ System.out.print(ia[i][j] + " "); } System.out.println(); } } } } (i < ia.length) と (j < ia[i].length)のとこの意味が分かりません。特にiaとia[i]の違いなんか教えてもらえると助かります。for文については理解してるんですが・・・

    • ベストアンサー
    • Java
  • 九九のプログラム

    public class kuku{ public static void main(String[] args){ int[][] hyou=new int[10][10]; System.out.print(" "); int i; int yoko; for(i=1;i<hyou.length;i++){ yoko=(int)(Math.random()*10); hyou[i][0]=yoko; System.out.print(" "+hyou[i][0]); } System.out.println(); int j; int tate; for(j=1;j<hyou[0].length;j++){ tate=(int)(Math.random()*10); masu[0][j]=tate; System.out.println(hyou[0][j]); }}} これを実行すると乱数がダブって表示されてしまうのですが、ダブらないようにし、appletで実行できるようにしたいのですがどのように直したらいいのでしょうか。どなたかアドバイスください。