RPGのアイテムの記憶とか

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: RPGのアイテムの記憶とか

#31

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

ラスクさん、お気になさらずに。
分からないことがあれば気軽に質問してくださいね。

私の提案の方法だと

所持アイテム配列(アイテム番号を格納。このままセーブ対象)
 ↓
アイテム情報構造体配列[アイテム番号].アイテム名

でアイテム名を取得できます。

C言語で書くと

コード:

#define ITEM_BAG_MAX 10
//	アイテム所持袋
int ItemBag[ITEM_BAG_MAX];


//	アイテム情報構造体
typedef strcut {
	char *itemName;//名前
	int money;     //価格
	//	効果のタイプや属性などなどパラメータ続きます。
} ItemTable_t;

//	アイテム情報テーブル。直接初期値を入れた場合。
ItemTable_t ItemTeble[] = {
	{ "ポーション", 100 },
	{ "エリクサー", 1000 },
};

//	アイテムenum
enum {
	ITEM_EMPTY = -1,	//持っていない状態。
	ITEM_HEAL1,			//回復アイテム1
	ITEM_HEAL2,			//回復アイテム2
};

//	ここから初期化

	//	初期化
	for( int i=0 ; i<ITEM_BAG_MAX ; i++ ) {
		ItemBag[i] = ITEM_EMPTY;
	}

//	ここから処理例

	//	アイテムを得る。
	int itemno = ITEM_HEAL1;
	for( int i=0 ; i<ITEM_BAG_MAX ; i++ ) {
		if( ItemBag[i] == ITEM_EMPTY ) {
			ItemBag[i] = itemno;
		}
	}

	//	アイテムを表示する。
	int drawy = 16;//スタートY座標
	for( int i=0 ; i<ITEM_BAG_MAX ; i++ ) {
		int itemno = DrawItemBag[i];
		if( itemno != ITEM_EMPTY ) {
			DrawFormatString(100,drawy,"%s",ItemTeble[itemno].itemName);
			drawy+=16; //一行分だけしたにずらす。 
		}
	}
って感じです。動作確認してないのでエラーが出たらごめんなさい。
[追記]バグ修正。
[追記の追記]アイテム使用時に間が開いてしまうので表示時に間を詰めるように修正。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Tatu
記事: 440
登録日時: 8年前
住所: 北海道

Re: RPGのアイテムの記憶とか

#32

投稿記事 by Tatu » 8年前

hjklさん、softyaさん、ISLeさんでもめているようですね。
長く続いていてよくわかりにくいのですが
3人の書き込みはこんな印象を受けました。

hjklさん
セーブデータにアイテム名を書いたっていいじゃありませんか。
そりゃsoftyaさんとかISLeさんみたいに
プログラムに長く関わったというわけじゃありませんが。
だからって頭ごなしに否定するのはやめてほしい。
連想配列なんて言葉を使ったのは
高級な言語や文法、ライブラリとかそういうのを使いこなすのに憧れているからだし。

softyaさん
通し番号で管理するのが一般的でよい方法だと考えております。
番号が変わるかもしれないのなら内部値をenumで管理します。
まあ、名前を変更しないならアイテム名を記録するという方法でもいいんじゃないでしょうか。
しかし、おすすめはできません。万が一変えるとなったら面倒です。

ISLeさん
アイテム名を記録?ダメダメ、そんなのはほとんど変更されるんですから。
もし、完成直前で変更したらものすごく苦労するかもしれないんですよ。
そんなの私だったら絶対に嫌ですね。だからダメです。
アイテム名を記録するのを認めるような発言も不快です。


「通し番号で管理するのはよい方法である」という点では一致しているようです。
もめているのは「アイテム名をセーブデータに書き込むことは許されるか」のようです。

私自身は
「通し番号での管理が一般的で、アイテム名はセーブデータに書き込むべきではない
というのならその通りにするのがよいでしょう。
完全に個人でつくるならともかく、他の人の協力を得るつもりなら
より一般的な方法を使っているほうがやりやすくなるはずです。」
と考えています。


とりあえず、ラスクさんの書き込みを見る限り、
今回のラスクさんの質問は「解決」、
と思いましたが「実は、番号で管理するといってもどうすればよいか
まだよくわかっていません」とかありませんか?
あるのでしたら、書き込んだほうがよいでしょう。
しかし、私はRPGをつくっていないのでおそらく助けにはなれません。

