■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 最新50

JAVA神様 かざっさま

1 :アヌス : 2009/01/27 18:37
投稿できなくなってしまったので、新しいスレッドにもう一度貼りますです。

何文字かのstringを受け取ってその文字列の真ん中2文字だけをreturnで返したいのです。文字が奇数の場合は右よりの2文字です。
例) 
middleTwo("abcd") → "bc"
middleTwo("abcde") → "bc"
文字列は必ず2文字以上あると前提しますです。

それともう一つ。取得した数字が奇数ならfalse偶数ならtrueを返すプログラムです。
例)
isEven (24) → true
isEven (25) → false

どうやらこれは、2つのメソッド(真ん中の文字プログラムと、奇数偶数プログラム)をクラスTwoMethodsに書いて、
それぞれのメソッドに、テストメソッドをクラスTwoMethodsTestに書く、というものらしいのですが、プログラムを貼ります。
しかいしくつか抜けてるところがあってそれをコンプリートしなきゃいけないみたいです。



このクラスは、Stringsといくつかの基本となるタイプを処理するメソッドをテストするための2つのメソッドのテストが記されている(日本語がおかしい・・・汗)
import static org.junit.Assert.*;
import org.junit.Test;

public class TwoMethodsTest {
@Test
public void testMiddleTwo() {

//ここにTwoMethodsオブジェクトが要ります//

TwoMethods myFuns = new TwoMethods();

//middleTwoメソッドをテストするための4つのケース//
assertEquals("bc", myFuns.middleTwo("abcd"));
assertEquals("bc", myFuns.middleTwo("abcde"));
assertEquals("23", myFuns.middleTwo("12345"));
assertEquals("pu", myFuns.middleTwo("Computers"));
assertEquals("to", myFuns.middleTwo("to"));
assertEquals("is", myFuns.middleTwo("antidisestablishmentarianism"));
}
//もう一つのテストメソッドを以下に
}

ここからテストされるメソッドのクラス
public class TwoMethods {
public String middleTwo(String arg) {
return "TBA"; //ここのメソッドを変えなければならないようです。
}
//もうちょっといくつかのメソッドを以下に
}

おそらくエラーが出るそうです。JUnit 4はbuild pathにないからだとか。だからJUnit 4をbuild pathに加えないといかんとかなんとか・・・
JUnit testとして実行する。でもassertionはパスしない(赤いバーになる)。
だからTwoMethods.middleTwo(String)を修正する必要があると・・・

次は奇数か偶数かのメソッド。テストメソッドはTwoMethodsTest.javaへ、isEvenメソッドはTwoMethods.javaへ。そして新しいTwoMethodsを作る必要があります。

public boolean isEven(int number)
@Test
public void testIsEven() {
TwoMethods myFuns = new TwoMethods();
assertTrue(myFuns.isEven(24));

//ここにあといくつかassertionを加えたいのです。
assertFalse(myFuns.isEven(25));
みたいな感じでいいのかな。多分他のケースも加えないといかんのかな。

}
自分でも書いてて理解できん・・・。かざっさん、この意味わかる・・・?


473 :アヌス : 2009/03/29 16:35
trueとしてセットされた爆弾のボード みたいな


474 :アヌス : 2009/03/29 16:48
メソッドは3つだけなんだ

爆弾をセットするpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)

爆弾がいくつあるかを示す数字をセットするpublic MineSweeper(int rows, int columns, int numberOfMinesToBePlaced)

マスをクリックして判断する public click(int row, int column)

どれも配列使うんだよね・・・。
1つ目のメソッドではboolean型の配列で、2つ目ではint型のnumberOfMinesToBePlacedを配列に入れるから配列はint型になるんだよね・・・
そうすると各配列で使う配列が変わる・・・?それじゃ爆弾とかセットしても使う配列が違うんじゃ・・・意味ないような・・・


475 :アヌス : 2009/03/29 16:42
boolean[][] boardWithMinesSetAsTrue = {
  {true, false, false, false, false, true, false}, // row of 1
  {true, false, false, false, true, false, true}, // row of 2
  // といった具合に7まで作ります。
}

これって2次元をあらわすん?


476 :アヌス : 2009/03/29 16:46
こんな感じでは ダメなんかね

