問題タブ [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.
objective-c - ローグライク マップのデータ構造
ローグライク ゲームのマップのデータ構造が必要です
各セルには、オブジェクトの配列が含まれている必要があります。マップには大きなディメンションがありますが、指定された座標を持つセルのコンテンツには非常に高速にアクセスできるはずです。マップは部分的にシリアライズ可能である必要があります (2kx4k マップ、(3,4) から (40,20) までのタイルのみを読み取りたい)。
私が今持っている最良のオプションは、キーとして座標を持つNSMutableDictionaryと、空でないセルのフィラーとしてNSMutableSetsです。しかし、非常に頻繁な操作の速度についてはわかりません。このセルのマップ部分から読み取り、画面に描画します。各セルに近隣セルのポインタを格納する必要がありますか?
ターゲット プラットフォーム - Objective-C/iOS/Cocos2d
それについてのObjective-C(またはCocos2dフレームワークのライブラリでさえあるかもしれません)に関する解決策はありますか?
java - Java を使用してパネルでグリッドに ASCII を表示する最良の方法は何ですか?
私は Java の経験があまりありませんが、単純なローグライク ゲームを作成してそれに慣れようとしています。次のようなインターフェイスを作成する方法を考えています。
このようなことを行うための明白な方法はありますか? Java を初めて使用するので、どの方法が最適かまったくわかりません。
曖昧でごめんなさい!
ありがとう
design-patterns - これはデザインパターンですか?もしそうなら、その名前は何ですか?
私は現在、C++ でターンベースの RPG (ローグライク) を開発しており、他のプロジェクトでこのような構造のコードを見たことを覚えているので、デザイン パターンのように見えるきちんとしたアーキテクチャをコードに作成しました。これが私が偶然見つけたある種のデザインパターンであるかどうか、もしそうなら、その名前は何ですか. プログラムの他の部分では、Factory や Singleton などのいくつかのパターンを意図的に適用していますが、以下は、パターンかどうかわからないプログラムの別の部分の大まかな説明です。
GameElementという基本クラスがあります。これは、ゲーム フィールド内に表示される可能性のあるすべてのオブジェクトのルートです。このクラスは、要素のタイプに関係なく共通の動作であるため、すべてのサブクラスが継承する移動、衝突の検出などに関する基本的かつ複雑な動作を実装します。さらに、デフォルトでは何もしませんが、サブクラスによってオーバーライドできる 2 つの仮想メソッド: handleCollision( GameElement* e )とhandleTurn()があります。オブジェクトが別のオブジェクト (特にプレーヤー) と衝突したときに何をすべきかをオブジェクトが認識できるように、handleCollisionメソッドを再実装できます。オブジェクトが自分の番になったときにやりたいことを何でもできるようにするために存在します。これまでのところ、いくつかのサブクラス、つまりSolidElement、PushableElement、FighterElement (プレイヤーと敵用)、FighterElementを継承するPlayerElement (プレイヤー) 、およびFighterElementも継承するEnemyElement (すべての悪の根源) を作成しました。
run()メソッドでゲーム ループ (SDL イベント ループも含む) をカプセル化するGameEngineというクラスもあります。これは、このメソッドの (かなり短い) 実装です。
ゲーム ループ内で、現在のシーンのGameElement*コンテナ全体を通過するループを持つhandlePlayerCollisionsを呼び出し、それぞれでhandleCollision( player )を呼び出します。要素の型であり、プレイヤーを傷つける、道を塞ぐ、移動する (つまり、押される) など、クラスがhandleCollisionメソッドで実装したその他のことを行うことができます。また、メソッドhandleTurnsが呼び出されます。これは、 handleTurnを呼び出すことを除いて、handlePlayerCollisionsとほぼ同じことを行います。彼らが好きなことをできるように、あらゆる要素で。呼び出されるもう 1 つのメソッドはupdateScreenで、その名前が示すとおりのことを行います。最後に、キー入力の処理に使用される SDL イベント ループです。
このアーキテクチャが何らかの設計パターンである場合、そしてそれがどのようなパターンであるかを知っていれば、他のプロジェクトで使用するのがはるかに簡単になり、必要なときに他の人に説明するのにはるかに時間がかからなくなるでしょう。に。
java - 入力に KeyStroke を使用して、A - Z キーを読み取る簡単な方法はありますか?
まず第一に、これはキーロガー用ではなく、ローグライク ゲームでの入力用であり、JLabel
" JFrame
Name: " と入力し、A-Za-z を入力できるようにしたいと考えています。キー入力の多くのオプションを見た後、KeyStroke
s とAction
s を使い始めたところに戻りました。
私が疑問に思っているのは、これを 56 回繰り返すのではなく、キーの範囲を追加する方法があるかどうかです。
つまり、この方法で、コピーと貼り付けを少し書くだけでそれを行うことができますが、私はそれが本当に嫌いです。使用するよりも洗練された解決策が必要です。KeyListener
これは、どうにかしてフォーカスを合わせる必要があることを意味しますが、ウィンドウは単純JFrame
に大きなJLabel
ものです。
また、私はJavaを数日しかやっていないので、おそらく非常に一般的に知られている解決策を見逃しているのですが、もしあれば共有してください! 感謝。
java - Java と Swing とゲーム ループ
(そうではない)ここで短い質問。私は、コンソールではなく UI として Swing を使用して単純なローグライクを作成することに取り組んでいます (これにより、特に Eclipse での作業が容易になります) が、障害にぶつかったようです。
困っているのは、ゲーム ループに入ると UI が正しく表示されないことです。全体を通して「ソリティア」効果を与える醜いウィンドウフレームが表示され、実行中にRAMの使用量が急速に増加します。
ここで Swing について何か重要なことを見逃していますか? これを行うには Swing の同時実行設定を使用する必要がありますか? もしそうなら、最善のアプローチは何でしょうか?
完全なコードは以下のとおりです。
c++ - Code::Blocks での C++ 非クラス メンバ コンパイル エラー?
ここにあるチュートリアルに従って、ローグライクゲームのプログラミングの背後にある基本的な考え方を学ぼうとしています。USB から移植可能な Code::Blocks 10.05 を使用し、MinGW でコンパイルしています。Console.h も、上でリンクした Web サイトからのものです。
すべてが機能していることを確認するために、このクラスだけを設定しようとしたときに障害が発生しました。
を使用しようとすると、次のエラーが表示されます。
エラー: 非クラス タイプ 'Win32Console()' である 'console' のメンバー 'Clear' の要求 |
どんな助けでも大歓迎です、ありがとう!
編集
MinGW と Code::Blocks を自分ですぐに台無しにしてから再インストールしたところ、次のエラーが返されました。
`Win32Console::Win32Console() への未定義の参照
haskell - Haskell と Repa を使用してローグライク ダンジョンを動的に生成する
Haskell で書かれたローグライク ゲームに取り組んでいます。を使用して世界を 2D グリッドとして表現することにしましたData.Array.Repa
。今度は、まっすぐまたは 90 度回転する廊下と、(ほぼ) 任意のサイズと形状の部屋を含むランダムなダンジョンを動的に生成したいと考えています。
これらのダンジョンを生成するための戦略を理解するのに苦労しています. 酔っぱらいの散歩はうまくいくかもしれませんが、あまりにも不安定で、多くの部屋を生成しないようです. ダンジョンを生成するためのより良いアプローチは何ですか?
また、Data.Array.Repa
ここで使用するデータ構造の適切な選択はありますか?
c++ - DOS ウィンドウ内の任意の場所への書き込み
「DOS」出力をローグライクな方法で表示する方法を探しています。ユーザーがボタンを押したり、マウスでクリックしたりすると、変更または移動できる文字(レベル)で満たされたDOSウィンドウがあるように見えます。
通常の DOS ウィンドウ (従来の C++ プログラムまたは .bat からの出力など) では、「さらにテキストを書き込む」ことしかできず、面倒でアーティファクトを引き起こす何かが変更された場合は、レベル全体を再描画する必要があります (更新されたレベルはゆっくりとスクロールします)。 )。
QtやSDLなどを使用して文字で2Dタイルを描画してこの問題を克服できることはわかっていますが、やりたいことは複雑に思えます。 /「DOS」ウィンドウ?
ありがとう!
[編集] ありがとうございます。すべての提案を確認します。すべて +1 です。
[編集] PDCurses が勝利しました。使用方法のチュートリアルはここにあります (NCurses と書かれていますが、単純な Hello world の例では問題なく動作します): http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/
python - Python / LibTCOD - libtcod.console_wait_for_keypress(True) が入力ごとに 2 回トリガーする
Roguebasin python/libtcod ローグライク チュートリアルを進めています。私が遭遇する問題は、 が呼び出されるたびkey = libtcod.console_wait_for_keypress(True)
に、メイン ループが 1 回ではなく 2 回起動することです。キーボード入力を処理するコードは次のとおりです。
コードは、チュートリアルのこの部分からそのまま引用されています (余分な 4 スペースのインデントを除いて) 。そのページには 2 つのコード バージョンがあることに注意してください。独自のバージョンを作成しましたが、直接コピーして貼り付けても問題が発生します。私が知る限り、問題はチュートリアル全体に浸透しています。
console_wait_for_keypress(True)
単一のキーを待って「キー」変数に入れることになっているので、それに反応できます。他のすべての入力はフラッシュされるはずです。console_wait_for_keypress(True)
次に、新しい入力を待機することになっているメインループ呼び出しの新しい繰り返しなど。console_wait_for_keypress(True)
代わりに、新しい入力を待たずにトリガーの 2 番目の反復が実行されます。
console_is_key_pressed()
2 番目の入力は条件をトリガーせず、handle_keys()
関数は「didnt-take-turn」を返し、ゲーム ロジックに何もしないように指示するため、ゲームは実際には正常に動作します。これは、サイクルごとに代わりに 2 つが費やされることを意味しますが、これは望ましい動作ではありません。handle_keys()
すべてのサイクルの結果を印刷すると、問題は簡単に確認できます。「None」と「didnt-take-turn」を交互に繰り返します。
私は正直にこれに困惑しています。単に方向ボタンを押したままにすると、「didnt-take-turn」出力が生成されないように見えますが、この機能は単一のキー押下に使用されることになっています。通常のキー押下では常に正確に 2 つの出力が生成されるため、遅延が短すぎることはありません。libtcod のドキュメントは役に立ちません。
1回のキーストロークで1回だけトリガーするにはどうすればよいconsole_wait_for_keypress()
ですか?
unity3d - Unityのインポートされたタイルベースのマップでのテクスチャリングの問題
団結してローグライクゲームを開発しようとしています。このため、タイルベースのマップが必要です。
このチュートリアルのおかげで、9x9の正方形のタイルマップを簡単に作成できました。 http://classes.design.ucla.edu/Winter11/157B/wp-content/uploads/2011/01/BoardGameTutorialPart31.pdf
「長すぎる、読まなかった」人のために、私は基本的にそれらのステップを実行しました。
- AdobeIllustratorで2D9x9の正方形のタイルベースのマップを描画し、Illustrator8ファイルとして保存しました。
- そのAIファイルをAutodeskMayaにインポートし、メッシュ->個別ツールを使用しました。その後、すべてのタイルの親を外し、3Dタイルベースのマップを作成しました。.FBXファイルをUnityプロジェクトのAssetsフォルダーにエクスポートしました
- Assetsフォルダーから.FBXファイルをドラッグして、シーンにドロップしました。終わり。
さて、私の問題は、単一のタイルにテクスチャを適用したいということです。それでも、テクスチャをタイルに適用しようとすると、テクスチャの1/81のみを取得し(9x9マップであることを思い出してください)、テクスチャのその部分のみを関連するタイルに適用したように動作します。
理解を深めるためにスクリーンショットをアップロードしています。
私は自分の問題をグーグルで検索しましたが、私の調査結果によると、UVマッピングを行わなかったために発生しています。まあ、それをどうやってやるのかわからないのです(これが私の最初のゲームになり、私は3Dモデリングの非常に初心者です)。Web上の例は、一般的なUVマッピング(立方体またはその他の一般的な形状をマップする方法)に関するものだけです。Mayaを使用してタイルベースのマップにUVマッピングを行う方法がわかりません。
実際、それがUVマッピングの問題であるかどうかはわかりません。私はとても立ち往生しています。私を助けてください。
前もって感謝します!