それはそれとして、なんとなく気になったのですがラスクさんは
所持アイテムをどういう感じに表示されるつもりなのでしょうか?
例として、以下のようなものが思いつきました。

例A.アイテム 個数を並べて表示
ひのきのぼう
なべのふた
かわのぼうし
やくそう 2
どくけしそう 3

例B.アイテムを一個一個表示。常にソートされた状態。
ひのきのぼう
なべのふた
かわのぼうし
やくそう
やくそう
どくけしそう
どくけしそう
どくけしそう

例C.アイテムを一個一個表示。特定の操作を行わなければソートしない。
ひのきのぼう
やくそう
なべのふた
どくけしそう
かわのぼうし
やくそう
どくけしそう
どくけしそう

それぞれに対応した画像を表示するという手もありますね。

ISLe
記事: 2645
登録日時: 9年前
連絡を取る:

Re: RPGのアイテムの記憶とか

#33

投稿記事 by ISLe » 8年前

Tatu さんが書きました:hjklさん
セーブデータにアイテム名を書いたっていいじゃありませんか。

ISLeさん
アイテム名を記録するのを認めるような発言も不快です。
hjklさんがなぜ怒っているのか分からなかったんですけど、わたしがhjklさんの投稿に対して意見したことになってるんですね。

どうしてなんでしょう。

hjklさんが、連想配列で文字列を管理する云々のところは正直何を言っているのか分かりません。
技術的なことではなく、何のために何をどうしようとしているのか読み取れないからです。
#RPGなのでフレーム関係ないってなんすかね。

なので、わたしは、hjklさんがセーブデータにアイテム名を使うと主張しているとは受け取っていません。
というかそこに関してはスルーです。
前にも「hjklさんの実装に対して何かを決め付けたりはしていません」と書いてます。

思い当たるとすれば「高級な言語とか既存のライブラリを活用」というフレーズを流用したことですが。
高級な言語とか既存のライブラリを活用してもデスマーチ仕様がある限りデスマーチは生まれ続けます。
楽で便利な開発手法でもデスマーチは避けられないって意味ですけどね。
楽で便利な開発手法がデスマーチを生む、というふうには読めないと思うのですけど。
デスマーチでメリットも帳消しになってしまうわけで。

hjklさんのSQLiteの提案もリンク先のページには「多分実際のゲームでは」なんて書いてあるので実績のない話だと分かるんですが、ここは突っ込んじゃダメだと思ってスルーしたんですよ。

わたしのデスマーチ発言は、ラスクさん、h2so5さん、softyaさんの、アイテム名を使う・使わない云々が明記されている投稿の流れを受けて書いたものです。
デスマーチ発言前のhjklさんの投稿は、すべてスルーしてるんです。
そのはずだったんですが、ついhjklさんの投稿からフレーズを流用してしまった。


あれ?おかしいです。
それでもやっぱり、どうしてhjklさんの投稿を否定したことになるのか分かりません。


#なんかほんと質問と関係なくなってしまってすみません。

アバター
Tatu
記事: 440
登録日時: 8年前
住所: 北海道

Re: RPGのアイテムの記憶とか

#34

投稿記事 by Tatu » 8年前

>>ISLeさん

No:33[74145]で
わたし(ISLeさん)がhjklさんの投稿に対して意見したことになっているんですね。
どうしてなんでしょう。

と書かれていますがこれは私(Tatu)に対しての言葉ですね?
では、どこを見てそう感じたかというと

No:27[74125]の
(hjklさんのhjklさんがNo:7[73955]で示した名前をキーにするやり方のどこに
デスマーチ仕様と断定できる要素があるんですかという内容に対し)
hjklさんの投稿が関係ないと言うなら、わたしのデスマーチ発言は自動的に最初の質問に書かれている
(ラスクさんの最初の文から引用)
を指していることになるだけじゃないですか。

という文からhjklさんの投稿に意見していたのだと思いました。
それに、デスマーチ発言がhjklさんかラスクさんのどちらに対するものだったとしても、
「文字列(名前)を記録(キーにする)」というやり方はよくないということになります。


ついでにデスマーチ発言に関連している内容として
No:24[74111]に

他の回答者で無くて申し訳ありませんが、わたしがいつ「文字列をキーにしたらデスマーチ確定レベル」と書いたのでしょうか?
「名前なんて変わりやすいものをキーにするなんて自殺行為ですね。(略)デスマーチ仕様です。」とは書きました。