public MineSweeper(boolean[][] boardWithMineSetAsTrue){

boardWithMineSetAsTrue = new boolean[5][6];

boardWithMineSetAsTrue[0][0] = true;
boardWithMineSetAsTrue[1][0] = false;
boardWithMineSetAsTrue[2][0] = false;
boardWithMineSetAsTrue[3][0] = false;
boardWithMineSetAsTrue[4][0] = true;
boardWithMineSetAsTrue[0][1] = true;
boardWithMineSetAsTrue[1][1] = false;
boardWithMineSetAsTrue[2][1] = false;
boardWithMineSetAsTrue[3][1] = false;
boardWithMineSetAsTrue[4][1] = false;
boardWithMineSetAsTrue[0][2] = true;
boardWithMineSetAsTrue[1][2] = true;
boardWithMineSetAsTrue[2][2] = true;
boardWithMineSetAsTrue[3][2] = false;
boardWithMineSetAsTrue[4][2] = false;
boardWithMineSetAsTrue[0][3] = false;
boardWithMineSetAsTrue[1][3] = false;
boardWithMineSetAsTrue[2][3] = true;
boardWithMineSetAsTrue[3][3] = false;
boardWithMineSetAsTrue[4][3] = false;
boardWithMineSetAsTrue[0][4] = false;
boardWithMineSetAsTrue[1][4] = false;
boardWithMineSetAsTrue[2][4] = false;
boardWithMineSetAsTrue[3][4] = true;
boardWithMineSetAsTrue[4][4] = false;
boardWithMineSetAsTrue[0][5] = false;
boardWithMineSetAsTrue[1][5] = false;
boardWithMineSetAsTrue[2][5] = true;
boardWithMineSetAsTrue[3][5] = true;
boardWithMineSetAsTrue[4][5] = false;

}


477 :大和 : 2009/03/29 16:44
>>473
おお〜!サンキューっす!

>>475
>472の画像みたいに二次元配列になるっすー。

>>476
大丈夫!それも合ってますよ!
そのコードでもコンパイルできるっすー。


478 :大和 : 2009/03/29 16:45
なるほど。メソッドは3つだけなのだね。


爆弾をセットするpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)

爆弾がいくつあるかを示す数字をセットするpublic MineSweeper(int rows, int columns, int numberOfMinesToBePlaced)

マスをクリックして判断する public click(int row, int column)


479 :アヌス : 2009/03/29 16:48
でも配列の名前boardWithMineSetAsTrueなんですよね・・・
そうすると他のメソッドではどういう名前で配列を使えば・・・

boardWithMineSetAsTrueをpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)メソッドの外でprivateとして定義しないと いかんのかな・・・


480 :アヌス : 2009/03/29 16:49
でもそうするとなんでpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)ではわざわざboolean[][] boardWithMineSetAsTrueなんて定義されてんだろ・・・


481 :アヌス : 2009/03/29 16:51
テストメソッドからなにか受け取るんじゃないかなって 思ったんだけど・・・


482 :大和 : 2009/03/29 16:52
遅くなりましたが,

>>468
>(boolean[][] boardWithMinesSetAsTrue)の使い方教えてもらえますか。

()は引数だね。
引数でboolean型の二次元配列boardWithMinesSetAsTrueをもらってるんだよ。

outputName("Kakita"); // メソッド呼び出します。

public void outputName(String name) {
  System.out.println(name);
}

と同じだよ。
メソッド呼び出し時に値をつけて呼び出して,
で呼び出し先で,その値を何かしらの処理をするんだろうね。

boolean型の二次元配列をもらって,
このMineSweeperメソッドで何かするんでしょうね!


483 :大和 : 2009/03/29 16:54
>>480-481
boolean[][] boardWithMineSetAsTrue にはもう何か値が入ってそうだね。


484 :アヌス : 2009/03/29 17:02
ちょっとまってくらさい。二次元配列をもらうのはわかるんだけど、
それってテストメソッドからもらうんだよね?
でもさ、(boolean[][] boardWithMinesSetAsTrue)ってboolean[][]って書いてあるだけど、座標がわからないよ・・・
つまり、
テストメソッドでは
list.MineSweeper(boardWithMineSetAsTrue[0][0]);
こうしろってこと?
でそのテストメソッドから座標00を受け取って、MineSweeperメソッドでその座標の配列にtrueを入れる・・・?いやでもそうするとfalseをいれる場合は・・・?

boolean[][] boardWithMinesSetAsTrueに値を入れるというのは、trueかfalseが入ってるってことだよね、booleanだから。
しかしやはり値を入れるっていっても配列だから座標が・・・わからなくて・・・


485 :大和 : 2009/03/29 17:00
爆弾がいくつあるかを示す数字をセットするpublic MineSweeper(int rows, int columns, int numberOfMinesToBePlaced)

はさ,例えば
□■□□□□□
□□□□□□■
□□■■□□□
■□□□□■□
□□■■■□□
■□□□■□■
■□□□□■□

boolean[0][1]の安全マスなら,周りの爆弾2個でしょ?

メソッドの呼び出しは,
MineSweeper(0, 1, 2);
って感じになるのかな=。



486 :大和 : 2009/03/29 17:04
>>484
テストメソッドから二次元配列をもらうとしたら


