問題タブ [game-ai]

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 投票する
2 に答える
546 参照

finite-automata - アーケード格闘ゲーム AI

Mortal Kombat によく似た、アーケード スタイルの格闘ゲームで対戦相手の AI を構築する必要があります。

コンピューターにランダムな動きを使用したくありませんが、より打ち負かすのが難しい AI が必要です。

リソースはどこから探すことができますか? この種のプロジェクトの実装を知っていますか?

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

python - ゲーム ai 視線のパイソン

プレイヤーが暴徒の範囲内にいるかどうかを確認するにはどうすればよいですか? (私はピグレットでトップダウンゲームを作っています)モブが一定の距離内にいる場合、モブがプレイヤーを追いかけて攻撃するようにしていますが、これを効率的に行う方法がわかりません。x > mob.x - 50 および x < mob.x + 50 などを確認するために「if」ステートメントを実行する必要がありますか?

私は暴徒のためのクラスを持っています

次に、実行できるさまざまなアクションとしていくつかの関数を使用しました

プレイヤーの位置は「player.x」と「player.y」で​​す(モブも同じですが、「プレイヤーの代わりにゾンビ」があります)

Joran が言ったように、Mob とプレイヤーの座標の間の距離を見つけることが最善の方法だと思います。距離を確認する別の関数を作成します。

これがわかりにくかったら申し訳ありません

0 投票する
3 に答える
2581 参照

visual-c++ - C++/OpenGL チェスゲームのプログラム設計アドバイス

OpenGLでレンダリングされたチェスゲームを作っています。

すべての答えを教えてくれる人を探しているわけではありません。自分でコードを理解したいのですが、正しい概念を教えてくれることが本当に必要です。この時点で、どこから始めればよいかわかりません。これが私が理解したものです:

TurnState次の値を持つ列挙型:

  • playerOneTurn
  • playerTwoTurn
  • Stopped

GameState次の値を持つ列挙型:

  • playerOneCheck
  • playerTwoCheck
  • playerOnecCheckMate
  • PlayerTwoCheckMate
  • InitializingGame
  • Tie
  • NormalPlay

抽象クラスPlayerとサブクラスComputer.

ChessGame次のフィールドを持つクラス:

Move次のフィールドを持つクラス:

Location次のフィールドを持つクラス:

を受け取り、移動が有効かどうかをチェックChessBoardする 1 つのメソッドを持つクラス。isValidMove

ChessPieces次のメソッドを持つ抽象クラス:

そして、以下のサブクラス:

  • Pawn
  • Rook
  • Queen
  • King
  • Knight
0 投票する
2 に答える
7316 参照

python - 効率的な衝突検出

2DゲームでPythonとPygletを使用していますが、衝突検出で問題が発生しました。衝突をチェックする私のコードは次のようになります。

「ターゲット」が別のスプライトである各スプライトからの距離をチェックします。よくわからないのは、「すべてのスプライト間の衝突をチェックする必要があるか」ということです。私は200を超えるMobを持っており(完成品ではさらに多くのことを望んでいます)、衝突をチェックすると再生できなくなります。速度を落とさずに特定の距離内のスプライトのみをチェックする方法はありますか?

編集:

私はグーグルの周りを読んで、同じ衝突をするのに多くの速度が費やされていることを知りました。つまり、sprite1はsprite2でチェックされ、sprite2はsprite1でチェックされました。そこで、衝突チェック機能にいくつかの変更を加えました。これで、実行速度は速くなりますが、それでも20fps未満です。

(非効率なコード/役に立たないものが含まれている可能性があります。少し遊んでいました)

EDIT2:

スプライトライブラリとしてrabbytを使用することにしました。衝突は速くて簡単です。上記のコードを^^に置き換えました:

これにより、衝突したオブジェクトのリストのリストが返されます(これが正しい用語かどうかはわかりません)。私はまだそれを「ifcollided:」タイプのステートメントに変換する方法に取り組んでいますが、進歩しています。誰かが同じような状況にあるなら、私はラビットを使うことをお勧めします。

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

python - プレイヤーが敵からどの方向を向いているかを見つける方法は?

このコード(pythonとpyglet)を使用して、敵のaiをプレーヤーに向かって移動させることができました。