とありますがこれについてはNo:19[74071]で

RPGやRPGに近いジャンルのタイトルを手掛けたのは数えられるほどですが、
チーム開発では別のスタッフが作成した外部データを読み込んで使うことはふつうにありますから、
小規模ながら数百タイトルの経験値があります。
もちろんいまだ改善が続く途中ですが、文字列をキーにしたらデスマーチ確定レベルなのは明らかと経験が言ってます。

と書いておられます。


>フレーズの流用
「高級な言語とか既存のライブラリを活用」というフレーズを流用したから
hjklさんは怒っていると書いていますがそんなよくあるフレーズを流用したからって怒るとは思えません。
「高級な言語とか既存のライブラリとか無意味」って書いてあるわけではありませんし。
それよりは「何で私(hjklさん)の名前をキーにするやり方がデスマーチ仕様なんですか。
言いすぎです。いろんなやり方があっていいじゃないですか。説明してください。」という感じだと思いますね。

デスマーチだと思うかの説明についてはsoftyaさんのNo.23[74105]で十分だと思います。
hjklさんも「素晴らしい考察だ」と評しており、納得しているようです。
だいたい

セーブデータに文字列を入れると
バージョンアップのたびにセーブデータが使えなくなるのでデスマーチ。
プログラム内部のみで文字列をつかうにしても文字列が変わるたびに
プログラムをいじらなければならないのでデスマーチ。
やっぱりアイテム番号からアイテム情報やアイテム名をテーブル参照するのが簡単。

という内容のようですね。



管理人さん達へ
このレスを書いていて思ったのですが、引用時に記事番号(可能ならリンクや引用前に最後に編集された時刻も)が
つくようにできませんか?どのへんでの意見だったか、
引用された本人がどういう文脈で書いていたのかが確認しやすくなると思います。

ISLe
記事: 2645
登録日時: 9年前
連絡を取る:

Re: RPGのアイテムの記憶とか

#35

投稿記事 by ISLe » 8年前

hjklさん以外の方がそう書かれたので、わたしがhjklさんに対してデスマーチ発言したとするのが当然の雰囲気になっているのかと思ったんですよね。
前にも書きましたけど、わたしが実装の話をしたのはhjklさんに絡まれたあとのことですし、デスマーチ発言に文字列という単語は一回も使われてません。
hjklさんがデスマーチ発言で怒る理由にはならないですよね。

hjklさんへの拒否反応から脊髄反射的に、softyaさんに被せて前提の話したり、実装の話を持ちだしたりしたのが完全に裏目に出た形ですね。
もちろんあの時点でもhjklさんが何で絡んでくるのか分かってなかったので、前提の話で無関係を表明したつもりが、実装の話で自分から接近してしまったわけですね。
冷静でなかったことは反省しています。

(追記)
「デスマーチ発言の対象は自動的に最初の質問」は、hjklさんに真っ向から勝手な思い込みですよと言ったら余計に怒らせると思って考えた末の表現です。
自分で読み直しても分かりにくいと思います。すみません。

hjkl

Re: RPGのアイテムの記憶とか

#36

投稿記事 by hjkl » 8年前

No: 26
softya (ソフト屋) さんが書きました: それに付いてはhjklさん自身がNo: 14で「セーブファイルの仕様についてはアイテム名かアイテム番号で管理するのがシンプルでいいとおもいます。」と書かれておられますのでセーブファイルにアイテム名を使うことを想定したというのは誤解ではないですよね?であれば私の考察においてはデスマーチ仕様だとは思います。
すみません。私の言葉がまちがっていました
セーブファイルの仕様について
アイテム名かアイテム番号で管理するのがシンプルでいいと言いましたが
アイテムを数値か文字列で管理する(保存)といった方が適当でした。
これがセーブファイルの仕様について誤解をまねいていたのだとおもいます。

おそらくsoftya (ソフト屋)さんはこのアイテム名というのが変更されやすいもので
アイテム番号が変更されずらいものとしていると思います。

構造体の方に付与させるアイテムの名前を保存していると推測されていたのでしょう。
もちろんそのように推測されたとしても妥当だと思います。

それに私はたとえキーを文字列で保存するのも構造体の方に付与させるアイテム名を文字列で保存しても
受け入れがたい仕様ではないのでチート仕様を例えでだしました。
ただこの例えではどちらかとうと構造体の方に付与させるアイテム名を保存する印象を強くさせてしまった
のものと思います。最初から正確に書くべきでした。