boardWithMineSetAsTrue = new boolean[5][6];
boardWithMineSetAsTrue[0][0] = true;
boardWithMineSetAsTrue[1][0] = false;
boardWithMineSetAsTrue[2][0] = false;
boardWithMineSetAsTrue[3][0] = false;
boardWithMineSetAsTrue[4][0] = true;
boardWithMineSetAsTrue[0][1] = true;
boardWithMineSetAsTrue[1][1] = false;
boardWithMineSetAsTrue[2][1] = false;
boardWithMineSetAsTrue[3][1] = false;
boardWithMineSetAsTrue[4][1] = false;
boardWithMineSetAsTrue[0][2] = true;
boardWithMineSetAsTrue[1][2] = true;
boardWithMineSetAsTrue[2][2] = true;
boardWithMineSetAsTrue[3][2] = false;
boardWithMineSetAsTrue[4][2] = false;
boardWithMineSetAsTrue[0][3] = false;
boardWithMineSetAsTrue[1][3] = false;
boardWithMineSetAsTrue[2][3] = true;
boardWithMineSetAsTrue[3][3] = false;
boardWithMineSetAsTrue[4][3] = false;
boardWithMineSetAsTrue[0][4] = false;
boardWithMineSetAsTrue[1][4] = false;
boardWithMineSetAsTrue[2][4] = false;
boardWithMineSetAsTrue[3][4] = true;
boardWithMineSetAsTrue[4][4] = false;
boardWithMineSetAsTrue[0][5] = false;
boardWithMineSetAsTrue[1][5] = false;
boardWithMineSetAsTrue[2][5] = true;
boardWithMineSetAsTrue[3][5] = true;
boardWithMineSetAsTrue[4][5] = false;

list.MineSweeper(boardWithMineSetAsTrue);


かなあ・・。テストメソッドで二次元配列を作っちゃって,
その二次元配列が代入されてる変数「boardWithMineSetAsTrue」を渡す。
って感じになるのかなあ。


487 :アヌス : 2009/03/29 17:06
つまりボードをセットするのはテストメソッドでってこと?そうすると、テストメソッドから変数「boardWithMineSetAsTrue」を受け取った
public MineSweeper(boolean[][] boardWithMineSetAsTrue)メソッドではなにをすれば・・・


488 :アヌス : 2009/03/29 17:08
確かにかざっさんの言うとおり、変数「boardWithMineSetAsTrue」をテストメソッドから受け取るんだと思う。

で、public MineSweeper(boolean[][] boardWithMineSetAsTrue)ではゲームボードをセットアップしろって書いてある。
でもテストメソッドですでにセットアップしてしまってるような・・・

boardWithMineSetAsTrue = new boolean[5][6];
boardWithMineSetAsTrue[0][0] = true;
boardWithMineSetAsTrue[1][0] = false;
boardWithMineSetAsTrue[2][0] = false;
boardWithMineSetAsTrue[3][0] = false;
boardWithMineSetAsTrue[4][0] = true;
boardWithMineSetAsTrue[0][1] = true;
boardWithMineSetAsTrue[1][1] = false;
boardWithMineSetAsTrue[2][1] = false;
boardWithMineSetAsTrue[3][1] = false;
boardWithMineSetAsTrue[4][1] = false;
boardWithMineSetAsTrue[0][2] = true;
boardWithMineSetAsTrue[1][2] = true;
boardWithMineSetAsTrue[2][2] = true;
boardWithMineSetAsTrue[3][2] = false;
boardWithMineSetAsTrue[4][2] = false;
boardWithMineSetAsTrue[0][3] = false;
boardWithMineSetAsTrue[1][3] = false;
boardWithMineSetAsTrue[2][3] = true;
boardWithMineSetAsTrue[3][3] = false;
boardWithMineSetAsTrue[4][3] = false;
boardWithMineSetAsTrue[0][4] = false;
boardWithMineSetAsTrue[1][4] = false;
boardWithMineSetAsTrue[2][4] = false;
boardWithMineSetAsTrue[3][4] = true;
boardWithMineSetAsTrue[4][4] = false;
boardWithMineSetAsTrue[0][5] = false;
boardWithMineSetAsTrue[1][5] = false;
boardWithMineSetAsTrue[2][5] = true;
boardWithMineSetAsTrue[3][5] = true;
boardWithMineSetAsTrue[4][5] = false;

こういうふうに・・・


489 :大和 : 2009/03/29 17:08
>>487
そう。そうなるよね。
あ,これ意外とシンプルなソースなのかな。ちょっと待ってね。


490 :大和 : 2009/03/29 17:18
class MineSweeper {

  private boolean[][] boardWithMineSetAsTrue;

  public MineSweeper(boolean[][] boardWithMineSetAsTrue) {
    this.boardWithMineSetAsTrue = boardWithMineSetAsTrue;
  }

  public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced)
    // んんー?このint型変数3つを使ってどんな処理をするんだろ・・。
  }

  public click(int row, int column) {
    // さてここもどんな処理をさせるか。
  }
}


適当に考えたので間違ってるかもしれません。あしからず^q^。
でも,大枠はたぶんこんな感じかなあと。


491 :大和 : 2009/03/29 17:20
>>488
だよねえ・・。
>490のコードだとたった1行だけなんだよね・・。
public MineSweeper(boolean[][] boardWithMineSetAsTrue) の処理するコード・・。


492 :大和 : 2009/03/29 17:20
あ,ちょっと夕飯買ってくるねー。
17:40までには帰りますね。


