Pythonのソースコード+素材+プロジェクト分析を達成するために、第二次世界大戦の航空機

A.プロジェクト分析

Pythonプログラミングプロジェクト

第二次世界大戦の航空機トピック
情報理工学系研究科
専門のコンピュータ科学と技術
名スター
クラスの学校の第37
インストラクターXXX

二O 12月Jiunian

A. 研究システムの背景と意義

今日の社会は情報社会と知識集約型経済の時代です。世界初のコンピュータので、ENIACは、現在に1946年にコンピュータ産業の急速な発展を来ました。グローバルな情報ネットワークの時代と活気づい「グローバルな情報ネットワーク革命」の象徴として、ユニバーサルグローバルな情報共有では、世界はすでに激しい競争のコンピュータの情報管理のフィールドに入力され、コンピュータは、自然に人々の生活に必須となります一部の小規模な。
過去には、一つは映画、テレビ、音楽、ファッションとエンターテイメントの手段によってのみ必要です。今日では、電子娯楽の代表として試合に主流の娯楽となってきています。CPUとグラフィックスカードやその他のデバイスの急速な発展ので、より眩しいとカラフルなゲームを開発する人のための可能性を提供しています。開発と時代の社会の進歩は、/科学技術は前方に急速に急速なペースで成長しています。より迅速に、広くコンピュータ技術の開発。私たちは、現代のコンピュータの大半は、業界に携わってきましたと言うことができます。現在では、複雑なゲームソフト富む、オンラインおよびネットワークゲームやテーブルゲームの両方、二次元または三次元空間、およびそれ以上から繁殖させたゲームのスタンドアロンバージョンから。ゲームのシンプルなスタンドアローン版を作ることを学び、ヘルプ初心者は、ゲーム制作の概念を学びます。現時点では、国内や世界的な、雨のゲーム業界後の筍が活況を呈している、より多くのそしてより楽しくゲーム内かどうかは、開発されます。

II。開発状況、国内外で

家庭用ゲーム製品の96、97年のように独特で「パラディン」、「三国志」シリーズとして、ではないが良いなどの外国製品の品質とレベルとして、市場の時に、ゲームのスタンドアローン版であるが、一定の市場を占有中国の特色や市場におけるゲームの雰囲気はクライマックスの波をオフに設定します。1998年に発足Lianzhongや中国をはじめとする古いゲームセンターのゲームプラットフォームマークコンピュータゲームのパイオニアとは、中国に根を取ります。しかし1999年に、財政問題やその他の理由の開発など、主流製品、政策の不確実性の形成の不存在下で国内のゲームが衰退し始めました。2000年までは、すぐにオンラインゲームの登場とは、私たちのゲーム業界をキャッチだけ徐々に回復したが、後半開始の投資、およびその他の理由外国のゲームと比較的競争の間に大きなギャップが原因しています。
今日では、黄金時代、何人かの人々の行動にオンラインゲームがメインの娯楽となっています。グローバルサインでゲームをプレイする中国網易、テンセント、Ninetowns、徐々に国際市場への完璧と国内のオンラインゲームを繁栄他の企業が、また、真のグローバルネットワークのネットワークの開発に、だけでなく、世界中のオンラインゲームは、どこにでもあります。中国市場への海外のゲームの多くは、コンピュータゲームの花のシーンは、経済発展に伴い、コンピュータ技術の開発は、この現象が激化するだろう。

III。フィージビリティ分析

