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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ショウ

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

#1

投稿記事 by ショウ » 13年前

int Stage::arrayPoint2WindowPoint(int point){//引数から得た数字を配列の要素数に変換した後、返り値として返却する


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

return 0;

}

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

box
記事: 2002
登録日時: 15年前

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

#2

投稿記事 by box » 13年前

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

という具合に、問題点を1個ずつつぶしていきましょう。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

ショウ

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

#3

投稿記事 by ショウ » 13年前

要素数・・・左上のマスの場合(1,1)
要素外の定義・・・ボード外でもクリックすると要素数が返る→(68,93)などが出力されるように

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 13年前

arrayPoint2WindowPointだと関数名から配列を扱うように見えますが配列を引数に持っていませんし戻り値もそうではありません。
あと関数の入力と出力の関係がいまいち良く分かりません。何をする関数なのでしょうか?
1)マスとは?(具体的に)
2)入力のポイントの単位(ピクセル?)
3)出力の単位(マス? 要素数?)
4)配列の要素数? 配列の添字のことでしょうか?
5)配列は何処から現れた何次元の配列なのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#5

投稿記事 by ショウ » 13年前

引数から得た数字を配列の要素数に変換した後、返り値として返却する関数です。

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#6

投稿記事 by softya(ソフト屋) » 13年前

まとめるとドット単位の座標からマス単位に変換する関数ですね。
それと範囲外の場合でも範囲外のマス位置を返したいと言うことですね。

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

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

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

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

これって、この関数に中に必要な機能なのでしょうか? 必要な場合は、どの様な処理をするんでしょう?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#7

投稿記事 by ショウ » 13年前

次のマスに移動するには+50です。
この関数で正しいマスなのかを調べるためのテストです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#8

投稿記事 by softya(ソフト屋) » 13年前

ショウ さんが書きました:次のマスに移動するには+50です。
この関数で正しいマスなのかを調べるためのテストです。
私は関数名と関係ない機能なので、この関数に搭載すべきでないと考えますが如何でしょう?
ただしいマスかのチェック関数は別に設けるべきですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#9

投稿記事 by ショウ » 13年前

搭載できないことはないですよね?!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#10

投稿記事 by softya(ソフト屋) » 13年前

ショウ さんが書きました:搭載できないことはないですよね?!
関数名と戻り値を変えるなら何とか出来ないことはないですが、そんなプログラムを私はあまり見たいと思いません。
搭載に固執する理由も残念ですが私にはわかりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#11

投稿記事 by ショウ » 13年前

//< Window座標 -> 配列要素数変換関数(制作関数①)
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標

です。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#12

投稿記事 by softya(ソフト屋) » 13年前

ショウ さんが書きました://< Window座標 -> 配列要素数変換関数(制作関数①)
//< 引数で与えられた座標を配列の要素数に変換して返却する
//< 引数:point 要素数に変換したい座標

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

ちなみにWindow座標 -> 配列要素数変換関数ならば関数名は
誤:arrayPoint2WindowPoint
正:WindowPoint2arrayPoint
が正しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#13

投稿記事 by ショウ » 13年前

マスをクリックしたら(2,4)ですみたいな感じができればよいので。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#14

投稿記事 by softya(ソフト屋) » 13年前

作るのは私ではないですよ。ショウさんです。
※ ここは代わりに作るのではなく、作るのをお手伝いする掲示板です。 →  フォーラムルールhttp://dixq.net/board/board.html

色々提案しましたが、できな事があったら質問して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#15

投稿記事 by ショウ » 13年前

プログラムの組み方は何となくわかりました。
みなさんアイディアを出してくれてありがとうございます。

ショウ

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

#16

投稿記事 by ショウ » 13年前

{ point = get(5,40);
point += 50;

cout << point << "\n";

return 0;
    }

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#17

投稿記事 by softya(ソフト屋) » 13年前

疑問だらけです。
1)get関数の機能が不明です。
2)最初に提示された関数int Stage::arrayPoint2WindowPoint(int point)の引数では2つの座標を受け取れません。
3)2次元配列だとおっしゃていますが、pointは一次元配列の添字なんですか?というかpointの単位は配列?マス?
4)point += 50;の意味がわかりません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ショウ

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

#18

投稿記事 by ショウ » 13年前

すみません。じっくりと考えなおします。

閉鎖

“C言語何でも質問掲示板” へ戻る