493 :アヌス : 2009/03/29 17:21
すいません・・this.boardWithMineSetAsTrue = boardWithMineSetAsTrue;これは一体どういう意味でしょうか?

clickメソッドはちょっと特別なので上の2つができたらやるです

2つ目のメソッドは、・・・int型のnumberOfMinesToBePlacedを与えられた配列に入れるわけで、でも配列はboolean型だからあわないよね・・・?


494 :大和 : 2009/03/29 17:54
>>493
this.board...のほうはprivateのほうを指して,
board...のほうは引数のほうを指してるんだよー。

メソッドの外の変数と,メソッドの中の変数が,
同じ変数名のときにthis.を使うんだよー。


495 :大和 : 2009/03/29 18:03
ってことは新しく「周りの爆弾数を把握する二次元配列」も作らないとだめなのかなあ。

int[][] 名前;
を作らないとだめなのかな。


496 :アヌス : 2009/03/29 18:09
しかし爆弾セットしたboolean型の配列と
爆弾の数をセットするint型の配列・・・

これだと・・・配列が2つできて・・・


497 :アヌス : 2009/03/29 18:11
それとも配列は使わないでやるのか・・・?テストメソッドから受け取るx軸y軸の値だけを使って・・・


498 :アヌス : 2009/03/29 21:09
ああああああああああああああああああああああああああああああああああああああああああああああああああああああ!!!!!!!
まさかのミステイク!!!!!


499 :ねこみみ : 2009/03/29 22:57
2個ともぱくれたのかよ。

ありえねぇ・・・

近所のスポーツバイクのミラーもぬすまれたよ。
げんちゃのノーマルミラーが置いてあったから
明らかにそいつらが犯人だよなぁ・・・

バイクにアラームつけておいたほうがいいよ。
なりっぱなしになればみんなに見られるから。

ユーロミラーかっこいいもんなぁ^






500 :アヌス : 2009/03/30 12:15
かざっさん。
テストメソッドで
@Test
public void testMineSweeper(){

boolean[][] boardWithMineSetAsTrue = new boolean[5][6];

boardWithMineSetAsTrue[0][0] = true;
boardWithMineSetAsTrue[1][0] = false;
boardWithMineSetAsTrue[2][0] = false;
boardWithMineSetAsTrue[3][0] = false;
boardWithMineSetAsTrue[4][0] = true;

というふうに爆弾いれてboardWithMineSetAsTrueをpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)メソッドに渡して

private (何型かわからな) gameboard;

public MineSweeper(boolean[][] boardWithMineSetAsTrue){

gameboard = boardWithMineSetAsTrue;

}

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced){

gameboard[rows][columns] = numberOfMinesToBePlaced;

}

とやっても、boolean型とint型で型があわずに配列にいれられないからどうしたらいいんだと 聞いてみたら、
gameBoardはGameSqaureオブジェクトの配列だといわれたんだけど・・・
意味わかる?


501 :大和 : 2009/03/30 12:30
変数gameboardはint[][]型じゃないかな!


502 :大和 : 2009/03/30 12:40
>>499
せっかくユダっさんに取り付けてもらったのに。
まったくひどい人だよ。後進国民みたいなことしやがって。

バイクにアラームか!
それは考え付かなかったよ。検討してみます。
助言ありがとう。

ユーロミラーかっこいいっす!
また買い直したミラーもユーロミラーにしちゃいました。


503 :アヌス : 2009/03/30 13:45
やはりオブジェクトと配列の違いがよくわからん
オブジェクトの配列っていわれても

int[][] gameboardと定義してもbooleanのboardWithMineSetAsTrueはどうしたらいいのかがよくわからんし・・・


504 :アヌス : 2009/03/30 13:56
インスタンス変数ってprivateで定義した変数のことだよね?


505 :アヌス : 2009/03/30 14:36
gameboardはgamesqaureオブジェクトの配列

gamesqaureは以下の5つのインスタンス変数を持っている。

int row
int column
int mines
boolean flagged
boolean visible

つまり・・・gameboardとgamesqaureはどうしたら定義できるんでしょうか・・・


506 :アヌス : 2009/03/30 22:31
if文で何もしない場合ってなにすればいいんだっけ・・・breakじゃないよね・・・

if(){
何もしない ←ここ・・・
}else if(){
とある処理
}else{
とある処理
}


507 :ねこみみ : 2009/03/30 22:49
アラームつけてからいたずらされてないっす。
デモうるさいけどね。びびるし。できれば純正がいいけど
乾電池でうごくやつとかもあるからそういうのをリモコンで
制御できるやつでいいと思う!

JOGとかだと安く売ってるんだけどねぇ。中国製のも7000円
位であるな。駅とかにとめるとき限定で使うならぜんぜんいいかも。

ウインカーも連動できるからかっけぇよ


508 :大和 : 2009/03/31 02:55
>>503
だよね・・。
int[][]型配列とboolean[][]型配列で2個できちゃう。


