問題タブ [roguelike]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
128 参照

haskell - リストを返そうとするとエラーが発生する

ここで、コードを少し改善したり、何かを切り取ったりしました。
ソースコードは次のとおりです。

今、コンパイルしようとすると、次のエラーになります。

私が理解しているように、リストのリストを返そうとしますが、オフにはなりません:

でも書いたら

代わりに、次のエラーが表示されます。

なしで書くと$、次のようになります。

では、どうすればタイプ Dungeon として返すことができますか?

0 投票する
0 に答える
92 参照

python-3.x - 関数とその引数を辞書に保存する

if/elif ステートメントの見栄えが悪いのは好きではありません。また、switch/case ステートメントはあまり優れていません。辞書の方が読みやすいと思います。これで、各キー バインディングが別の関数に割り当てられた場合の処理​​方法がわかりました。それは簡単です。しかし、それには 8 つの異なる移動関数 (moveNE、moveN、moveNW など) が必要になります。したがって、方向を引数として取る単純な move_object 関数が必要です。しかし、このコードを機能させるのに問題があり、何が間違っているのかわかりません。これが問題のコードです。

まず、辞書:

次に、move_object 関数:

最後に、move_object 関数を呼び出すコード:

キーバインドはゲーム クラスのinit関数で定義され、コードの最後のブロックは Game.main_loop() 内で発生します。

チュートリアルを何度か読みましたが、何が間違っているのかわかりません。ここにあるものは、args 辞書を ** キーワードとして move_object() 関数に渡すと思っていましたが、引数エラーが発生しました (2 つの引数が必要で、1 つを受け取りました)。

0 投票する
0 に答える
308 参照

c - ローグライク ダンジョン生成用の BSP ツリーの実装に関する問題

ここで説明されているような BSP を使用して、ローグライクのダンジョン ジェネレーターを作成しようとしています: Basic BSP

私はツリー構造に少し慣れていません。これにしばらく取り組んできましたが、どこが間違っているのか本当にわかりません。今のところ私はそれを持っているので、それが機能しているかどうかを確認できるように、各リーフノードの部屋の寸法を表すすべての「#」を出力するだけです。セグメンテーション違反が発生し続けており、この時点でどこが間違っているのか本当にわかりません。誰かが私のコードを見てアドバイスをくれたら、とても感謝しています。ありがとうございました!

0 投票する
1 に答える
849 参照

c++ - SDL2 でクラス構造を管理する方法がわかりません

SDL-2 を使用して、C++ の「ローグライク」ゲームを作成しようとしています。このために、Lazy foo のチュートリアルに従って、SDL の操作方法を理解しました。

私は C++/C# を 3 年間勉強してきましたが、今はプロジェクト管理を勉強していて、もう IT コースはありません...

コードの github は次のとおりです: https://github.com/Paingouin/Roguelike-SDL2-train/tree/master/

私は2つのクラスを作成しました:LTexture画像のロードとレンダリングの管理を支援しGlyph、アニメーション/スケーリングと画像の配置を管理する...

今、壁、モンスター、アイテムなどを表すために使用するオブジェクトで構成されるエンティティクラスを作成したかったのGlyphですが、そうするとメモリを使いすぎてしまうと思います...

グリフのポインタの配列を初期化し、それをエンティティのオブジェクトに関連付けることで、集約を使用する必要があるかもしれません...わかりません、迷っています...

手伝って頂けますか?また、正しく構造化するためのヒントやアドバイスはありますか?

0 投票する
1 に答える
88 参照

arrays - Haskell の RL の配列またはリスト

Haskell で (hscurses を使用して) 小さな RL を作成しています。現在、ダンジョンを作成/印刷するためのコードを作成しています。

私が最初に行うことは、「壁」を使用してリスト/配列を作成することです
。python(v3) では、次のようになります。

そして、それは次のように印刷されます:

私の質問は次のとおりです。haskellでこれを行うにはどうすればよいですか? モジュールが存在することは知っていますData.Arrayが、私が理解しているように、それらは 2D 配列のみをサポートしています。
また、後で部屋と廊下を「掘る」必要があるため、配列は変更可能でなければなりません。