キーを文字列で保存するというのはキーがアイテム番号だったとしてそれを1と保存しようが"1"と保存しようが
それらを暗号化したものでも
どれかが受け入れがたかったりそれのみによってデスマーチ仕様だとは思わないということです。
まぁどちらにせよsoftya (ソフト屋)さんからすればデスマーチ仕様が含まれていますね。

私は基本的にデスマーチ仕様というものは存在せず、製作者同士のコミュニケーションが円滑に行われて入れば
仕様が悪いまま製作が開始または進行しつづけるという事はおきないと考えています。
仕様や製作者同士の連携が著しく悪く、開発が遅延しつづけるという事がデスマーチだと考えています。

私の方では
「名前なんて変わりやすいものをキーにするなんて自殺行為ですね。(略)デスマーチ仕様です。」
の発言以降、
文字列をキーにしたときに考えられる連想配列を使った実装について(名前なんて変わりやすいものをキーにするといっている以上セーブファイルの仕様ではなく内部的な実装のはずですから)
自殺行為やデスマーチ仕様なのかどうかを重視して発言していたのとその連想配列の実装はセーブファイルの仕様と
分離して考えることが可能なのでセーブファイルの仕様について正確性を欠いた発言をしました。

しかし、
No: 14
hjkl さんが書きました: そのセーブについてもstd::stringの配列でアイテムを管理していようと
セーブファイル上では数値や暗号化された文字列等で分離しても問題ないとおもうんです。
この発言でセーブファイルの仕様と内部の構造は分離して問題ないだろうと言ったつもりなので
そのような前提で発言しているとご理解いただけたかと思っていました。分離できないのでしょうか。
未だにセーブファイルについて質問されるのでこの辺にもお互い誤解があるのかもしれませんね。

さらに私の方で、
No: 16
hjkl さんが書きました: と言われたのでenumはstringに、構造体配列を連想配列に置き換えても目的の動作を可能にできるということを
ご理解なさっておられないと思い、私の方も擬似コードをまじえて説明致しました。
と発言したのはenumのENCHANT_FIREという名前のキーがstringの"ENCHANT_FIRE"とう名前のキーであっても問題はないだろうという
趣旨でしたがもっとわかりやすく書くべきでしたね。
あと擬似コードの方でもSWORD_1で比較するのに対して"SWORD_1"とするべきでしたね。

hjkl

Re: RPGのアイテムの記憶とか

#37

投稿記事 by hjkl » 8年前

softya (ソフト屋)さんのNo: 31の投稿で実際にコードを書かれたのでお聞きしたいのですが
もし、あるアイテムが所持アイテムのテーブルに存在するかどうか確認する場合どのような処理に
なるのでしょうか。

そんなことはRPGでは一般的な処理でないので考えたくないということでしたら結構ですし、
ラスクさんの質問の意図と違うことを考えたくないという場合でもお答えいただけなくても結構です。
またセーブファイルの仕様について明示していない質問には答えられないということでしたらその場合も結構です。

もしforループでテーブルをenumで定義された名前をキーにして比較する処理の場合
線形時間かかるものかと思いますが所持アイテムの総数が大きくなるにつれて連想配列の方が
速度的に有利に働く場合もかんがえられませんか?
構造体配列と連想配列のどちらが優位かとうことではありませんのでお気を悪くなさらないでください。このような場合も考えられませんかとうことです。
他のフラグ変数等で管理する場合は連想配列だろうとなんだろうと関係ありませんが
とりあえず私の方でこのような推察をしてみました。

私はアルゴリズムの実行時間について詳しいわけではないので間違っているかもしれません。

hjkl

Re: RPGのアイテムの記憶とか

#38

投稿記事 by hjkl » 8年前

ISLe さんが書きました: #RPGなのでフレーム関係ないってなんなんすかね
よくわからないのですが、RPGなのでフレーム関係ないと誰か発言しているのでしょうか。
コメントアウトされているのでわかりずらいのですが独り言か管理人さんや副管理人さんに対して発言されているのでしょうか。