>>504
インスタンス変数はね,static修飾子じゃない変数のことだよー。
○インスタンス変数 public int age;
○インスタンス変数 private String name;
×static変数or静的変数 public static String address;


>>505

gameboardはgamesqaureオブジェクトの配列 か!!

じゃあ
GameSquare[] gameboard;
こうだ!

GameSquare型の配列gameboardだ。
配列の器ひとつひとつにオブジェクトが格納されるんだ。
なるほどそういうことか。


>>506
何もしないなら何も記述しなくてもいいんじゃない!
return; ってのもあるけど,これだとメソッド自体が処理終了しちゃうから違うなこりゃ。


509 :大和 : 2009/03/31 02:57
>>507
バイク アラームで検索して調べてみるよ。
ありがとう。
安くて7000円か。それぐらいなら予算内だ。
盗まれるよりましだもんね。私の購入検討してみます。


510 :アヌス : 2009/03/31 08:11
つまり以下のように定義して↓

private GameSquare[][] gameboard;

といってもこうするとGameSquareに赤線がでるんですよ。
1、GameSquareのインターフェースを作るか
2、GameSquareのクラスを作るか
3、GameSquareのパラメーターを作るか
って選択肢がでる。GameSquareなんてインターフェースとクラスは課題にないからパラメーターになるのかな・・・
クリックしたらジェネリクスがでてきた・・・

public class MineSweeper implements MineSweeperModel{

private GameSquare[][] gameboard;

ジェネリクスあってるの・・・?でもこれ、テストメソッドからどうGameSquare受け取れば・・・

public MineSweeper(boolean[][] boardWithMineSetAsTrue){
このメソッドではboolean型でやっぱ↓こうやると型が違っうってエラーがでるし・・・
gameboard = boardWithMineSetAsTrue;

}

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced){

ここもint型であわなくて・・・
gameboard[rows][columns] = numberOfMinesToBePlaced;

}

gameboardをnew生成する・・・んだよね・・・?しかしどこで・・・
intとかStringじゃない型の配列ってどう扱えばいいんでしょう・・・
配列の一つ一つにオブジェクトを格納って、オブジェクトってなんだっけ・・・


511 :anus : 2009/03/31 10:40
ジェネリクス ja nai...
GameSquare class wo tsukuranaito ikenainoka...


512 :大和 : 2009/03/31 11:35
なるほど。Beanクラスを作るんだね。
Beanクラスとは:値を保存するためだけのクラス

public class GameSquare {
  private int row;
  private int column;
  private int mines;
  private boolean flagged;
  private boolean visible;

  public void setRow(int row) {
    this.row = row;
  }

  public int getRow() {
    return row;
  }
}

といった具合に,5つのインスタンス変数に対して,getterメソッドとsetterメソッドを作ってあげると。


513 :anus : 2009/03/31 11:59
kazasan

bakudan wo random ni iretai no desuga doushitara iideshou

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced){

kono method ha, numberOfMinesToBePlaced no kazudake bakudan wo gameboard ni random ni irerurashiinodesu

}

random tte douyarundeshou...


514 :大和 : 2009/03/31 13:52
Mathクラスのramdom()メソッドが使えそうかな?


// 0から99の値をランダムで表示するコード
public class ExNumber13 {
  public static void main(String[] args) {
    int randomNumber = (int) (Math.random() * 100);
    System.out.println(randomNumber);
  }
}

ramdom()メソッドとは:0.0以上1.0未満の値の中から,ランダムな値を算出します。


515 :大和 : 2009/03/31 12:15
ちょいと昼ごはん!
アリゾナは今は夜9時ぐらいかな。


516 :anus : 2009/03/31 12:17
haidesu

ima yoru 9ji desuyo-


517 :anus : 2009/03/31 13:55
demo fairetu ni randamu ni ireru wakede...

randamu ni suru atai ha doreni suru beki darou
x to y?


518 :大和 : 2009/03/31 14:32
爆弾をランダムにセットしたいわけだね。
座標xにランダムでどこか。座標yにランダムでどこか
で,座標x, yにランダムでどこかにセットされる,というわけか。

boardWithMineSetAsTrue[ランダム][ランダム] = true;
ってことかねえ。


519 :大和 : 2009/03/31 14:30
変数numberOfMinesToBePlaced に代入された値ぶんだけ,
爆弾をセットするというわけか。


520 :anus : 2009/03/31 14:38
sounanodesu!

zahyou wo random ni suruniha .....

tabun rows to columns ha tate to yoko wo teigi siteru to omou

moshi rows=8, columns=8 nara gameboard ha 8x8 no sikaku ni naru


521 :大和 : 2009/03/31 14:58
なるほど!
rowとcolumnはマインスイーパの図面の大きさを決める変数か!

int rows = 8;
int columns = 8;

int x = (int) (Math.random() * rows);
int y = (int) (Math.random() * columns);

boardWithMineSetAsTrue[x][y] = true;

適当に書いてみたけど,ランダムに爆弾セットしようとすると,
こんな感じかなあ・・?間違ってるかもわからん!


