Python が Snake War を実装

高洛峰
高洛峰オリジナル
2017-02-27 09:59:201829ブラウズ

この記事では、cocos2d-python ゲーム エンジン ライブラリを使用して作成された Snake War のゲーム コードを共有します。これは、Python 2.7 と cocos2d ライブラリに基づいています。必要な方は、それを参照してください。

Python が Snake War を実装

実装後のゲーム レビューニューディール政策の影響で、国内のモバイルゲーム市場は少し寂れてきましたが、各社の新作ゲームがレビューに並んでいるでしょうか? 「ポケモンGO」に関する以前の興奮に加えて、メディアは何も聞いていないようです。ここ数日まで、突然何人かの人が同じゲームについて言及しているのを聞きました。また、オンラインで友達のサークルがそのゲームによってブロックされていると言っている人もいました。 (ただし、現在WeChatはその共有をあからさまにブロックしています)

このゲームは現在iOS無料リストで1位にランクされている「Snake Fight」です。非常に単純なゲームですが、どうして人気が出たのかわかりません。とにかく、ゲームが人気になると、必ずさまざまなメディアや専門家がさまざまなトリックを考え出すので、私が意見を言うつもりはありません。しかし、これは実装が非常に簡単なゲームなので、Python で実装することにしました。

【アニメーション】

Python が Snake War を実装

デモ 基本的な効果(加速なし)を達成するまでに約丸一日かかりました。コードは GitHub にアップロードされました:

GitHub - Crossin/gluttonous: game of 大食い Python

はゲーム エンジンとして cocos2d-python を使用します。コードを実行するには、Python 2.7 と cocos2d ライブラリをインストールする必要があります。

pip install cocos2d

コードの実装にはいくつかの問題があります:

移動方向の制御。キーボードには上下左右の 4 つのキーしかありません。360 度の移動方向に変換するには、多くの三角関数が必要です。

スネークボディトリートメント。ここでは、パス リストを使用してヘビの頭が通過する位置を記録し、胴体はパス内の対応するデータに基づいてその位置を更新します。

コンピュータースポーツ戦略。ここで使用する方法は、頭の範囲内の他の蛇の胴体と蛇の頭の間の角度を計算し、それを自分の移動方向と比較することです。角度の差が非常に小さい場合は、衝突することを意味します。 , したがって、現在の移動方向を調整します。

運用効率。効率性の最大のボトルネックは、画面上に絵を描くことです。最初に完成したバージョンでは、フィールド上のヘビの総数が300匹程度になったあたりから重度のラグが発生してしまいました。その後、直接追加するのではなく、Cocos の BatchNode を使用することで、描画の数が大幅に減り、ゲームがスムーズに動作するようになりました。しかし、非常に長い時間プレイすると、依然として効率の問題が発生し、それはまだ解決されていません。

正直に言うと、Python は商用ゲームには適していませんが、プロトタイプの学習や開発には適しています。今大人気のモバイルゲーム開発エンジン cocos2d-x はもともと Python 版から派生したもので、今回使用した cocos2d ライブラリです。機能にはある程度の違いがありますが、シーンとレイヤー、アクション、イベント、リフレッシュなどの概念を含め、エンジンの構造は非常に似ています。

ただの気まぐれで、適当に書いたもので、コードは最適化されておらず、基本的にコメントはありません。見てみましょう。 「いいね!」や再投稿が多ければ、継続的な最適化と一連のチュートリアルの作成を検討します。

Python による Snake War の実装に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。