おそらく私がNo: 7の投稿で、
hjkl さんが書きました: 環境が明示されていないので何とも言えませんが正規表現ぐらいなんともないコストだと思うんですけどね。
RPGなのでアクションゲームのように1フレーム内に処理する必要もありませんし。
と意見したことに触れているのだと思いますが(それ以外にフレームという言葉が使用された箇所はありませんから)
アクションゲームのような速度が求められやすいゲームに対して相対的に重い実装をしても
RPGでは問題にならないケースが多いだろうという意図での発言だったんですが
softya (ソフト屋)さんも「RPGなのでフレーム関係ない」と受け取られたでしょうか?
文字列の検索 = 正規表現と決めつけてしまったことに関しては申し訳ありません。

No: 33
ISLe さんが書きました: hjklさんがなぜ怒っているのか分からなかったんですけど、わたしがhjklさんの投稿に対して意見したことになってるんですね。
No: 33
ISLe さんが書きました: わたしのデスマーチ発言は、ラスクさん、h2so5さん、softyaさんの、アイテム名を使う・使わない云々が明記されている投稿の流れを受けて書いたものです。
デスマーチ発言前のhjklさんの投稿は、すべてスルーしてるんです。
そのはずだったんですが、ついhjklさんの投稿からフレーズを流用してしまった。


あれ?おかしいです。
それでもやっぱり、どうしてhjklさんの投稿を否定したことになるのか分かりません。
私に対する意見ではないとおもいますが
怒っていませんし、否定されたとも認識していませんのでご安心ください。

トピック内で行われた発言で、なおかつ自分の発言と関係のある話題について反応するのは自然だと思うのですが
このフォーラムでは推奨されない行いだと思われますので管理人様方、ぜひフォーラムルールに御記載いただきたいです。
これについては多くの利用者にとって重要な問題だとおもわれます。
ゲストユーザーの私にはわからない問題ですのでぜひ中立、非中立関係なくDixq (管理人)さんやsoftya(ソフト屋)さんの意見をお聞きしたいです。

No: 28
Dixq (管理人) さんが書きました: 特定の人と同じ意見になると、中立的な立場ではないことになりそうなので、申し訳ないですが今回は他の方にお任せします。
まだ質問に回答いただくための条件に不備があったでしょうか。
「この回答によって中立か非中立か決定されることはありません。どうぞ気楽に回答してください。」とでも付与しなければなりませんでしたか。
私の配慮がたりませんでした。
あの質問(ある仕様がデスマーチ仕様と断定できるかできないか等)はこのトピックの一連の投稿上、コミュニティの不和を誘発する可能性があるので取り消させていただきます。

排他的でないか非中立でないかといったことを
有志のユーザーによって管理、運営されているフォーラムに意見したことに関してはお詫びします。
人格攻撃があったのでないかという意見も自分の被害妄想ですので
どなたも自分の発言がそうだったのではないかという心配をされなくて結構です。

そこでDixq (管理人)さんに質問なんですが、いくら自由なやりとりができる場とはいえ
根拠が乏しいのに少し過激な表現(例えば自殺行為、デスマーチ仕様、たとえばです)を使い断定的に発言することや
特定のユーザーを揶揄しているともとれる発言を複数人で行うといった事が確認できた場合
どのような対応をとられるのでしょうか?

このフォーラム内でそのような発言があるとは申していません。

特定のユーザーを揶揄しているともとれる発言というのは例えば、(このトピックに偶然そのような発言が含まれてたとしても私はそれを引用しているわけではありません。あくまで例え話です)
「なにかゲームプランナーのような人がいたとして終盤まで名称にこだわったりするから"うかつ"に名前なんか固定できねーなぁ、
あいつらコードネームとかつけんのすきだもんなー、カッコイイとおもってるんかなー」なんて言いつつ
その後、追記で質問をしますが
先の発言が特定のだれかを直接的に揶揄していない風にみせるため独り言のような記述をすることです。例えばの話です。

こんな事をする人はこのフォーラムに誰ひとりいません。ご安心ください。
そもそも揶揄というのは性質上これがそうだと断定できるものではありませんしね(断定できないようにするもの)。
これがそもそも揶揄なんじゃないかって?そんなこと断定できませんよ(自分からこれは揶揄だと言わない限り)。

私はあげあしをとられないように、論点をズラされないように、記述の統合性を保てるように、
と細心の注意をはらって書く労力にこれ以上耐えられません(勝手にやっていることですので心配なさらずに)。
どうか勇気をだして回答してくださるとさいわいです。

ISLe
記事: 2645
登録日時: 9年前
連絡を取る:

Re: RPGのアイテムの記憶とか

#39

投稿記事 by ISLe » 8年前

せっかく質問に答えてわたしが書いた実装は無視かいな。

いやいや独り言ですよ。

実績も根拠も要らないなら、
ブラジルのツレに電話して内容とアドレスを指定して送って貰った携帯メールをセーブデータにする
っていう実装もアリですよねぇ。

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

Re: RPGのアイテムの記憶とか

#40

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

えーとですね。hjkl さんの内容が長すぎて内容が把握できているか自身自信が無いですが分かっている限り書いてみます。
まず、Tatuさんが書かれている第三者の目でみてもアイテム名をセーブファイルに使うと思われてもしかたのない書き方をされていたって事ではよろしいのですね?
で、
hjkl さんが書きました:私は基本的にデスマーチ仕様というものは存在せず、製作者同士のコミュニケーションが円滑に行われて入れば
仕様が悪いまま製作が開始または進行しつづけるという事はおきないと考えています。
仕様や製作者同士の連携が著しく悪く、開発が遅延しつづけるという事がデスマーチだと考えています。
に関しては人間同士のやり取りですので、どんなに円滑にやり取りしているつもりでも誤解やミスは生じます。これは避けれません。
なので誤解やミスをしても被害は最小限に留めたいので誤読や打ち間違い率の長い文字列が重要なデータに混入するのを避けるに越したことは無いと思うのです。あるいは打ち間違いされても最小限の被害で抑えられる仕様を選択すべきだと思います。

あとは、No: 23に書きましたとおりアイテム識別文字列の"ENCHANT_FIRE"であろうと"SWORD_1"であろうとセーブファイルに文字列を書きだす手間とか、読み込む手間を掛けるほどのメリットを感じませんので準デスマーチ仕様だと私は思います。
hjkl さんが書きました: softya (ソフト屋)さんのNo: 31の投稿で実際にコードを書かれたのでお聞きしたいのですが
もし、あるアイテムが所持アイテムのテーブルに存在するかどうか確認する場合どのような処理に
なるのでしょうか。
単に所持アイテム配列をforループで回して該当するアイテム番号の物を探すことになると思います。
hjkl さんが書きました: もしforループでテーブルをenumで定義された名前をキーにして比較する処理の場合
線形時間かかるものかと思いますが所持アイテムの総数が大きくなるにつれて連想配列の方が
速度的に有利に働く場合もかんがえられませんか?
構造体配列と連想配列のどちらが優位かとうことではありませんのでお気を悪くなさらないでください。このような場合も考えられませんかとうことです。
他のフラグ変数等で管理する場合は連想配列だろうとなんだろうと関係ありませんが
とりあえず私の方でこのような推察をしてみました。
具体的にその連想配列は何がキーになっているのでしょうか?
アイテム名をキーにした場合は要素がアイテム個数って仮定しますが、その場合はアイテム所持袋のアイテムの並びなどの仕様自体が内部構造のため制限を受けるこちになりますよね。
ドラクエのように少なくともアイテム入手順には並べられません。なので、比較できないとしか言えません。
無理やり比較するなら、何百個も所持していたら少々差があるかもしれませんがhjklさんも言われた通りリアルタイム性の無いRPGで気にするほど時間差があるとも思えませんので、連想配列に頼る価値があるのか分かりません。それと時間を気にするならアイテム消費時の削除時の時間コストも気になるところです(たしか無茶苦茶遅かったはず)。ソートに関しては連想配列の場合は逆にアイテム名がキーなら強さ順ソートなどの場合メリットにならないはずです。
どうしても比較したい場合は、とりあえずコードを書いて頂けますか?
こちらが誤解を招く可能性があるのは、これまでのやり取りでご理解いただけたと思いますので、その上で比較したいと思います。

[追記]
便利と言う意味では、Sqliteでメモリ内に展開したデータベースでアイテム所持袋やアイテム情報を内部構造として持つほうが有意義です。ソートが楽ですからね。
ただ、この方法は不用意なメモリ破壊バグの時に破壊されたメモリ内容の解析が難しくなり原因を追求し辛くなるので土壇場のデスマーチ率が高くなると私は思っています。
不可解なバグは、最後にまとめて来ますからね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1659
登録日時: 9年前
住所: 北海道札幌市
連絡を取る:

Re: RPGのアイテムの記憶とか

#41