522 :アヌス : 2009/03/31 15:06
public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced)メソッドでは、boardWithMineSetAsTrueは使わないで
privateで定義したGameSquare[][] gameboardを使うと思う

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced){

for(int i=0;iint x = (int) (Math.random() * rows);
int y = (int) (Math.random() * columns);

gameboard[x][y].GameSquare(x, y, true); ←x, y, trueをGameSquareクラスのGameSquareコンストラクタに渡す。
}

かな・・・



523 :アヌス : 2009/03/31 15:15
GameSquareに赤線がでた・・・

gameboard[x][y] = new GameSquare(x, y, true);にしたら なおったけど、

別のコンストラクタのpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)メソッドで すでにnew で生成してるのに
なんでまた 生成しなきゃいけないんだろ・・・


524 :アヌス : 2009/03/31 15:20
MineSweeperクラスには2つの MineSweeperコンストラクタがあるんだ

 public MineSweeper(boolean[][] boardWithMineSetAsTrue)



public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced)

で、今回こういう風にプログラムしたんだけど


public MineSweeper(boolean[][] boardWithMineSetAsTrue) {

gameboard = new GameSquare[5][6];

for (int i = 0; i < 5; i++) {
for (int j = 0; j < 6; j++) {
if (boardWithMineSetAsTrue[i][j] == true) {
gameboard[i][j] = new GameSquare(i, j, true);
} else {
gameboard[i][j] = new GameSquare(i, j, false);
}
}
}
}

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced) {

for(int i=0;iint x = (int) (Math.random() * rows);
int y = (int) (Math.random() * columns);

gameboard[x][y] = new GameSquare(x, y, true);
}
}


どっちのコンストラクタもGameSquareクラスにアクセスするんだ。
2つのコンストラクタでgameboard[x][y] = new GameSquare(x, y, true)を2度も生成してるけど・・・いいのかな・・・?


525 :大和 : 2009/03/31 22:34
new GameSquare(x, y, なんちゃら)の生成は,
2度しないで,1回だけで良いんじゃないかな!

ってあれ?なんかこんがらがってきちゃった。

public MineSweeper(boolean[][] boardWithMineSetAsTrue) {}
の boolean[][] boardWithMineSetAsTrue は,
どのマスに爆弾がセットされてるかを表す配列なんだっけ。

配列GameSquare[][]も,
どのマスに爆弾がセットされてるかを表す配列なんだっけ。

あれ?ってことは,
「どのマスに爆弾がセットされてるかを表す配列」が2個あるってことになるのかな・・?


526 :大和 : 2009/03/31 22:56
そうだ。話は変わりますが,

>gameboardはgamesqaureオブジェクトの配列
>gamesqaureは以下の5つのインスタンス変数を持っている。
>int row
>int column
>int mines
>boolean flagged
>boolean visible

↑だから,

ex)
GameSquare gs = new GameSquare(); // GameSquareオブジェクトをnewして,変数gsに代入しています。
gs.setRow(2); // x軸2マス目
gs.setColumn(3); // y軸3マス目
gs.setMines(0); // 周辺の爆弾数0個
gs.setFlagged(false); // 今旗を立てているか否か
gs.setVisible(false); // 今マスが開いているか否か

GameSquare[][] gamesquare = new GameSquare[rows][columns]; // 全マス数だけの配列を生成しておきます。
gamesquare[row][column] = gs; // GameSquare型変数gsを格納します。


↑これを全マス分繰り返す?

もしかしてGameSquare型配列のイメージはこんなイメージなのだろうか?
でも間違ってるかもしれません。


527 :アヌス : 2009/04/01 00:14
コンストラクタを2つ用意する理由は、なんか自分で自由に爆弾を配列に配置する

public MineSweeper(boolean[][] boardWithMineSetAsTrue) {}

と、ランダムに配置する場合の

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced) {

がいるみたいなのです

だからpublic MineSweeper(boolean[][] boardWithMineSetAsTrue) {}では、テストメソッドで自由にtrueと falseを使って配置。これを元に残りの全部のメソッドをテストする

public MineSweeper(int rows, int columns, int numberOfMinesToBePlaced) ではただランダムに配列に格納するためだけのコンストラクタで、
テストメソッドからは1度だけこれをコールすればいいみたいです


528 :アヌス : 2009/04/01 00:16
実は作らないといけないメソッド全部で12個あった。
11個はできたけど残りの一個がよくわからん

toggleってスイッチだよね・・・


529 :アヌス : 2009/04/01 00:19
実は他にスタッククラスってのも作らないといけなくて、

スタッククラスを呼ぶたびにGameSquareの中のインスタンス変数をアップデートしてGameSquare自体をスタックに乗せる。というめんどくさいことをしないといかんみたいです・・・

全部で7つかな。クラスは


530 :大和 : 2009/04/01 00:39
>>527
おお。
ユーザが爆弾セットする用と,プログラム側で爆弾セットする用で,
コンストラクタ2つ用意してたんだね。
ならnew GameSquare()を2つ記述しても大丈夫だね。
ユーザ用,ランダム用どっちか1つしか呼び出されないから!


>>528
toggle: 同じ操作をするたびに、二つの状態が交互に現れる機構。

むむ。なんかわかりにくい意味が辞書調べたら出てきた。
点滅電球を点灯させる。A)点灯する。B)消灯する。A)点灯する・・以後ABの繰り返し。
↑こういうことかな・・?


