問題タブ [mud]
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.
c++ - ASCII カラーから HEX カラーへ
私は昔ながらの MUD のビルダーです。私は、Web ベースのルーム/オブジェクト/モバイル エディターの作成を任されています。これは私にとっては問題なく、ほぼ完了しています。私が持っている唯一の問題はカラーチャートです。ASCII カラーを Lope のカラー システムから HEX 値に変換して CSS で使用する方法がわかりません。
たとえば、赤は次のように定義されます。
それを CSS で使用するために 16 進数で赤に変更する方法と、どの色合いにするかがわかりません (lope のカラー システムには 2 つの赤の色合いがあります。1 つは暗い色、もう 1 つは明るい色です。ほとんどの色で同じです)。
あるものから別のものに変換する方法を知っている人はいますか?
python - ユーザー入力に基づいてループを作成し、Python で MUD の結果を保存する
私は2つのことをしようとしています:
ユーザーに 4 つの可能なオプションを提供するループを Python で作成します。「1」、「2」、「3」などを入力します。ユーザーが 1、2、または 3 を選択すると、テキストが表示されます。ユーザーが他の何かを入力すると、テキストが表示され、プロンプトがもう一度表示されます。これは、1、2、または 3 に入るまで繰り返されます。
次に、ユーザーからその入力を取得して、そのループの外で使用し、ゲームを続行したいと考えています。
これまでの私の解決策: コードを投稿する前に説明します。基本的に、ループに必要なすべてのコードを引数なしの関数内に配置しました。次に、else ステートメント内でその関数を呼び出します。
コードの動作: コードは希望どおりにループしていますが、ユーザーが入力した内容に基づいてループを「中断」して続行する方法がわかりません。リターンでなければならないことはわかっていますが、どこに置くべきかわかりません。
私が試したこと:私が入力した関数を呼び出すポスト:
そこから続けますが、うまくいきません。
コード:
ゲームを続行するための条件として使用する決定の入力を引き出すにはどうすればよいですか?
python - ユーザー入力を非同期に取得し、Python でイベント ループに渡す
基本的にテキストベースの戦闘ゲームであるシングルプレイヤー MUD を構築しています。ネットワーク化されていません。
ユーザー コマンドを収集してイベント ループに非同期で渡す方法がわかりません。ゲーム イベントが発生している間、プレイヤーはいつでもコマンドを入力できる必要があります。そのため、raw_input を使用してプロセスを一時停止しても機能しません。select.select のようなことをしてスレッドを使用する必要があると思います。
以下の例では、userInputListener() のモックアップ関数を使用しています。ここでコマンドを受け取り、入力がある場合はそれらをコマンド Que に追加します。
次のようなイベント ループがある場合:
そこにユーザー入力を取得するにはどうすればよいですか?
もっと簡単に言えば、別のループが同時に実行されている間にユーザー入力を保存する例を誰か教えてもらえますか? そこまで行けば残りはわかる。
java - JVM アプリケーションでの非 JVM 言語のホスティング
Java から他の言語をホストすることについて学ぶための方向性を探しています。これまでのところ、JSR 223 や Bean Scripting Framework などを見つけましたが、これらが適切な出発点であるかどうかを判断するには、私の知識と経験では不十分です。
アプリケーションは、ゲーム システムが (ソケットを介して) JVM ベースのサーバーに接続するサービスとして実行される泥です。
理想的には、自分の泥がすべてのネットワーキングを処理するようにしたいので、任意の言語、または少なくともいくつかの一般的な言語からコードをロードできる小さなネットワーキング モジュールを作成することを考えていました。誰かがゲーム モジュールを書きたいと思ったとき、彼らは私のネットワーク モジュールを自分のコードでパッケージ化しました。起動時に、ネットワーク モジュールがコードをロードし、サーバーと通信します。
たとえば、ゲーム開発者は Lua で戦闘プログラムを作成します。サーバーに接続するネットワーク プログラムに、この Lua コードを (何らかの方法で) 'ロード' して 'ホスト' してもらいたいと考えています。より一般的な解決策を探しているので、Java プログラム (Jython、JRuby などにも同じことが言えます) に Lua を埋め込まないことを好みますが、それが単に実用的でない場合は理解しています。
開発者が任意の言語でゲーム システムを記述できるように、私はこのアプローチを使用しています。
Bridge RPC などのサービスも検討しましたが、特定のベンダーに縛られないソリューションを希望します。
python - Pythonが遅すぎる-低レベルのcpスクリプトでエンジンを書き直すことはできますか?
それで、最初に。これが私のサーバーエンジンです。gilmud.py!
さて、これが私の以前の小説サイズの投稿の短縮版です。
上記のリンクは、MUD用のPythonサーバーエンジンです。行73-75、および359に注意
..。
恐らく、およそ100人のプレイヤーと2000人のmob/npcsの「ライフ」に必要なものを与える恐ろしい方法がわかるでしょう。tick()は、移動するのか、拾うのか、アイテムを拾うのか、戦闘中なのか、ターゲットにされているのかなどをチェックします。もちろん、自動化されたものを除いて、プレイヤーにも同じことが言えます。
パフォーマンスを向上させるために、このモジュールの一部またはすべて、たとえばC ++を書き直す方法はありますか?現在、必要な.1秒のティックは、現在の方法でpythonを使用して約3秒です。
(また、いくつかの異なるスレッドタイプとスタックレスを試しました。何もうまくいきませんでした)。
助けてくれてありがとう!どんなアドバイスも大歓迎です!
python - Python 描画 ASCII マップ
Pythonで構築しているMUD(または可能であればそれ以上)で、プレイヤーの現在の部屋から半径2マップを描画する必要があります。self.exits = {'west':1, 'north':2}
ルームは、キーが値 (隣接するルームの UID) が配置されている方向であるコンテナとして設定されます。部屋はこの方法でのみリンクされます。self.location が 0 のプレイヤーが「n」と入力すると、上記の変数に基づいてロケーションが 2 になり、そのルームのコンテンツにはプレイヤーの UID が追加されます。
そこで、上記の変数に基づいて、次のようなマップを表示したいと思います。ここで、「u」はプレーヤーの現在の場所です。
これは半径 1 にすぎないため、この部分を達成しました。ここに、これを行った方法の小さな (ここに投稿するために大幅に変更された) スニペットを示します。
私の狂気の中で、私はこれを8つの異なる方向すべて(斜め、上または下を含まない)で機能させることができました。しかし、最初の for ループで解析したばかりの部屋を for ループし、それらを描画し、すべてのスペースを空け、'\' や ' |' 交わる道があれば。この小さなタスクはすぐに悪夢のようになり、完了する前に 200 行にもなりました。
もう 1 つのハードルは、1 行ずつしか印刷できないことです。したがって、マップの高さが 50 文字の場合、player.hear()
50 行にする必要がありますが、これは反対ではありません。回答を投稿する前に、そのことを覚えておいてください。
また、フォーマットについてもうるさいわけではありません。世界中を旅しているプレイヤーを支援するために、「一目でわかるマップ」が欲しいだけです。
みんなありがとう。十分な情報を提供したことを願っています。そうでない場合はお知らせください。(これは、私が参照している(未完成で恐ろしい)モジュール全体へのリンクです。Map.py
python - Python -- コード期間による time.sleep() オフセット
ゲームサーバー内のすべてのプレイヤーとオブジェクトに対して tick() を実行する関数があります。これを行うには、セットを 0.1 秒ごとにループします。私はそれがしっかりした.1である必要があります。多くのタイミングと計算は、この一時停止が 0.1 秒まで可能な限り正確であることに依存しています。これを実現するために、これをティック スレッドに追加しました。
私の質問は、これがこれを行うための最良の方法ですか? ループの持続時間が 0.01 の場合、time_lapsed == 0.01 ... となり、スリープは 0.09 だけにする必要があります。うまくいかないようなので質問します。先日、サーバーが過負荷になっているというメッセージが表示されるようになりましたが、サーバーは過負荷ではありませんでした。睡眠を「動的に」制御する良い方法について何か考えはありますか? スリープせずに 10 分の 1 秒ごとにコードを実行する別の方法があるのではないでしょうか?
java - JavaのNIO2APIは、NIOを使用してシングルスレッドの多重化サーバーを作成するための代替手段ですか?
NIOを使用して泥を書く方法を学んでいます(高レベルのライブラリを除外していませんが、低レベルの操作も学びたいと思います)。
私の読書で私はNIO2について学びました。このプロジェクトではすでにJava7を使用しているので、シングルスレッドの多重化サーバーを作成するために使用するNIO操作がNIO2で置き換えられないか、つまり、おそらく簡単になるかどうか疑問に思っています。私にとってNIO2の関連部分は、その非同期クラスです。ただし、これらが必要かどうか、または基本的なマルチプレクサの代わりに必ずしも必要ではない別の/新しい抽象化かどうかを知るのに十分な経験はありません。
function - 私には2つのscalaプロジェクトがあります-基本的に同じです-1つは機能し、もう1つは機能しません。誰かが理由を教えてもらえますか?
クラスでは、古い学校のテキストゲームであるコロッサルケーブアドベンチャーのような一連の部屋を移動するテストベースのゲームを作成する必要があります。
まず、部屋の方向を入力したときに簡単に切り替えることができるように、部屋ごとに機能を定義することから始めました。
この次のコードはほとんどの場合REPLで機能しますが、毎回機能させたいと思います。
そして、次のコードはREPLではまったく機能しません。
誰かが私を助けてくれますか?私は一日中さまざまなことを試みてきましたが、それを機能させることができないようです。なぜ最初のものが時々機能し、常に機能するとは限らないのですか?なぜ2番目のものが機能しないのですか?実行するたびに2番目のものを機能させるにはどうすればよいですか?
ありがとうございました。
java - 多次元配列でのJava Nullポインタ例外
よし、ここに最初に投稿するので、私が何か間違ったことをしている場合は怒鳴ってください。しかし、私は次のコードを持っています。その試みは、それらの古い学校のサークルの泥の 1 つに対してゾーンビルダーのような取引を行うことです。ただし、ヌル ポインター エラーが発生し続けます。私はこの問題について何時間もググって修正してきましたが、何か他のことを試す時が来たと思います:P
その目的は、部屋のインスタンスを格納する 3D 配列を作成することです。泥の部屋に精通している場合は、接辞のリストがあり、特にこれには、グラフィックのアートタグを渡す個々の部屋の座標の 3 次元グリッドがあります。次に配列を使用して、部屋の出口ステータスに基づいたラベル画像を使用して、JPanel で各高度のフロアの 2D グリッドを表示します。問題は、次のいずれかにあるようです。コンストラクターが私の変数を設定していませんが、これはありそうもないようです b. 私はそれを間違って使用しています(Javaに精通していないため、おそらくそうです)またはc. 本当に簡単な間違いを見落としています。
Rooms クラス内の変数にアクセスしようとすると、常にエラーが発生します。
エラーのリスト: