ボードゲームプログラミングについて
-
ショウ
ボードゲームプログラミングについて
int Stage::arrayPoint2WindowPoint(int point){//引数から得た数字を配列の要素数に変換した後、返り値として返却する
クリックした時のマスの要素を返す(point)(左上の場合1,1)
範囲外も要素数を返す
次のマスに移動するにはどのように判断するか
マスの大きさが75の場合、50~100の間なので1を返却(point)
もしも100、75なら(2,1)を返却
return 0;
}
中身を考えているのですのですが、どうもプログラム化することができなくて悩んでいます。
クリックした時のマスの要素を返す(point)(左上の場合1,1)
範囲外も要素数を返す
次のマスに移動するにはどのように判断するか
マスの大きさが75の場合、50~100の間なので1を返却(point)
もしも100、75なら(2,1)を返却
return 0;
}
中身を考えているのですのですが、どうもプログラム化することができなくて悩んでいます。
Re: ボードゲームプログラミングについて
どんな要素数を返したいのですか?ショウ さんが書きました: 範囲外も要素数を返す
範囲外の定義は何ですか?
ちょうど100の場合、1を返したいのですか?2を返したいのですか?ショウ さんが書きました: マスの大きさが75の場合、50~100の間なので1を返却(point)
もしも100、75なら(2,1)を返却
という具合に、問題点を1個ずつつぶしていきましょう。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
-
ショウ
Re: ボードゲームプログラミングについて
要素数・・・左上のマスの場合(1,1)
要素外の定義・・・ボード外でもクリックすると要素数が返る→(68,93)などが出力されるように
100の場合はマスの大きさが75なので2を返す。
一応問題点を考えてみました。
要素外の定義・・・ボード外でもクリックすると要素数が返る→(68,93)などが出力されるように
100の場合はマスの大きさが75なので2を返す。
一応問題点を考えてみました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
arrayPoint2WindowPointだと関数名から配列を扱うように見えますが配列を引数に持っていませんし戻り値もそうではありません。
あと関数の入力と出力の関係がいまいち良く分かりません。何をする関数なのでしょうか?
1)マスとは?(具体的に)
2)入力のポイントの単位(ピクセル?)
3)出力の単位(マス? 要素数?)
4)配列の要素数? 配列の添字のことでしょうか?
5)配列は何処から現れた何次元の配列なのでしょうか?
あと関数の入力と出力の関係がいまいち良く分かりません。何をする関数なのでしょうか?
1)マスとは?(具体的に)
2)入力のポイントの単位(ピクセル?)
3)出力の単位(マス? 要素数?)
4)配列の要素数? 配列の添字のことでしょうか?
5)配列は何処から現れた何次元の配列なのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ショウ
Re: ボードゲームプログラミングについて
引数から得た数字を配列の要素数に変換した後、返り値として返却する関数です。
1)ボード(オセロ)の1マス分です。
2)単位はドットです。
3)出力は要素数です。
4)要素数=添え字です。
5)ドコから??2次元配列です。
1)ボード(オセロ)の1マス分です。
2)単位はドットです。
3)出力は要素数です。
4)要素数=添え字です。
5)ドコから??2次元配列です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
まとめるとドット単位の座標からマス単位に変換する関数ですね。
それと範囲外の場合でも範囲外のマス位置を返したいと言うことですね。
ちなみに要素数は、配列の大きさを表すのでこの場合の用法は間違いです。
まず関数arrayPoint2WindowPointをx,yの両座標を受けとり返せるようにしないと行けません。私のオススメは配列ではなく構造体かクラスです
ただのintでは1つの値しか受け取れませんからね。
関数の中身は、ドット単位の座標からマス単位へ変換の計算式を書くだけです。
>次のマスに移動するにはどのように判断するか
これって、この関数に中に必要な機能なのでしょうか? 必要な場合は、どの様な処理をするんでしょう?
それと範囲外の場合でも範囲外のマス位置を返したいと言うことですね。
ちなみに要素数は、配列の大きさを表すのでこの場合の用法は間違いです。
まず関数arrayPoint2WindowPointをx,yの両座標を受けとり返せるようにしないと行けません。私のオススメは配列ではなく構造体かクラスです
ただのintでは1つの値しか受け取れませんからね。
関数の中身は、ドット単位の座標からマス単位へ変換の計算式を書くだけです。
>次のマスに移動するにはどのように判断するか
これって、この関数に中に必要な機能なのでしょうか? 必要な場合は、どの様な処理をするんでしょう?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
私は関数名と関係ない機能なので、この関数に搭載すべきでないと考えますが如何でしょう?ショウ さんが書きました:次のマスに移動するには+50です。
この関数で正しいマスなのかを調べるためのテストです。
ただしいマスかのチェック関数は別に設けるべきですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
関数名と戻り値を変えるなら何とか出来ないことはないですが、そんなプログラムを私はあまり見たいと思いません。ショウ さんが書きました:搭載できないことはないですよね?!
搭載に固執する理由も残念ですが私にはわかりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ショウ
Re: ボードゲームプログラミングについて
//< Window座標 -> 配列要素数変換関数(制作関数①)
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標
です。
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標
です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
これは課題でしょうか? だとしても要素数は不的確な表現だと思います。ショウ さんが書きました://< Window座標 -> 配列要素数変換関数(制作関数①)
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標
です。
それと「正しいマスなのかを調べるためのテスト」しろとは書いていない様ですが?
ちなみにWindow座標 -> 配列要素数変換関数ならば関数名は
誤:arrayPoint2WindowPoint
正:WindowPoint2arrayPoint
が正しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
作るのは私ではないですよ。ショウさんです。
※ ここは代わりに作るのではなく、作るのをお手伝いする掲示板です。 → フォーラムルールhttp://dixq.net/board/board.html
色々提案しましたが、できな事があったら質問して下さい。
※ ここは代わりに作るのではなく、作るのをお手伝いする掲示板です。 → フォーラムルールhttp://dixq.net/board/board.html
色々提案しましたが、できな事があったら質問して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ショウ
Re: ボードゲームプログラミングについて
{ point = get(5,40);
point += 50;
cout << point << "\n";
return 0;
}
中身をこのようにすると座標?が出力されるのがわかったのでこれを基にしてできますか?
point += 50;
cout << point << "\n";
return 0;
}
中身をこのようにすると座標?が出力されるのがわかったのでこれを基にしてできますか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: ボードゲームプログラミングについて
疑問だらけです。
1)get関数の機能が不明です。
2)最初に提示された関数int Stage::arrayPoint2WindowPoint(int point)の引数では2つの座標を受け取れません。
3)2次元配列だとおっしゃていますが、pointは一次元配列の添字なんですか?というかpointの単位は配列?マス?
4)point += 50;の意味がわかりません。
1)get関数の機能が不明です。
2)最初に提示された関数int Stage::arrayPoint2WindowPoint(int point)の引数では2つの座標を受け取れません。
3)2次元配列だとおっしゃていますが、pointは一次元配列の添字なんですか?というかpointの単位は配列?マス?
4)point += 50;の意味がわかりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。