ただし、敵のスプライトを回転させてプレーヤーに向かわせる方法がわかりません。上記のコードの一部を使用して、それに応じてプレーヤーを回転させることができると確信していますが、機能する方法を見つけることができませんでした。

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

java - ゲームプログラミングai:プレイヤーを見つけるために壁をスケーリングしますか?

私はしばらくの間、この人工知能の方法に取り組んできました。基本的にint、壁がプレイヤーへのパスをブロックしている場合に敵が進む可能性のある各方向に対応しています。ほとんどの場合、これは機能しません。時々、敵はそれが通り抜けることができない亀裂を通り抜けるでしょう。また、明らかな隙間がある壁に貼り付く場合もあります。私は自分のコードを添付しますが、それがあまりにも非効率的であるか、それを解決する方法がないように見える場合は、アプローチを完全に変更することに反対していません。私はこれらのことが通常どのように行われるのかを知りたいので、より良い(そして機能する!)方法でそれを実装することができます。

私のコード:

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

java - 線形座標を使用して AI と照合する

私はいくつかの人工知能に取り組んでいます。これらは壁/境界の参照であるため、AIが特定の座標に遭遇しないようにしたいと考えています。

まず、AI が壁にぶつかるたびに、その位置 (x, y) を参照します。同じ壁に 3 回ぶつかると、線形チェック ポイントを使用して、これらの座標を通過する壁があると「想像」します。

AIが再びその壁に入るのを防ぎたいです。

座標が直線になっているかどうかを検出するには、次を使用します。

これは、指定されたポイントが互いに線形である場合に true を返します。

だから私の問題は次のとおりです。

  1. ロボットが現在の軌道から壁に近づいているかどうかを判断するにはどうすればよいですか?

  2. Java の「想像」の代わりに、1 から 3 までの線があります。しかし、無限 (または閉じる) まで、これらの線形座標を通る線を「想像」します。

これにはややこしい三角法が必要になると思いますか?

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

java - アプリに AI を書き込む方法

単純なカードゲーム (Dutch Blitz) をプレイするための Android アプリを作成しています。単純なアルゴリズムは既に作成されていますが、AI を新しいスレッドとして実行する必要があるのか​​、何らかの形でメインスレッドに統合する必要があるのか​​ 疑問に思っていました。他の誰かが良いアイデアを持っています。私はそれらを聞きたいです...

アイデアをありがとう!

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

java - Snake AI の奇妙な動作 (間違った動き)

そこで、AI を使って独自のスネーク ゲームを作成しましたが、非常に奇妙なスネーク アクションが表示されます。

ビデオ

したがって、私のアルゴリズムは次のとおりです。

  1. マップを取得: 1 - パスはクリア、0 - パスなし (壁、ヘビ)
  2. 果物の位置を取得する
  3. SnakeAI の頭の位置を取得する
  4. A* アルゴリズムに送信する (正常に動作)
  5. パスを取得します (ポイントの配列。末尾はフルーツの位置、先頭はスネークAi の頭)
  6. snakeAI の向きを設定する

Pastebin のコード

それで、私は約 1 週間、その間違った動きと戦っていますが、エラーがどこにあるのか本当にわかりません。ヨーダマスター、助けて。

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

java - キャラクターを選択した角度まで回転させるJava Slick

ゲームのコーディング中に問題が発生しました。Slick Libraries と Light Weight Java Games ライブラリを使用しています。プレイヤー (飛行機) をマップ上の特定のエリアに移動させようとしています。たとえば、ターゲット座標を (50,50) に設定すると、飛行機は X で 50 になり、次に Y で 50 になります。プレイヤーがコントロールしている場合のように、飛行機を 90 度回転させようとしています。そのため、回転を設定するだけではなく、通常の速度 (0.2*デルタ) で回転させたいと考えています。それは90度に達します。

次のコードは、平面が現在左向きに回転している場合にのみ機能します。

これは私の現在のコードです。

現在の動作: 平面が 90 度以上左に回転し、AI がオンになっている場合、ゆっくりと 0 度まで回転します。それは私が理解していないものです。

私がやろうとしていること:飛行機が90度以上左に回転している場合は、飛行機を-90度回転させてから停止します。