(1)技術的な実現可能性は、
開発者のニーズを満たすために、完全な開発タスク、ハードウェアとソフトウェアの技術的要件の技術的な可能性を分析します。JetBrainsの開発ツールが使用される強力なソフトウェアです。
PyCharm 2019年1月3日のx64、強力な拡張機能は、ソフトウェアの特性、ソフトウェアは、航空機の戦争ゲームのために書かれたとの良好な効果音のサポートを持っているだけでなく、多くのPythoner好きなコンパイラです。常に更新進行中のインターネット産業の急速な発展に伴い、ソフトウェア開発プラットフォームとハードウェア技術。大容量、信頼性の向上、低価格は、ソフトウェア開発が可能であることができます。完全Pycharmコンパイラが負担することができ、ゲームのニーズをコンパイルします。
上記の状況に基づいてこのゲームの開発は技術的に可能であることを検討してください。
(2)経済的な実現可能性は
、このゲームがあるので、よりコンパクト、軽量、低開発コスト。また、ソフトウェアは安定し、後のメンテナンスシンプル、実用的、長期使用が一度に開発することが可能です。ユーザーはオンデマンドでのみ、新たな需要を持っている場合は、元のコードベース、低メンテナンスコストの変化。
上記の状況と背もたれに基づいて、このゲームは、経済的に完全に許容可能です。
(3)社会的実現可能性
、法的な考慮事項:このゲームは、独自に開発し、私の興味です。、市場での機能と同様のソフトウェアを描く、完全な収集と実際のゲームのエンティティが存在し、技術革新と開発と合わせ、デザインのアイデアを開発し、ユーザの要件を要約するPythonベースのゲーム。
ユーザーの実現可能性:このゲームは、ユーザーが必要とする、使いやすい操作が複雑な、面倒がありません。管理者は、プロセスの簡単な理解でソフトウェアを使用するバックオフィスの管理、コスト削減の一部を使用するために余分な学習の後に行うことができます。
上記の分析から、社会の面で、このゲームの可能性を完全に実現可能です。

IV。全体的な設計の原則

全体的に提案された設計原理は、システム構築の成功を確実にするために、システムの持続的発展のために計画することです。そのため、システム設計、以下の原則に従う:
シンプル:ゲームの前提は、ゲームはシンプルで操作が簡単であることを確認するために、可能な限り、達成する必要があります。操作が複雑すぎるとき一方では、簡単な操作は、他の一方で、ゲーム体験を強化する、ゲームの導入は、より多くの問題や脆弱性を実現しています。
関連性:このプロジェクトは、当然のように特定の実装の具体的な要件は、プロジェクトの要件のための明確な目標で、プログラミング言語Pythonの飛行機戦争ゲームとして選ばれた、とされます。
実用性:第二次世界大戦の航空機はリラックスして、ストレスを軽減し、面白いと心、人気の好きな選手の誕生以来、シリーズの優れたレジャーや娯楽ソフトウェア、ゲームです。ゲームをより人気があるので、そのゲームは、強力な実用的なを持っているように、選手たちのほとんどは、このゲームを使用する方が喜んで操作のゲームモードに精通しています。
一貫性:使用航空機のゲームは、基本クラスの航空機を継承することにより航空機、様々な航空機クラスの同じスタイルは、高い視覚的一貫性が付属しています。符号Tkinterのインターフェイスモジュールはpygameのを使用して、マスター・インターフェース・モジュールは、高機能一貫して、ラベルの挿入を使用して、システムのメインインターフェース要素に、書き込まれる使用します。

V. 要求分析

ゲームの基本的なセット
のユーザ登録とログイン
インターフェイス登録ユーザーへ1.ログイン:
ここに画像を挿入説明
ここに画像を挿入説明
ユーザーがすでに存在する場合2.登録、警告がインタフェースをポップアップ表示されます:

ここに画像を挿入説明
3.ログインユーザが存在しない場合は、警告がインタフェースをポップアップ表示されます:
ここに画像を挿入説明

[はい]をクリックして、登録インターフェイスを入力します。
4.ユーザー名またはパスワードが空の場合は、警告画面がポップアップ表示されます:

ここに画像を挿入説明
ゲームのインターフェイスの開始:

ここに画像を挿入説明
ゲームのヘルプ:内蔵のリターンキー、ゲームプレイに焦点を当てています。

:宣言とシンプルなゲームの説明、内蔵のリターンキー。
ここに画像を挿入説明