>>529
Stackクラスを使うんだー。何にどうやって使うんだろうね〜。
クラス7つもあるのか!!
こりゃ複雑だ。ひとつひとつやっていきましょ!


531 :大和 : 2009/04/01 00:40
よし寝る!


532 :アヌス : 2009/04/01 05:31
どうやら右クリックと左クリックをスイッチするためのメソッドらしい
いやしかし・・・


533 :ねこみみ : 2009/04/01 19:24
今日リアタイヤ変えた。

やっほーい


534 :アヌス : 2009/04/01 21:42
かざっさん!二次元配列の長さを求めるのってどうすればいいの!?

public MineSweeper(boolean[][] boardWithMineSetAsTrue)メソッドで、
テストメソッドから2次元配列boardWithMineSetAsTrueを受け取っても、x軸y軸の値がわかるようにしたいんだ。
テストメソッドでxyは定義したけど、↓こんな感じで
boardWithMineSetAsTrue[5][6]

でもpublic MineSweeper(boolean[][] boardWithMineSetAsTrue)ではその大きさが表示されないんだ

boardWithMineSetAsTrue[][].lengthじゃだめだよね?2次元だし・・・
xとyの値をそれぞれわかるようにするにはどうすればいいでしょう


535 :大和 : 2009/04/01 22:20
おつ!


536 :大和 : 2009/04/01 22:23
>>534
ちょっと美しくないかもだけど,

boolean[][] boardWithMineSetAsTrue = new boolean[5][6];
int xLength = boardWithMineSetAsTrue[0].length; // X軸の長さ,6が代入されます。
int yLength = boardWithMineSetAsTrue.length; // Y軸の長さ,5が代入されます。


こうだと出来るだろうか(’’?


537 :アヌス : 2009/04/01 22:27
boolean[5][6]だと
xが5でyが6じゃない・・・?


538 :アヌス : 2009/04/01 22:44
おお!確かに表示された!ありがたう!


539 :大和 : 2009/04/02 16:43
私もタイヤの溝減ってないか帰ったら調べてみよう。


540 :大和 : 2009/04/03 00:28
バイクカバー買おう!
チェーンロックが通せるタイプのものを買おう。


541 :ねこみみ : 2009/04/03 21:08
タイヤもカバーもヤフオクが安い。

俺サイズ1個大きいのかっちゃったんだよねぇ。100−125cc用。

まぁいいかヵ。また買うのめんどいし。


542 :大和 : 2009/04/03 22:10
なに!?
私は100-125cc用のカバーが欲しいんだ。

チェーン通す穴開いてるタイプのカバーなら,
差額分私が払って(100-125ccタイプのほうが高いもんね),
50cc用カバー買って交換したいぐらいだよ。


543 :大和 : 2009/04/04 02:24
プロ野球開幕しました。
巨人は広島にぼこられてました。

  +        ____    +
     +   /⌒  ⌒\ +
  キタ━━━//・\ ./・\\━━━!!!!
   +   /::::::⌒(__人__)⌒:::::\  +
       |  ┬   トェェェイ     | 
    +  \│   `ー'´     /    +
    _|\∧∧∧MMMM∧∧∧/|_
    >                  <
     /  ─ /  /_ ──┐ヽ|  |ヽ  ム ヒ | |
   Χ   ─ / / ̄ /   /  | ̄| ̄ 月 ヒ | |
  ノ   __ノ   _ノ   \   / | ノ \ ノ L_い o o


544 :大和 : 2009/04/03 22:12
いつみてもこのAAイラっとするなw


545 :大和 : 2009/04/04 02:26
カープ・・
http://up2.viploader.net/pic2d/src/viploader2d547859.jpg


546 :ねこみみ : 2009/04/04 07:40
JAVAはこっちに書くんだ

何も書き込めなくなる

http://dky.pecori.jp/mt/8810/index.html#3


547 :大和 : 2009/04/04 09:45
おおうすまねえ!
次からそっちに書くよ。


548 :大和 : 2009/04/04 09:47
今日テポドンが秋田上空を通過しますよ。


549 :大和 : 2009/04/04 10:14
テポドンの飛来速度だと3-4分で日本を通過する。

[1]1分以内に発射の煙硝反応を米軍の軍事衛星が捕捉
[2]瞬時に軍事衛星から防衛省に伝達
[3]瞬時に防衛省から政府官邸へ伝達
[4]1-2分で政府官邸から政府情報伝達システム[Em-Net]を用い,各地方自治体・報道機関へ伝達(この時点で既に日本上空通過ww)
[5]3-5分で地方自治体・報道機関から国民に伝達

国民が発射に気づくまでには最短でも「5分」かかるそうな。
つまり,
国民が気づいた頃には既に太平洋に着弾(3-4分で日本上空通過)してる頃なんだそうなww

つまり我々はテポドンのことを気にしてもしょうがない,
いつもどおり生活してろってことですね。


550 :アヌス : 2009/04/04 10:16
彼風呂中、携帯のメール見てたら電話かかってきて出ちゃった。名前が美江になってて はぁ〜?(怒)
でたら落ち着いた声の女。

私「もしもーし」
美江「もしもしー。あれ?○○の携帯よね?」
私「そうだけど何?今シャワーあびてますが。」
美江「あらーそう…またかけなおすわね。」
私「あの、おたく○○とどうゆう関係?」
美江「母です」
私「…」


551 :大和 : 2009/04/04 10:59
喧嘩ごしの女も悪いけど母親を名前で登録してる男も終わってるなあw


552 :大和 : 2009/04/04 13:07
まずい今日の夜は雨か
それまでにバイクカバー買ってこよう。


553 :アヌス : 2009/04/04 13:55
テポドンが俺の肛門に撃ち込まれた


554 :大和 : 2009/04/04 14:12
http://dky.pecori.jp/8810/su/src/up88100415.jpg">
フジテレビさん
なんすか上のアイコンはw


555 :ねこみみ : 2009/04/04 19:54
かざっさん
ちゃっとはできたかね


556 :大和 : 2009/04/05 00:04
すみませぬ。
いいサンプルは見つけたのですがまだ時間がなくてとっかかってないっすorz・・。


557 :大和 : 2009/04/05 00:04
とっかかったら2-3日で出来ると思うっすー。


558 :アヌス : 2009/04/05 12:33
かざっさんwwwウィニーっすかwwwww


559 :大和 : 2009/04/06 00:40
これはやばいよねw


560 :アヌス : 2009/04/07 04:42
        ヾ  /    < 仮面ライダー555が>
       ,. -ヤ'''カー、   /Y⌒Y⌒Y⌒Y⌒Yヾ
 ー―ァ  /r⌒|:::|⌒ヾ
   _ノ オ{(  |0|  )} オオオォォォォ!!!!!
     __,ヽ,ヾ,_|V|,_ノ、/ ,r-,,=
    ,゛==ゝ_ViV_ノ~i/ 〃 `ー―-、
    /  /⌒`//´⌒c/^^^ ))))))))))
 ,,―イ  {ー''"~{ {~゛`ー`/'`'~/ー--―'
))   ,./ゝ_/∧ゝ_ノ  ノ
 ー''"  |ロ  ロ    |
 人,_,人,_,人,_,人,_,