しかし、私の質問は、配列を使用する必要があるか、それともリストの方が優れているかということです。

前もって感謝します!

0 投票する
2 に答える
411 参照

lua - クラスの複数のインスタンスから値を取得するにはどうすればよいですか?

趣味のプロジェクトとして、Love2D でローグライクを作成しています。私のアプローチは、Lua と Love2D (0.10.1) API のネイティブ機能をできるだけ多く使用して、middleclass や HUMP などの派手なライブラリに依存せずに言語についてさらに学習することです。

OOP に関する PiL の章を読み、その力を確認した後、プレイヤー、モンスター、その他の NPC (動くものなら何でも) を含む Mob クラス (クラス機能をエミュレートするメタメソッドを使用) をセットアップすることにしました。これまでのところ、うまく機能しており、メソッドなどを共有するあらゆる種類のインスタンスを簡単に作成できます。しかし、どうすればいいのかわからないことがたくさんあり、そのうちの 1 つがプロトタイプのさらなる進歩を妨げています。

マップ自体との衝突の設定はそれほど悪くはありませんでした。私のマップは、整数でいっぱいのテーブルでいっぱいのテーブルで、0 がフロアです。ゲームは「。」を描きます。「#」や「+」などは、各テーブルのさまざまな無生物を表します。プレイヤー 1 はテンキーを使用して移動し、生のピクセル位置を 32 で割って 32x32 の「タイル」のグリッドを作成することで位置を追跡します。次に、 love.keypressed(key) 内に、次のような行があります。

など、プレーヤーが押すことができる各キーの elseifs を使用します。これにより、マップ自体の開いているフロア タイル以外を通り抜けることができなくなります。

しかし、私はある種の「衝突検出」を実装して、MOB が互いに通り抜けるのを防ぎ、戦闘のルールを記述する際に使用しようとしていますが、これはよりトリッキーです。モブ間の距離を計算する方法を用意しましたが、最終的に丸め誤差が発生する可能性があり、さらにテストするモブの組み合わせごとに個別に記述する必要があると言われました。

私が知りたいのは、特定のクラスのすべてのインスタンスにいくつかの値をテーブルに渡す既知の (できればエレガントな) 方法はありますか?

私がやりたいことは、指定されたマップ上のすべてのモブに彼らがどこにいるかを「尋ね」、モブを追跡するためだけのマップの別のレイヤーに self.grid_x と self.grid_y を「報告」させることです (self.is_here の場合は 1)。は true、そうでない場合は 0 など)、毎ターン更新されます。次に、座標が等しいか、または foo.is_here フラグなどに基づいて衝突ルールを実装できます。

ただし、どのように進めるかについては漠然とした考えしかありません。私がやろうとしていることを行うためのより良い方法に関するフィードバックを含めて(そしておそらく特に)、どんな助けもいただければ幸いです。ありがとう!

0 投票する
2 に答える
73 参照

lua - インスタンスの初期化に使用される変数を動的に取得するにはどうすればよいですか?

ローグライクに速度ベースのターン システムを実装しようとしています。メタメソッドを使用して Mob クラスをセットアップしたので、以下を変数に割り当てると、特定のグリッド座標でモブがマップにスポーンされます。

それが完了したら、次のように呼び出します。

これにより、mob の self.turn_counter がテーブルに入れられます。一方、別のモジュールでは、問題の核心である次の 2 つの関数を定義しました。

初期化される Mob の最初の 2 つのインスタンスは常にプレーヤー 1 と 2 であり、それぞれ変数 player1 と player2 に割り当てられることにしました。そして、そのままで、プレイヤー間でコントロールをやり取りするのにうまく機能します! しかし明らかに、それはフル機能のゲームには十分ではありません。モンスターも必要です。

allTurnCounters テーブルは、スポーンするすべての Mob から順番に新しいエントリを取得します (プレイヤーとモンスターの両方を含むクラスで、統計を共有できます)。これが私の質問です: Lua にそのテーブル内の特定の turn_counter/value に関連付けられたテーブルの名前を動的に取得させ、それを使用してターンの優先順位を取得させるにはどうすればよいですか?事前に、またはスポーン順序でどの位置を占めますか?