1、中小3敵機モデル、高速で、即ち低いジュニアの合計。
2は、航空機は8弾薬のラウンド、弾薬の20ラウンドが大型航空機を必要とする必要と、航空機が弾薬の1ラウンドを必要と破壊
ループのためにそれにロード3、負荷背景画像と背景音楽、背景音楽を。
ループのみセットpygame.mixer.music.play(-1)する必要があり
。、4、各々が平面根絶1000ポイント、平面、平面10,000ポイントで4000ポイント有し
、5、30秒ごとにランダムプロップ供給2小道具、フルスクリーン爆弾やダブル弾丸に分け、
6、フルスクリーン爆弾は3つだけの最大値を格納することができ、二重弾丸は、18秒の時間を維持することができ、
図7に示すように、徐々にスコアに応じてゲームの難易度を増加させます。航空機数の増加だけでなく、スピードスピードアップするために、パフォーマンスを向上させることの難しさ。
8、リアルタイム表示のスコアは::リアルタイム表示の選手が得点、ルールは次の通りです
敵機小中大ポイントは、それぞれ、1000,6000,10000が得られること撃墜する
、私たちは今、ユーザーのスコアの統計情報、スコアにスコア変数主な機能を追加し、表示フォントを設定します私たちは、フォントフォルダのライブラリーを配置しています。
(これは、ここで注意しなければならない!!!表示することはできませんあなたのフォントへのファイルパスが中国に置かれることです
その後、中小共感の敵、敵を再構築するために、大きなクラッシュする前に10,000ポイントを追加します。
そして、私たちの航空機を描きますインターフェースに引き寄せ。分数場合
9、(1)我々面は
myplaneという名前のモジュールを作成し、すべてのプロパティとメソッドは、我々の航空機の内部で定義された。
キーボードのユーザ操作に応じてメインモジュールを、ユーザに応答してキーボード2つの方法があります。
[1]、イベント・メッセージを検出することによって検出されるか、またはKEYDOWN KeyUpイベントがある場合、我々は、ユーザがキーボードのキーを押すことを知っています。(これは私たちの前の一般的な方法である)
、この値がTrueの場合、[2]、get_pressed()メソッドでキーモジュールを呼び出すには、キーボード上のすべてのキーのブール値を含むシーケンスを返します。これは、ボタンが押されたことを示しています。
ここでは、提案があります、キーボードイベントの検出のために誤って、私たちは例えば、ゲームがフルスクリーン爆弾を設定します、方法1使用することをお勧めしますトリガ、スペースバーを押したときに事故によってトリガーされた爆発、常にではないトリガー、その後、使用第1の方法は良好であり、キーボードイベントの頻繁なトリガー、我々はこの方法を使用し、4つの矢印キー、航空機の動きを制御するために、例えば、第二の方法を使用することをお勧めします。
(2)当社の双方向の動きの一方向の動きへの飛行機の動き、2人の選手が同時に矢印キーを押すか、(A、S、W、E場合 ) キーを同時に合成の方向に移動する、方法が私たちとして実装されています平面移動方法は、呼に係るキーに対応し、8つの方向に設けられています。
(3)当社の航空機の動的な効果を高めるために、我々は二つの絵(ME1、PNGおよびme2.png)スイッチによって、ジェット機の効果を達成することができます。カドガンアン・イメージインでmyplane.py。

(4)は敵を作成:
敵は3つの小中大サイズに分割され、その速度が遅いに高速です(小さく速い)、ページの上部に、私たちはページによって、いくつかのランダムな敵を作成する必要がありますランダムに航空機内で生成及び外側スクリーン5上の高さは、航空機の範囲ではなく、行に表示されることを保証します。
ここに画像を挿入説明

航空機(3)敵
敵機が画面の上から出てくるが、撮影を動き回る、ウィンドウの上部に下降、弾丸ショット数が一定値に達すると、下方への移動が追加されます。
10.衝突検出:
私たちの敵の航空機や航空機の衝突、双方は、操作の前に基礎が完了した後に、それは今、クラスごとに画面に発生悲劇的な影響力を増加され、その結果、総災害でなければなりません。インポートは、悲劇的な絵を描写し。
:衝突検出spritecollide()メソッド使用して
衝突をし、クラッシュが達成されていますが、2機の航空機が本当に理由である、接触を打っていなかったことがわかりましたか?
私たちは、デフォルトでは検出範囲として、矩形領域の位置の画像である通常のspritecollide()メソッドを使用するためです、と矩形領域は、私たち自身の航空機よりもはるかに大きいですが、私たちは絶対に良く行うことができます我々はそれを達成するためにどのように、完璧な衝突検出を行うことができますか?

スプライトモジュールは、この機能を使用することができますcollide_mask呼び出された関数はオブジェクトがマスクについて、検出の範囲を指定するために使用されているマスク属性を持って検出するために必要があり、pygameのも、具体的from_surface呼ばれたマスクモジュールを、(書きました)この関数は、表面はアフリカ透明部分をマスクと戻るように標識することができるオブジェクト。
まず、財産プラスマスクの各クラスについて。
self.mask = pygame.mask.from_sueface(self.image)#マスクとして標識された非透明部分。
メイン関数で衝突検出コードを修正する、検出方法はpygame.sprite.collide_maskが指定されています。
しかし:
私たちは、操作の一部が正常に再生できない音につながるとして、あなたはそれをクラッシュ絵を描くしたい、明白なバグが存在するだけで、実際に持っている、あなたは、フレームの多くを必要とするが、ここであなたは、クラッシュのサウンドを再生するためにそれを何度も繰り返し、あなたは多くの時間をプレイしたい、一度飛行機墜落事故の効果音のみを再生することができ、結果はpygameのはわずか8音チャネルをデフォルトので、あなたはすべてのサウンドチャンネルが、満たされていることです。詳細なソースコードを参照してください。
11、定義された弾丸:
弾丸は2つのタイプがあります。一つは1は2つの弾丸を撃つことができ、Aの供給がスーパー弾丸を付与されて起動するだけです。画面の範囲を超えて弾丸場合弾丸軌跡は、わずかに速い航空機の速度よりも、まっすぐで、我々は再描画弾丸ますが、飛行機も敵弾をヒット、箇条書きの再描画あなたは、再描画する必要があります。したがって、我々は、単一の弾丸モジュールを定義し、弾丸を再描画する必要があるかどうかを決定するために、能動性に弾丸を加えます。
10フレーム毎に提供される弾丸を送信します。
次の弾丸は敵を打つかどうかを検出するためのショット、それを押すと、敵弾アクティブはFalseに設定されています。
これまでのところ、基本的に無敵まで、私たちはそう。大規模または中規模の航空機と敵機かどうか、我々はそれを敵が今弱いらしいストレートショットスパイクを、置きます。
したがって、ギブ・大・中型航空機と敵航空機が財産エネルギーを追加するには、人生のどの程度の値を示しています。
その後、我々は敵が大きな弾丸を命中されるたびに、我々は最初だけで敵に衝突し、0に減少し、プロパティenery 1の値を減算し、メインモジュールを変更する必要があります。我々はまた、子供はプレイヤーが敵機や敵機のタイプは大きな弾丸を命中された、左どのくらいの健康の敵を知らせるために、より直感的にできるようにすることを、表示媒体と大きな敵の血溝を増やすことができ、それが落ちることはありませんとき、機械、今回は効果を持っている必要があります。
私たちは今、敵のモジュールは、特殊効果の画像を追加し、プロパティがヒットしたかどうかを検出するためのヒットを追加しています。
その後、我々は、中規模または大規模な航空機の弾丸をヒット、Trueにプロパティの値をヒット
、その後培地または大型航空機を描画するとき、我々は調整を行うためにヒットする必要があります。
ここに画像を挿入説明
12、一時停止機能:
私たちは、インターフェースの右上隅に一時停止を追加します。
4つのピクチャの合計は、2ゲームを再開することを誓約2を中断することを約束しました。各グループは、明るさと暗さ、マウスの画像の上に移動(とないマウスクリックを)持っていた、絵は迅速な効果を果たし、深めます。
私たちは、あなたが一時停止ボタン応答MOUSEBUTTONDOWNのイベントの下のプレーヤーのポイントかどうかを知ることができ、我々は、マウスの位置を取得する必要があり、現時点では、マウスをポイントし、ユーザーがマウスを指しているかどうかを知ることができます。イベントに応答することによってMOUSEMOTIONは、我々はボタンのスタイルを変更することができます。
判定記号を一時停止する一時停止などの主要機能リガ変数で。
イベントやMOUSEMOTION MOUSEBUTTONDOWNイベントに次の我々の応答:
マウスを移動する必要はマウスが時間の時点で、すぐにアイコンを変更することができるように、いったん一時停止ボタンをクリックした後に変更されます。
ここに画像を挿入説明
13、難易度を高めるために:
敵はゆっくり不変現れるので、それはプレイヤーのゲーム体験が希望を刺激することで、プレーヤーのための耐え難いです。私たちは5つのレベル、各リフトのレベルに分けられ、それが敵や敵の移動速度の増加の数を増加させる、ゲームの難易度があるだろう、プレイヤーのスコアが高くなるにつれてゲームは難易度が増加します。
フルスクリーン爆発:しかし、考慮に入れて、レベル5までの時間ならば、強度は偉大な敵となり、プレイヤーは大きな沙趙を提供するために、プレーヤーを必要と不利な状況に陥ることは非常に簡単です。
この大きなShazhaoは、次の初期化をトリガするためにスペースバーによってトリガ、我々が得るために30秒ごとに一度供給することができ、3フルスクリーン爆弾を取ったが、ほとんどは、あなただけの3航空機をロードすることができます。
トリガとしてフルスクリーン爆弾が我々のでKEYDOWNインシデント対応、事故に属し、その後、event.keyがK_SPACEそれであるかどうかを検出します。
フルスクリーンで実行爆弾の後、我々は再充電パッケージは、独自の絵を持って、充電を通じて30秒ごとに取得することができ、また、独自のランニングトラック(上から下へ)、を実装するには、2つの新しいクラス、およびインスタンス化供給パッケージを持っています供給のみパックのリリースタイマー、タイマーは30秒ごとに一度トリガされます。
我々は、二重に元の単一のスーパー弾丸、弾丸の供給を受けたときに、スーパー弾丸は、弾丸は相対数の速度が向上します。長さは、この時間の後、それは自動的に通常の弾丸となり、18秒超弾丸です。私たちはスーパーバレットタイムを必要とするので、加えて、我々はまた、弾丸の種類を表し、そしてスーパー弾丸を生成するための変数を必要としています。

14、航空機敵プレイヤーの数
聖人ではない、実際には混乱を行うものではありません。我々はチャンスを何度も選手を与える必要があるので、ゲームを同じように再生し、人にも、このような天才、ワンなしの天才のゲームをプレイしていること、がある場合でも、時間の最後まで再生するには、一度死ぬためにゲームをプレイすることはできません失敗した、えっ、それは問題で、あなたはまだ何度もチャンスを持っていません。
私たちは、私たちはカドガンのlife_numでメインモジュール内の変数を必要とし、プレイヤーは3つのチャンスを持っている定義し、命の数を示します。ここでは、その後、私たちの航空機の犠牲のそれぞれの後に、あなたは正確に一つの敵の位置を生まれている、ある小さなディテールは、我々は3生まれたが、時間を設定する必要があるので、それは、直接ハング私たちの航空機の直接的な結果になりますがありリズムの秒は、実際には、実際には難しいことではありません。
私たちは、まず、各衝突時にプロパティの値を検出した無敵の名前Myplaneのクラス属性を追加する必要があります。
15、ゲームの終了
画面の上には、画面を超えるゲームは、最高得点と得点の歴史が表示され、プレイヤーに二つの選択肢を提供します。再試合をしたり、ゲームを終了します。追求する選手たちの記録は、最高のスコア履歴はrecord.txtファイルに保存されています。
ゲームの決定の終わりには:
ゲームの2つに分割されている判断する上:最初のユーザーが結合イベントをトリガするゲームを終了し、ゲームを終了するにはボタンをクリックされ、その後、プログラムは終了を強制する、統合モジュールの統合ストレージを呼び出します。第二は、システムの意志、航空機の自身の人生の攻撃の数が0(もともと3)、ゲームのインターフェイスは、ゲームの迅速な終わりを与えられている、そして一体型モジュールを呼び出すと、あなたはより多くの最高記録よりも得点ならば、再起動して、ゲームを終了し提供していますこれは、ユーザーのアカウントと実績を記録します。

VI。システムテスト

(1)官能検査:需要と製品を得る、こと機能要件の達成を確認し、任意省略偏差を達成があるかどうかを確認する方法。
データベース及びプログラム部分との間の検査の相互作用のためのメインユーザ、ポイント情報:データを確認する(2)。
(3)性能試験:この戦争ゲームで飛行機のため、メインのゲームは、フレームレートをチェックするカトンの現象の存在である
(4)安定性チェック:イベント読み取りがにつながった、マウスやキーボードから取得されているので楽屋高い周波数応答は、そのプログラムの実行があるかどうかをチェックし、終了し、再起動などに
要約し、Outlook
研究が実践趣味に基づいており、利益は私に私の顔を作る多くの電力を与えましたとき、様々な問題が、解決策を見つけるために、様々なチャネルを通じて合計します。それはあなたがPythonが片側、ゲーム開発や設計プロセス、遭遇した多くの問題の側で学習、ゲームを開発するために使用する初めてだったが、また、かなりの数の迂回路が、運動の能力の問題を自己解決します。研究は私は、Pythonのより良い理解を持ってみましょう、だけでなく、大幅なプログラミング能力を高めるだけでなく、彼らの論理的思考と全体のデザインを行使する能力は、多くのことを学びました。この研究を通して、私たちの開発プロセスをスムーズに実現することが可能に完全なソフトウェア開発のアイデアは非常に重要であること、それは非常に重要である実現しました。プロジェクトが始まる前に、徐々にあなたが達成したいという機能を開発するために、場所は唯一のこれらの手順を完了するために、部門および全体的なレイアウトをコーディングし、モジュール、ソフトウェア・アーキテクチャを含めるべきであることだけでなく、ソフトウェア工学の体系的な知識がなければなりません。このような乗数効果を達成することができるようになります。
ゲームが正常に実行することができますが、計画によると、全体のソフトウェアは、一般的に、ゲームの特定の機能を実現するが、限られた知識や学習開発サイクルのために、さらに改善し、将来的に完成させる、改善のための多くの分野があります。
勧告はテスターを要約した後、次のように、このゲームは完全に機能する必要があります:
(1)BOSSがあまりにも多くのスキルを設定されていない、何も設定したパスアニメーションはありません。
将来の希望は、私は、ゲームを改善するためのシステムを最適化するために、プレイヤーの経験を向上させる、ゲームより滑らかな外観を作る能力を持つことができます。

+ソース材料:

https://github.com/jiahuantongxue/xinkong

それは簡単なプレイに[プログラミング]鉄を見て、すぐに私の公共号に注力して決定され、それを学習リソース(C、データ構造、ジャワなど)を受け取ります!

ここに画像を挿入説明

公開された50元の記事 ウォンの賞賛8 ビュー3056

おすすめ

転載: blog.csdn.net/jiahuan_/article/details/103987753
おすすめ