< >>555ゲットだ>


561 : : [ここ壊れてます]
[ここ壊れてます]


562 :大和 : 2009/04/08 02:53
550ですよ!!


563 :大和 : 2009/04/08 02:48
コミュニケーション力は大事ですね。


564 :大和 : 2009/04/08 02:56
ともさんともさん。

あなたはまだそんな「仕様書」を書いているんですか?〜ダメダメ「仕様書」の改善提案書

って本がお薦めです。


565 :大和 : 2009/04/08 02:50
いや,むしろ皆におすすめですね。
国語力を解説してる章は皆も参考になるかもです。


566 :大和 : 2009/04/08 02:50
こりゃ700までいかないですね。


567 :大和 : 2009/04/08 02:50
だがそれも良しかなまた人生。


568 :大和 : 2009/04/08 02:52
今アリゾナは正午0時です。
Arizona is twenteen o'clock now.

はいすみません。超適当に英文化しました。
英検すら持ってないのでこんなもんです。


569 :大和 : 2009/04/08 02:53
エンジニアなら英語も出来るようになっとかんといけんね。
勉強せんと。


570 :アヌス : 2009/04/08 12:42
英語なんてウンコですよ


571 :大和 : 2009/04/08 12:43
やばい。桜超散ってる。新春が終わる。


572 :アヌス : 2009/04/08 12:43
  / ̄ ̄ ̄ ̄//7/7          _  _            _
   ̄ ̄ ̄ ̄  ̄  ̄     / ̄\  / | / |    / ̄ ̄ ̄7  《 ̄》 / ̄/
 / ̄ ̄ ̄ ̄ ̄ ̄/    /  /\ \l_ノ l_ノ     ̄ ̄/ /  /  ̄ //  /
  ̄ ̄ ̄l  | ̄ ̄    /  /  \ \ r´ ̄ ̄`ヽ / /   / | ̄/  `7 ∧
      |  二二二二l |  /    \ \  ̄ ̄二l V く  / ノ /  人 /_/ |
 <\___| /┌ーーー┐  ̄      \ \   \___/\  ̄_/  /  / \_ノ
  `ーーー‐′  ̄ ̄ ̄|│           ̄          ̄     ̄
         /\_//
         `ーーー′


267 KB
続きを読む

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.php ver2.4 2005/04/13