ページ 11

ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 15:25
by ショウ
int Stage::arrayPoint2WindowPoint(int point){//引数から得た数字を配列の要素数に変換した後、返り値として返却する


クリックした時のマスの要素を返す(point)(左上の場合1,1)
範囲外も要素数を返す
次のマスに移動するにはどのように判断するか
マスの大きさが75の場合、50~100の間なので1を返却(point)
もしも100、75なら(2,1)を返却     

return 0;

}

中身を考えているのですのですが、どうもプログラム化することができなくて悩んでいます。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 15:34
by box
ショウ さんが書きました: 範囲外も要素数を返す
どんな要素数を返したいのですか?
範囲外の定義は何ですか?
ショウ さんが書きました: マスの大きさが75の場合、50~100の間なので1を返却(point)
もしも100、75なら(2,1)を返却     
ちょうど100の場合、1を返したいのですか?2を返したいのですか?

という具合に、問題点を1個ずつつぶしていきましょう。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 15:44
by ショウ
要素数・・・左上のマスの場合(1,1)
要素外の定義・・・ボード外でもクリックすると要素数が返る→(68,93)などが出力されるように

100の場合はマスの大きさが75なので2を返す。

一応問題点を考えてみました。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 15:59
by softya(ソフト屋)
arrayPoint2WindowPointだと関数名から配列を扱うように見えますが配列を引数に持っていませんし戻り値もそうではありません。
あと関数の入力と出力の関係がいまいち良く分かりません。何をする関数なのでしょうか?
1)マスとは?(具体的に)
2)入力のポイントの単位(ピクセル?)
3)出力の単位(マス? 要素数?)
4)配列の要素数? 配列の添字のことでしょうか?
5)配列は何処から現れた何次元の配列なのでしょうか?

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:07
by ショウ
引数から得た数字を配列の要素数に変換した後、返り値として返却する関数です。

1)ボード(オセロ)の1マス分です。
2)単位はドットです。
3)出力は要素数です。
4)要素数=添え字です。
5)ドコから??2次元配列です。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:15
by softya(ソフト屋)
まとめるとドット単位の座標からマス単位に変換する関数ですね。
それと範囲外の場合でも範囲外のマス位置を返したいと言うことですね。

ちなみに要素数は、配列の大きさを表すのでこの場合の用法は間違いです。

まず関数arrayPoint2WindowPointをx,yの両座標を受けとり返せるようにしないと行けません。私のオススメは配列ではなく構造体かクラスです
ただのintでは1つの値しか受け取れませんからね。

関数の中身は、ドット単位の座標からマス単位へ変換の計算式を書くだけです。

>次のマスに移動するにはどのように判断するか

これって、この関数に中に必要な機能なのでしょうか? 必要な場合は、どの様な処理をするんでしょう?

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:22
by ショウ
次のマスに移動するには+50です。
この関数で正しいマスなのかを調べるためのテストです。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:25
by softya(ソフト屋)
ショウ さんが書きました:次のマスに移動するには+50です。
この関数で正しいマスなのかを調べるためのテストです。
私は関数名と関係ない機能なので、この関数に搭載すべきでないと考えますが如何でしょう?
ただしいマスかのチェック関数は別に設けるべきですよ。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:28
by ショウ
搭載できないことはないですよね?!

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:33
by softya(ソフト屋)
ショウ さんが書きました:搭載できないことはないですよね?!
関数名と戻り値を変えるなら何とか出来ないことはないですが、そんなプログラムを私はあまり見たいと思いません。
搭載に固執する理由も残念ですが私にはわかりません。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:46
by ショウ
//< Window座標 -> 配列要素数変換関数(制作関数①)
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標

です。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:52
by softya(ソフト屋)
ショウ さんが書きました://< Window座標 -> 配列要素数変換関数(制作関数①)
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標

です。
これは課題でしょうか? だとしても要素数は不的確な表現だと思います。
それと「正しいマスなのかを調べるためのテスト」しろとは書いていない様ですが?

ちなみにWindow座標 -> 配列要素数変換関数ならば関数名は
誤:arrayPoint2WindowPoint
正:WindowPoint2arrayPoint
が正しいです。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 16:55
by ショウ
マスをクリックしたら(2,4)ですみたいな感じができればよいので。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 17:00
by softya(ソフト屋)
作るのは私ではないですよ。ショウさんです。
※ ここは代わりに作るのではなく、作るのをお手伝いする掲示板です。 →  フォーラムルールhttp://dixq.net/board/board.html

色々提案しましたが、できな事があったら質問して下さい。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 17:02
by ショウ
プログラムの組み方は何となくわかりました。
みなさんアイディアを出してくれてありがとうございます。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 17:05
by ショウ
{ point = get(5,40);
point += 50;

cout << point << "\n";

return 0;
    }

中身をこのようにすると座標?が出力されるのがわかったのでこれを基にしてできますか?

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 17:14
by softya(ソフト屋)
疑問だらけです。
1)get関数の機能が不明です。
2)最初に提示された関数int Stage::arrayPoint2WindowPoint(int point)の引数では2つの座標を受け取れません。
3)2次元配列だとおっしゃていますが、pointは一次元配列の添字なんですか?というかpointの単位は配列?マス?
4)point += 50;の意味がわかりません。

Re: ボードゲームプログラミングについて

Posted: 2012年11月27日(火) 17:17
by ショウ
すみません。じっくりと考えなおします。