私には 3 つのアイデアがありますが、どれも実装方法がしっかりしていません。1 つの方法は、turn_counters だけでなく、インスタンス テーブル全体を別のテーブルに送信し、何らかの方法で値のペア (テーブル自体とテーブル内の my_turn) を取得して、my_turn の値を直接更新するようなものです。

別の方法は、何らかの方法で環境 _G... を使用することです。私はまだ PiL の第 14 章を自分の目的に合わせようと調べていますが、value = _G[varname] はこれに使用できる強力なコードのようです。方法はまだわかりません。

私の最後のアイデアは、おそらく、各モブのテーブルで他の値を取得し、my_turn の前にポップできる、ある種の文字列感知検索置換を作成することでした。同様に、mob の種類ごとに既知のパターンで値を割り当て、それを string.find で使用し、次に string.gsub で使用して、コード行を意図したとおりに手動で読み取らせます。しかし、非エレガントに見えます。

ここで以前の Lua/Love2D の質問をすることができて幸運だったので、考えているうちに放り出しておきましょう!

0 投票する
2 に答える
245 参照

python - Python での libtcod アクセス違反エラー

そのため、多くの人と同じように、Python で libtcod を使用してローグライクのチュートリアルを行っています。 http://www.roguebasin.com/index.php?title=Complete_Roguelike_Tutorial,_using_python%2Blibtcod,_part_3

最終的にすべてを実行しましたが、特定のコマンドでエラーが発生し、修正方法や正確な問題がわかりません。同じコマンドを使用してチュートリアルで動作しているように見えます。私のコードは、私が知る限り文字通り同一であり、作成者が提供するダウンロード リンクを使用しています。libtcodpy、dundalk12x12_gs_tc.png、libtcod.dll、および SDL2.dll がすべてプロジェクト フォルダーにあります (コピーして貼り付けます)。残りの .py を見る必要がある場合は、チュートリアル パート 3 のダンジョン生成のコードを参照してください。それは私のものと同じです。私が見ることができないのは彼の libtcodpy フォルダーだけですが、それは彼のダウンロード リンクです。エラーは次のとおりです。

問題は、libtcod.console_set_char_background(con, x, y, color_dark_wall, libtcod.BKGND_SET) を呼び出すときの renderall 関数にあります。

これがライブラリ関数です

libtcodpy は、libtcod.dll および SDL2.dll とともに、私のプロジェクト フォルダーにあります。Python と 64 ビット Windows 10 上の私の PyCharm IDE を含め、すべて 64 ビットです。32 ビット以前に試してみましたが、SDL2.dll が見つかりません。すでに自分で修正しました。今、エラーの原因と、チュートリアル XX 内でそれを書き直す方法を理解できません。ここに初めて投稿して申し訳ありませんが、別のスレッドで正確な解決策が見られませんでしたが、SDLの問題と32ビット対64ビットに関して他にいくつかありました。

Python で libtcodpy を適切にセットアップする方法について、完全に詳細で遅滞のない YouTube ビデオを見つけるか、私が何を台無しにしているかを教えてください。

0 投票する
1 に答える
186 参照

c++ - ncurses ライブラリを使用して Player に Monster と対話させるにはどうすればよいですか?

ncurses ライブラリを使用して、C++ 用のローグライク タイプのゲームを作成しようとしています。多くの異なるチュートリアルに従った後、プレイヤー キャラクター、マップ、プレイヤーが壁を通過するのを防ぐためのコード、およびモンスター キャラクターのランダムな動きを作成することができました。

私が直面している次の問題は、ブール値の実装です。そのため、プレイヤー キャラクターがモンスター キャラクターと対話するたびに、ゲームが終了します (ローグライク ゲームのように)。ただし、思い通りに機能させることはできないようです。プレイヤーとモンスターに設定した座標に関係していると思いますが、まだわかりません. 誰でも私を助けてもらえますか?

コードは次のとおりです。