投稿記事 by Dixq (管理人) » 8年前

> そこでDixq (管理人)さんに質問なんですが、いくら自由なやりとりができる場とはいえ
> 根拠が乏しいのに少し過激な表現(例えば自殺行為、デスマーチ仕様、たとえばです)を使い断定的に発言することや
> 特定のユーザーを揶揄しているともとれる発言を複数人で行うといった事が確認できた場合どのような対応をとられるのでしょうか?

上でも述べた通り、プログラマーの性格とでも言いますか、自分の技術を信じるがゆえに断定的な言い方になるのはよく見かけます。
また、重複しますが、不適切な仕様を酷く罵る言動も良く見かけます(「ライブラリの仕様がカス過ぎて使えない」など)
私ならそれはそういうものだと思って対応するかと思います。特に言動が荒かったからと言って過剰に反応しようとは思いません。
褒め言葉から得ることより、批判から得ることの方が数段多いです。
(例えば「公開されているゲーム面白かったです」と言われることから得ることと、「低スペックPCだと全然遊べなくてクソゲーだった」と言われることから得ることはどちらが多いでしょう)
なかなか丁寧な言葉で指摘してくれる親切な人はいません。罵倒されてでも、批判から自分に得る物を私なら探します。

・・ということで、批判は貴重な情報源であり、その際の多少の荒い言動は致し方ないものとし、
よほどの酷い罵倒、明らかな個人攻撃であると判断出来る事が無い限り、特別な対応はしません。

集団で特定ユーザーを攻撃するような言動があったらどうするかということについてですが、
本掲示板にはコミュニティになる以前から数えたら相当な数の投稿数がありますが、
常連の回答者さんは皆良い方ばかりなので、特定ユーザーを非難したり非常識な言動をされる方はいらっしゃいませんでした。
言い争いになったことは稀にありましたが、明らかに質問者が不適切な言動をしている場合がほとんどでした。

従ってよほど「悪質」だと判断出来るやり取りが無い限り対応はしないつもりです。どれ位が悪質かという基準は特に明記していません。

アバター
御津凪
管理人
記事: 200
登録日時: 9年前
住所: 道内
連絡を取る:

Re: RPGのアイテムの記憶とか

#42

投稿記事 by 御津凪 » 8年前

ここのフォーラムを管理している技術管理人の御津凪(みつなぎ)と申します。

これはこのトピックの質問・議論に対しての返答ではありませんのでご了承ください。(念のため書いておきます)
フォーラムの技術的な話題です。
(なお、これは他の管理人さん方と相談して決めたわけではなく、独自で決めた、個人的な発言です)
オフトピック
Tatu さんが書きました:管理人さん達へ
このレスを書いていて思ったのですが、引用時に記事番号(可能ならリンクや引用前に最後に編集された時刻も)が
つくようにできませんか?どのへんでの意見だったか、
引用された本人がどういう文脈で書いていたのかが確認しやすくなると思います。
こちらにつきましては、技術的に拡張可能だと思いますので実装を前提に検討させていただきます。
実は、このフォーラムにはオフトピック(本題とは関係の無い文章。独り言や本題とは別の話題など)という表現が搭載されています。(上の囲いのことです)


構文はこちら: [offtopic]テキスト[/offtopic]


これはフォーラム当初から機能としてはあったのですが、使用方法(特に初めて使う方)の混乱を招くのではないかという考えから
今まで管理人専用(副含む)として一般には表示を隠していました。

今回、このトピックの内容を読ませていただき、本題に外れた発言(オフトピック)が多く見受けられ、またそれにより本来必要のない議論が発生していると感じましたので、
このタグ(BBコード)の使用の明確化をゲストユーザーまで解放いたします。(オレンジ色のバルーンに「“”」と書かれているアイコンです)

これにより、より明確な発言が出来るかと思います。
(勿論、使用してくれる方がいないと意味がありませんが)

とりあえず、「オフトピックテキスト」では分かり辛いので、後で分かりやすい名前に変更しますね。("独り言"とした方が意味的には扱いやすいかな?)
あと、調整してなくてテキストがかなり見辛いのでこれも直しておきます。


追記:
名前と文字色を変更しました。
最後に編集したユーザー 御津凪 on 2011年8月26日(金) 01:44 [ 編集 2 回目 ]
理由: 追記し、分かりやすく取り消し線を付けました
This article was written by "Mitsunagi".

閉鎖

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