国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
今度は、プレイヤーオブジェクトを作成する時が來ました。プレーヤークラスを肉付けする最初のステップは、移動関數(shù)をプレイヤーの位置を変更させることです。サイド変數(shù)は、プレーヤーが居住する裁判所のどの側(cè)面を示し、プレーヤーを水平に配置する方法を指示します。移動関數(shù)に渡されたy値は、プレーヤーがどれだけ上または下に移動するかです:
ボールをキャッチ
JavaScriptを使用したより実踐的な
獨自のデバイスでMicrosoft Edgeをリモートテスト
Visual Studioでのゲームのパフォーマンスを最適化するにはどうすればよいですか?
ホームページ ウェブフロントエンド jsチュートリアル Visual StudioとASP.NETで1時間以內(nèi)にWebゲームを構(gòu)築する

Visual StudioとASP.NETで1時間以內(nèi)にWebゲームを構(gòu)築する

Feb 19, 2025 pm 12:35 PM

Visual StudioとASP.NETで1時間以內(nèi)にWebゲームを構(gòu)築する

この記事は、MicrosoftのWeb開発シリーズの一部です。 SitePointを可能にしてくれたパートナーをサポートしてくれてありがとう。 この記事で説明しています

基本的なゲーム開発哲學(xué)

ゲーム開発にWebテクノロジーを使用

  • ゲームコントロールの追加とai
  • 議論されたテクノロジー:
  • Visual Studio 2013 Pro、Visual Studio 2013 Community、ASP.NET

コードダウンロード(.zip)

  • ゲームを開発するためにまったく新しいスキルセットは必要ありません。実際、HTML、JavaScript、CSSなどの現(xiàn)在のWeb開発スキルは、幅広いゲームでは問題ありません。 Webテクノロジーを使用してゲームを構(gòu)築すると、ブラウザを使用してほとんどすべてのデバイスで実行されます。 これを証明するために、Webテクノロジーと2つの外部ライブラリのみを使用して、ゼロからゲームを構(gòu)築することを?qū)g証します。1時間も経たないうちに行います?;镜膜圣钎顶ぅ螭去欹ぅⅴΕ?、コントロールとスプライトから、シンプルな相手の人工知能(AI)まで、さまざまなゲーム開発トピックを取り上げます。ゲームを開発して、PC、タブレット、スマートフォンで動作します。 Web開発者または別の開発ドメインとしてのプログラミングの経験があるが、ゲームを書いた経験がない場合、この記事はあなたを開始します。あなたが私に1時間を與えたら、私はあなたにロープを見せることを約束します。
  • キーテイクアウト
クイック開発:HTML、JavaScript、およびCSSの既存のWeb開発スキルを利用して、Visual StudioとASP.NETを使用して、ブラウザを使用して事実上あらゆるデバイスで実行されるゲームを作成します。 ツールとしてのVisual Studio:さまざまなデバイスで迅速なゲーム開発とテストを行い、互換性とパフォーマンスを確保するためのVisual Studioを活用してください。

ゲームデザインの簡素化:基本的なゲームデザインの原則と「Ping」(Pongバリアント)のようなシンプルなゲームから始めて、レイアウトと必須ゲームメカニックに焦點を當(dāng)てています。

インタラクティブな要素:動的ゲームプレイにJavaScriptとCSSを使用してインタラクティブなゲームコントロールを組み込み、ボールやプレイヤーなどの要素がユーザー入力に効果的に応答するようにします。

AI統(tǒng)合:ゲームの対戦相手に基本的な人工知能を?qū)g裝し、より魅力的なシングルプレイヤーエクスペリエンスを可能にします。

クロスプラットフォームの互換性:包括的なテストのためにBrowserStackなどのツールを利用して、さまざまなブラウザやデバイスでゲームがうまく機(jī)能することをテストして確認(rèn)してください。

立ち上がって実行してください
  • Visual Studioですべての開発を行います。これにより、変更を加えるにつれてWebアプリを迅速に実行できます。フォローできるように、Visual Studioの最新バージョンを必ず用意してください。 Visual Studio 2013 Proを使用しましたが、Visual Studio 2013 Communityでコードを更新しました。また、MacまたはLinuxをお持ちの場合は、最近ではVisual Studioコードがクロスプラットフォームを利用できます。

    このアプリにはサーバーコードが不要なため、Visual Studioで新しい空のWebページプロジェクトを作成することから始めます。ファイルを選択した後、Visual C#オプションを選択して、Webサイトに空のC#テンプレートを使用します|新規(guī)| ASP.NET空のWebサイト。

    インデックスHTMLファイルには、jQuery、メインスタイルシート、メインJavaScriptファイルの3つのリソースのみが必要です。 Style.cssと呼ばれる空のCSSファイルをプロジェクトに追加し、Ping.jsと呼ばれる空のJavaScriptファイルを追加して、ページを読み込むときにエラーを回避します。

    また、ブラウザとデバイスを介してこの問題についてこのアプリ(またはその他)をテストすることを忘れないでください。私が書いたコードは、Chrome、Firefox、Microsoft Edgeなどの最新のブラウザと相互運用可能ですが、再確認(rèn)するのは常にベストプラクティスです。これで、無料の仮想マシンやhttp://www.browserstack.comなどの他のツールでそれを行うことができます。
    <span><span><!DOCTYPE html></span>
    </span><span><span><span><html</span>></span>
    </span><span><span><span><head</span>></span>
    </span>  <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
    </span><span><span><span></head</span>></span>
    </span><span><span><span><body</span>></span>
    </span><span><span><span></body</span>></span>
    </span><span><span><span></html</span>></span>
    </span>
    基本設(shè)計

    私が構(gòu)築しているゲームは、私がpingと呼ぶポンのバリアントです。 Pingには、Pongと本質(zhì)的に同じルールがありますが、どちらかのプレイヤーがボールを獲得したときにボールをつかみ、ボールを直接または上下に戻すことができます。多くの場合、ゲームを構(gòu)築する前にゲームをどのように見たいかを描くのが最善です。このゲームでは、私が見たい全體的なレイアウトを以下に示します。

    ゲームデザインレイアウトを開発したら、各要素をHTMLに追加してゲームを構(gòu)築するだけです。ただし、注意すべきことの1つは、スコアボードとコントロールをグループ化して、それらが一緒に座ることを確認(rèn)することです。したがって、以下に示すように、私が要素を追加したことがわかります。

    スタイルで遊ぶVisual StudioとASP.NETで1時間以內(nèi)にWebゲームを構(gòu)築する このページをロードする場合、スタイルが適用されていないため、何も表示されません。 HTMLのmain.cssファイルへのリンクをすでに設(shè)定しているため、すべてのCSSをその名前の新しいファイルに配置します。私が最初にすることは、畫面上にすべてを配置することです。ページの本體は畫面全體を取り上げる必要があるので、最初にそれを設(shè)定します:

    <span><span><span><div</span> id<span>="arena"</span>></span>
    </span>  <span><span><span><div</span> id<span>="score"</span>></span>
    </span>    <span><span><span><h1</span>></span>
    </span>      <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
    </span>     <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
    </span>   <span><span><span></h1</span>></span>
    </span> <span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
    </span>   <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
    </span>   <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="controls-right"</span>></span>
    </span>    <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
    </span>    <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
    第二に、アリーナ全體にアリーナの背景畫像(下の畫像を參照)を適用する必要があります。

    次に、スコアボードを配置します。これは、他の要素の上に、これが上部と中央に表示されたいと考えています。コマンドの位置:絶対に、私が望む場所に置いて左に置くことができます:50%は窓の上部に途中でそれを置きますが、スコアボード要素の左側(cè)から始まります。完全に中央にあることを確認(rèn)するために、Transformプロパティを使用し、Z-Indexプロパティは常に最上部にあることを保証します。

    また、テキストフォントをレトロテーマにしたいです。ほとんどの最新のブラウザで、自分のフォントを含めることができます。 Codeman38(Zone38.net)から適切なプレススタート2Pフォントが見つかりました。フォントをスコアボードに追加するには、新しいフォントフェイスを作成する必要があります:
    <span>body {
    </span>  <span>margin: 0px;
    </span>  <span>height: 100%;
    </span><span>}
    </span>
    <span><span><!DOCTYPE html></span>
    </span><span><span><span><html</span>></span>
    </span><span><span><span><head</span>></span>
    </span>  <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
    </span><span><span><span></head</span>></span>
    </span><span><span><span><body</span>></span>
    </span><span><span><span></body</span>></span>
    </span><span><span><span></html</span>></span>
    </span>

    今、スコアはH1タグにあるため、すべてのH1タグのフォントを設(shè)定できます。フォントが欠落している場合に備えて、バックアップオプションをいくつか提供します。

    <span><span><span><div</span> id<span>="arena"</span>></span>
    </span>  <span><span><span><div</span> id<span>="score"</span>></span>
    </span>    <span><span><span><h1</span>></span>
    </span>      <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
    </span>     <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
    </span>   <span><span><span></h1</span>></span>
    </span> <span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
    </span>   <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
    </span>   <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="controls-right"</span>></span>
    </span>    <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
    </span>    <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
    他の要素については、畫像のスプライトシートを使用します。スプライトシートには、ゲームに必要なすべての畫像が1つのファイルに含まれています(下の畫像を參照)。

    このシートに畫像がある要素には、スプライトクラスが割り當(dāng)てられます。次に、各要素について、バックグラウンドポジションを使用して、表示したいスプライトシートのどの部分を定義します。

    Visual StudioとASP.NETで1時間以內(nèi)にWebゲームを構(gòu)築する次に、スプ??ライトシートを使用するすべての要素にスプライトクラスを追加します。これを行うには、簡単にHTMLに戻る必要があります:

    <span>body {
    </span>  <span>margin: 0px;
    </span>  <span>height: 100%;
    </span><span>}
    </span>
    次に、各要素のシート上の各スプライトの位置を示す必要があります。繰り返しになりますが、バックグラウンドポジションを使用してこれを行います:

    <span><span>#arena</span> {
    </span>  <span>background-image: <span>url(arena.png)</span>;
    </span>  <span>background-size: 100% 100%;
    </span>  <span>margin: 0px;
    </span>  <span>width: 100%;
    </span>  <span>height: 100%;
    </span>  <span>overflow: hidden;
    </span><span>}
    </span>
    ポジション:プレーヤー、対戦相手、ボールの絶対プロパティは、JavaScriptを使用してそれらを動かしてくれます。今ページを見ると、コントロールが表示され、ボールには不要なピースが付いています。これは、スプライトサイズがデフォルトの128ピクセルよりも小さいため、これらを適切なサイズに調(diào)整します。ボールが1つしかないので、そのサイズを直接設(shè)定します。

    4つの制御要素(ユーザーがプレーヤーを移動するために押すことができるボタン)がありますので、それらのために特別なクラスを作るように努めることができます。また、マージンを追加して、周囲に少しスペースがあります。
    <span><span>#score</span> {
    </span>  <span>position: absolute;
    </span>  <span>z-index: 1000;
    </span>  <span>left: 50%;
    </span>  <span>top: 5%;
    </span>  <span>transform: translate(-50%, 0%);
    </span><span>}
    </span>
    このクラスを追加した後、ゲームははるかに良く見えるコントロールを持っています:

    <span><span>@font-face</span> {
    </span>  <span>font-family: 'PressStart2P';
    </span>  <span>src: <span>url('PressStart2P.woff')</span>;
    </span><span>}
    </span>
    私がする必要がある最後のことは、ページがモバイルデバイスで実行されているときにユーザーの親指であるようにコントロールを配置することです。底の角に貼り付けます:

    このデザインの良い點の1つは、すべてが相対的な位置で設(shè)定されていることです。これは、ゲームを良く見せながら、畫面がさまざまなサイズになる可能性があることを意味します。
    <span>h1 {
    </span>  <span>font-family: 'PressStart2P', 'Georgia', serif;
    </span><span>}
    </span>
    バウンスボールに従ってください

    今、ボールを動かします。 JavaScriptコードについては、CSSで行ったのと同じように、HTMLのPing.jsというファイルを參照しました。この名前の新しいファイルにこのコードを追加します。ボールと各プレイヤーのオブジェクトを作成しますが、オブジェクトには工場パターンを使用します。
    <span><span>.sprite</span> {
    </span>  <span>background-image: <span>url("sprites.png")</span>;
    </span>  <span>width: 128px;
    </span>  <span>height: 128px;
    </span><span>}
    </span>
    これは単純な概念です。ボール機(jī)能は、それを呼ぶときに新しいボールを作成します。新しいキーワードを使用する必要はありません。このパターンは、利用可能なオブジェクトプロパティを明確にすることにより、この変數(shù)の周りの混亂の一部を減らします。そして、私はこのゲームを作るのに1時間しかないので、混亂する概念を最小限に抑える必要があります。

    このパターンの構(gòu)造、シンプルなボールクラスを作成します:

    <span><span><span><div</span> id<span>="player"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span><span><span><span><div</span> id<span>="opponent"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span><span><span><span><div</span> id<span>="ball"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span><span><span><span><div</span> id<span>="controls-left"</span>></span>
    </span>  <span><span><span><div</span> id<span>="up"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="down"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span><span><span><span><div</span> id<span>="controls-right"</span>></span>
    </span>  <span><span><span><div</span> id<span>="left"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="right"</span> class<span>="sprite"</span>></span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>

    新しいボールを作成するには、この関數(shù)を定義しただけと呼びます。

    <span><span><!DOCTYPE html></span>
    </span><span><span><span><html</span>></span>
    </span><span><span><span><head</span>></span>
    </span>  <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
    </span><span><span><span></head</span>></span>
    </span><span><span><span><body</span>></span>
    </span><span><span><span></body</span>></span>
    </span><span><span><span></html</span>></span>
    </span>

    今、私はボールを動かして畫面の周りを跳ね返したいです。まず、ボールのアニメーションを作成するには、ある程度の間隔で更新関數(shù)を呼び出す必要があります。最新のブラウザは、RequestAnimationFrameと呼ばれるこの目的のための機(jī)能を提供します。これは引數(shù)として関數(shù)を取り、次にアニメーションサイクルを?qū)g行したときにパスイン関數(shù)を呼び出します。これにより、ブラウザの更新の準(zhǔn)備ができたら、ボールがスムーズなステップで動き回ることができます。パスイン関數(shù)を呼び出すと、ページが読み込まれてから數(shù)秒で時間が與えられます。これは、アニメーションが時間の経過とともに一貫していることを保証するために重要です。ゲームでは、RequestAnimationFrameの使用が次のように表示されます。

    <span><span><span><div</span> id<span>="arena"</span>></span>
    </span>  <span><span><span><div</span> id<span>="score"</span>></span>
    </span>    <span><span><span><h1</span>></span>
    </span>      <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
    </span>     <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
    </span>   <span><span><span></h1</span>></span>
    </span> <span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
    </span>   <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
    </span>   <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="controls-right"</span>></span>
    </span>    <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
    </span>    <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
    ボールが更新が終了したため、requestAnimationFrameが関數(shù)で再び呼び出されることに注意してください。これにより、継続的なアニメーションが保証されます。

    このコードは機(jī)能しますが、ページが完全にロードされる前にスクリプトが実行され始める問題がある場合があります。これを避けるために、jqueryを使用してページが読み込まれたときにコードを開始します:

    <span>body {
    </span>  <span>margin: 0px;
    </span>  <span>height: 100%;
    </span><span>}
    </span>
    ボールの速度(速度)と最後の更新以來の時間を知っているので、ボールを前方に動かすためにいくつかの簡単な物理學(xué)を行うことができます:

    <span><span>#arena</span> {
    </span>  <span>background-image: <span>url(arena.png)</span>;
    </span>  <span>background-size: 100% 100%;
    </span>  <span>margin: 0px;
    </span>  <span>width: 100%;
    </span>  <span>height: 100%;
    </span>  <span>overflow: hidden;
    </span><span>}
    </span>
    コードを?qū)g行してみると、ボールが角度で畫面から外れて移動するのがわかります。これは一瞬楽しいですが、ボールが畫面の端から外れると、楽しいことが止まります。したがって、次のステップは、図7に実裝されているように、畫面の端からボールを??跳ね返すことです。このコードを追加し、アプリを?qū)g行すると、継続的にバウンスするボールが表示されます。

    可動プレーヤー

    今度は、プレイヤーオブジェクトを作成する時が來ました。プレーヤークラスを肉付けする最初のステップは、移動関數(shù)をプレイヤーの位置を変更させることです。サイド変數(shù)は、プレーヤーが居住する裁判所のどの側(cè)面を示し、プレーヤーを水平に配置する方法を指示します。移動関數(shù)に渡されたy値は、プレーヤーがどれだけ上または下に移動するかです:

    その後、プレイヤーの動きをレイアウトでき、プレーヤーのスプライトがウィンドウの上部または下部に到達(dá)した場合、動きを止めることができます。

    <span><span>#score</span> {
    </span>  <span>position: absolute;
    </span>  <span>z-index: 1000;
    </span>  <span>left: 50%;
    </span>  <span>top: 5%;
    </span>  <span>transform: translate(-50%, 0%);
    </span><span>}
    </span>
    2人のプレイヤーを作成し、畫面の適切な側(cè)面に移動できるようにすることができます。

    キーボード入力
    <span><span>@font-face</span> {
    </span>  <span>font-family: 'PressStart2P';
    </span>  <span>src: <span>url('PressStart2P.woff')</span>;
    </span><span>}
    </span>

    理論的には、プレーヤーを動かすことができますが、指示なしでは動きません。左側(cè)のプレーヤーにいくつかのコントロールを追加します。そのプレーヤーを制御する2つの方法が必要です。キーボード(PCS)を使用して、コントロール(タブレットと電話)をタップします。

    >
    <span>h1 {
    </span>  <span>font-family: 'PressStart2P', 'Georgia', serif;
    </span><span>}
    </span>
    さまざまなプラットフォームでのタッチ入力とマウス入力間の一貫性を確保するために、優(yōu)れた統(tǒng)合フレームワークHand.js(handjs.codeplex.com)を使用します。まず、ヘッドセクションのHTMLにスクリプトを追加します:

    その後、キーボードキーAとzを押すとき、またはコントロールをタップするときに、hand.jsとjqueryを使用してプレーヤーを制御します。
    <span><span><!DOCTYPE html></span>
    </span><span><span><span><html</span>></span>
    </span><span><span><span><head</span>></span>
    </span>  <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
    </span><span><span><span></head</span>></span>
    </span><span><span><span><body</span>></span>
    </span><span><span><span></body</span>></span>
    </span><span><span><span></html</span>></span>
    </span>

    ボールをキャッチ

    ボールが跳ね返ると、プレイヤーにそれをキャッチさせたいと思います。それが捕まると、ボールには所有者がいて、その所有者の動きに従います。ボールの移動方法に機(jī)能を追加し、ボールが続く所有者を可能にします。

    <span><span><span><div</span> id<span>="arena"</span>></span>
    </span>  <span><span><span><div</span> id<span>="score"</span>></span>
    </span>    <span><span><span><h1</span>></span>
    </span>      <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
    </span>     <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
    </span>   <span><span><span></h1</span>></span>
    </span> <span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
    </span>   <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
    </span>   <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="controls-right"</span>></span>
    </span>    <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
    </span>    <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
    現(xiàn)在、プレーヤーオブジェクトの位置を取得する方法はないので、プレイヤーオブジェクトにgetpositionとgetsideアクセサを追加します:

    <span>body {
    </span>  <span>margin: 0px;
    </span>  <span>height: 100%;
    </span><span>}
    </span>
    さて、ボールに所有者がいる場合、その所有者に続きます。しかし、どうすれば所有者を決定できますか?誰かがボールをキャッチしなければなりません。プレーヤーのスプライトの1つがボールに觸れる時期を判斷しましょう。それが起こったら、私はそのプレーヤーにボールの所有者を設(shè)定します。

    今すぐゲームをプレイしようとすると、畫面の上部からボールが跳ね返ると、プレーヤーを動かしてキャッチできます。さて、どのように投げますか?それが右側(cè)のコントロールの目的です。ボールを想像します。プレーヤーに「火」関數(shù)とAIMプロパティを追加しましょう。
    <span><span>#arena</span> {
    </span>  <span>background-image: <span>url(arena.png)</span>;
    </span>  <span>background-size: 100% 100%;
    </span>  <span>margin: 0px;
    </span>  <span>width: 100%;
    </span>  <span>height: 100%;
    </span>  <span>overflow: hidden;
    </span><span>}
    </span>

    キーボード関數(shù)を拡張して、プレーヤーの目的と火災(zāi)関數(shù)を設(shè)定できます。照準(zhǔn)はわずかに異なって機(jī)能します。照準(zhǔn)キーがリリースされると、目的は簡単に戻ります。
    <span><span>#score</span> {
    </span>  <span>position: absolute;
    </span>  <span>z-index: 1000;
    </span>  <span>left: 50%;
    </span>  <span>top: 5%;
    </span>  <span>transform: translate(-50%, 0%);
    </span><span>}
    </span>

    最後の追加は、すべてのコントロールのタッチサポートです。適切な変更をプレーヤーの目的に変更します。また、畫面上のどこにでも觸れるとボールが発射されます。

    <span><span>@font-face</span> {
    </span>  <span>font-family: 'PressStart2P';
    </span>  <span>src: <span>url('PressStart2P.woff')</span>;
    </span><span>}
    </span>
    keep score

    ボールがプレーヤーを通過したら、スコアを変更して、そのプレーヤーにボールを與えたいと思います。カスタムイベントを使用して、既存のオブジェクトのいずれかからスコアリングを分離できるようにします。更新機(jī)能が長くなっているので、CheckScoredと呼ばれる新しいプライベート関數(shù)を追加します:<span>h1 { </span> <span>font-family: 'PressStart2P', 'Georgia', serif; </span><span>} </span>

    以下のコードは、これらのイベントに反応して、スコアを更新してボールを引き渡します。このコードをJavaScriptドキュメントの下部に追加します。

    ボールが相手を通り過ぎたとき(相手が動かないので、それほど難しくありません)、スコアが上がり、ボールが相手に手渡されます。ただし、対戦相手はボールを保持するだけです。

    <span><span>.sprite</span> {
    </span>  <span>background-image: <span>url("sprites.png")</span>;
    </span>  <span>width: 128px;
    </span>  <span>height: 128px;
    </span><span>}
    </span>
    スマートを取得

    あなたはほとんどゲームを持っています。あなたが一緒に遊ぶ人がいたなら。最後のステップとして、単純なAIで相手を制御する方法を示します。対戦相手は、動きながらボールと並行して維持しようとします。相手がボールをキャッチすると、ランダムに動き、ランダムな方向にボールを発射します。 AIをもう少し人間に感じさせるために、完了したすべてに遅れを追加します。これはあまりインテリジェントなAIではありません。しかし、それはゲームをプレイするものになるでしょう。

    この種のシステムを設(shè)計するとき、州で考えるのは良いことです。対戦相手AIには、次の3つの狀態(tài)があります。私は、より人間の要素を追加するための次のアクションの間の狀態(tài)になります。 AIオブジェクトのまさにそれから始めてください:

    <span><span><!DOCTYPE html></span>
    </span><span><span><span><html</span>></span>
    </span><span><span><span><head</span>></span>
    </span>  <span><span><span><script</span> src<span>="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><script</span> src<span>="ping.js"</span>></span><span><span></script</span>></span>
    </span>  <span><span><span><link</span> rel<span>="stylesheet"</span> href<span>="style.css"</span>></span><span><span></script</span>></span>
    </span><span><span><span></head</span>></span>
    </span><span><span><span><body</span>></span>
    </span><span><span><span></body</span>></span>
    </span><span><span><span></html</span>></span>
    </span>

    AIの狀態(tài)によっては、別のアクションを?qū)g行する必要があります。ボールと同じように、私はRequestAnimationFrameで呼び出すことができるアップデート機(jī)能を作成して、その狀態(tài)に従ってAI法を持つことができます。

    <span><span><span><div</span> id<span>="arena"</span>></span>
    </span>  <span><span><span><div</span> id<span>="score"</span>></span>
    </span>    <span><span><span><h1</span>></span>
    </span>      <span><span><span><span</span> id<span>="playerScore"</span>></span>0<span><span></span</span>></span>
    </span>     <span><span><span><span</span> id<span>="opponentScore"</span>></span>0<span><span></span</span>></span>
    </span>   <span><span><span></h1</span>></span>
    </span> <span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="player"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="opponent"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="ball"</span>></span><span><span></div</span>></span>
    </span> <span><span><span><div</span> id<span>="controls-left"</span>></span>
    </span>   <span><span><span><div</span> id<span>="up"</span>></span><span><span></div</span>></span>
    </span>   <span><span><span><div</span> id<span>="down"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span>  <span><span><span><div</span> id<span>="controls-right"</span>></span>
    </span>    <span><span><span><div</span> id<span>="left"</span>></span><span><span></div</span>></span>
    </span>    <span><span><span><div</span> id<span>="right"</span>></span><span><span></div</span>></span>
    </span>  <span><span><span></div</span>></span>
    </span><span><span><span></div</span>></span>
    </span>
    次の狀態(tài)は簡単です。対戦相手はボールの垂直方向に移動し、AIは待機(jī)狀態(tài)に移行して、いくつかの反応時間の遅い時間を注入します。以下のコードは、これらの2つの狀態(tài)を示しています:

    <span>body {
    </span>  <span>margin: 0px;
    </span>  <span>height: 100%;
    </span><span>}
    </span>
    AIは、ボールをたどり、一瞬待たなければならないことを交互にします。次に、ゲーム全體の更新関數(shù)にコードを追加します:

    <span><span>#arena</span> {
    </span>  <span>background-image: <span>url(arena.png)</span>;
    </span>  <span>background-size: 100% 100%;
    </span>  <span>margin: 0px;
    </span>  <span>width: 100%;
    </span>  <span>height: 100%;
    </span>  <span>overflow: hidden;
    </span><span>}
    </span>
    ゲームを?qū)g行すると、対戦相手がボールの動きに従っているのがわかります。30行未満のコードで悪いAIはありません。もちろん、相手がボールをキャッチした場合、何もしません。したがって、時間の最後のトリックについては、照準(zhǔn)狀態(tài)のアクションを処理する時が來ました。

    AIにランダムに數(shù)回動かせてから、ランダムな方向にボールを発射してほしい。まさにそれを行うプライベート関數(shù)を追加しましょう。 AimandFire関數(shù)をAiming Case Statementに追加すると、完全に機(jī)能的なAIが再生されるようになります。

    ラッピング

    <span><span>#score</span> {
    </span>  <span>position: absolute;
    </span>  <span>z-index: 1000;
    </span>  <span>left: 50%;
    </span>  <span>top: 5%;
    </span>  <span>transform: translate(-50%, 0%);
    </span><span>}
    </span>
    今では、PC、スマートフォン、タブレットで機(jī)能する本格的なWebゲームがあります。このゲームには多くの改善があります。たとえば、スマートフォンではポートレートモードでは少し厄介に見えます。そのため、適切に動作するために、攜帯電話をランドスケープで保持していることを確認(rèn)する必要があります。これは、Webおよびそれ以降のゲーム開発の可能性のほんの少しのデモンストレーションです。 この記事をレビューしてくれた技術(shù)専門家のMohamed Ameen Ibrahimに感謝します。

    JavaScriptを使用したより実踐的な

    この記事は、Microsoft Edge Browserや新しいEdgeHTMLレンダリングエンジンなどの実用的なJavaScript學(xué)習(xí)、オープンソースプロジェクト、および相互運用性のベストプラクティスに関するMicrosoft Tech EvangelistsのWeb開発シリーズの一部です。

    dev.modern.ieの無料ツールを備えたMicrosoft Edge(Windows 10用のデフォルトのブラウザ)を含むブラウザやデバイス全體でテストすることをお勧めします。

    時代遅れのライブラリ、レイアウトの問題、アクセシビリティをスキャンしてください Mac、Linux、およびWindows

    に仮想マシンを使用します

    獨自のデバイスでMicrosoft Edgeをリモートテスト

    Githubの

    コーディングラボ:クロスブラウザーテストとベストプラクティス

    マイクロソフトエッジとエンジニアおよびエバンジェリストのWebプラットフォームでの詳細(xì)な技術(shù)學(xué)習(xí):

    • Microsoft Edge Web Summit 2015(新しいブラウザ、新しいサポートされているWebプラットフォーム標(biāo)準(zhǔn)、およびJavaScriptコミュニティのゲストスピーカーに期待すること)
    • woah、Mac&Linuxでエッジとieをテストできます! (レイ?バンゴから)
    • webを壊さずにjavascriptを前進(jìn)させます(クリスチャンハイルマンから)
    • ウェブを機(jī)能させるエッジレンダリングエンジン(ジェイコブロッシから)
    • Webglを使用した3Dレンダリング(Vorlon.jsおよびBabylonjsプロジェクトを含むDavid Catuheから)
    • ホストされたWebアプリとWebプラットフォームのイノベーション(Manifold.jsプロジェクトを含むKevin HillとKiril Seksenovから)
    Webプラットフォーム向けの無料のクロスプラットフォームツールとリソース:

    Linux、MacOS、およびWindows
      のビジュアルスタジオコード Node.jsとAzure
    • の無料トライアルを使用した
    • コード
    • Visual StudioとASP.NETでWebゲームの構(gòu)築に関するよくある質(zhì)問(FAQ) Visual StudioとASP.NETを使用してマルチプレイヤーゲームを作成するにはどうすればよいですか?
    Visual StudioとASP.NETを使用してマルチプレイヤーゲームを作成するには、いくつかのステップが含まれます。まず、ルール、プレーヤーの対話、ゲームの結(jié)果を含むゲームロジックを設(shè)計する必要があります。次に、HTML、CSS、およびJavaScriptを使用してゲームのユーザーインターフェイスを作成する必要があります。 ASP.NETのSignalRライブラリを使用して、サーバーとクライアント間のリアルタイム通信を処理できます。最後に、C#とASP.NETを使用して、サーバー側(cè)にゲームロジックを?qū)g裝する必要があります。これには、プレーヤーの接続の取り扱い、ゲーム狀態(tài)の管理、および接続されたすべてのクライアントへの更新のブロードキャストが含まれます。 Studioには、Model-View-Controller(MVC)パターンを使用して、ゲームロジックをユーザーインターフェイスから分離し、データアクセスにエンティティフレームワークを使用し、単體テストを使用してコードの正確性を確保することが含まれます。さらに、Visual Studioに組み込みのデバッグツールを使用して、コードのバグを識別および修正する必要があります。 Visual StudioとASP.NETを使用してモバイルゲームを開発できます。ただし、ASP.NETは主にWeb開発フレームワークであることに注意することが重要なため、追加のツールとライブラリを使用してモバイルゲームを作成する必要があります。 Visual Studioに含まれるクロスプラットフォーム開発ツールであるXamarinは、C#でゲームコードを作成してから、Android、iOS、およびWindows Phone用にコンパイルできます。

    Visual Studioでのゲームのパフォーマンスを最適化するにはどうすればよいですか?

    ??

    Visual Studioでゲームのパフォーマンスを最適化する方法はいくつかあります。まず、ビルトインプロファイリングツールを使用して、コード內(nèi)のボトルネックを識別する必要があります。次に、コードの最適化、データ構(gòu)造の最適化、アルゴリズムの最適化などの手法を使用して、コードのパフォーマンスを改善できます。さらに、最新のグラフィックカードのハードウェアアクセラレーション機(jī)能を使用して、ゲームのレンダリングパフォーマンスを向上させる必要があります。 Visual Studioのゲームのサウンドエフェクトと音楽には、System.media namespaceでSoundPlayerクラスを使用することが含まれます。 Playメソッドを使用して、サウンドエフェクトや音楽トラックを再生し、STOPメソッドを使用してサウンドの再生を停止できます。また、PlayLoopingメソッドを使用して、継続的にサウンドを再生することもできます。 SoundPlayerクラスはWAVファイルをサポートするため、Sound EffectsとMusicトラックをこの形式に変換する必要があります。 Visual Studioで開発されるには、いくつかのステップが含まれます。まず、実行可能ファイルを作成するには、リリースモードでゲームを構(gòu)築する必要があります。次に、InstallShieldなどのツールを使用してゲーム用のインストーラーを作成する必要があります。最後に、自分のウェブサイト、オンラインゲームストア、アプリストアなど、さまざまなチャネルを通じてゲームを配布できます。 > Visual StudioとASP.NETを使用して3Dゲームを開発することは可能ですが、これらのツールで最も一般的なユースケースではありません。 ASP.NETは主にWeb開発フレームワークであり、Visual Studioは汎用開発環(huán)境です。 3Dゲームの開発に興味がある場合は、3Dゲーム開発に向けてより高度なツールと機(jī)能を提供するUnityやUnreal Engineなどの専用ゲーム開発エンジンの使用を検討することをお勧めします。 -Visual Studioでの私のゲームへの言語サポート?

    Visual Studioでゲームに多言語サポートを追加するには、ASP.NETのローカリゼーション機(jī)能を使用することが含まれます。リソースファイルを使用して各言語のテキストを保存し、ResourceManagerクラスを使用して、ユーザーの言語設(shè)定に基づいて適切なテキストを取得できます。 CultureInfoクラスを使用して、數(shù)値形式、日付形式、その他のロケール固有の設(shè)定の違いを処理することもできます。 Visual Studioには、組み込みのテストツールの使用が含まれます。ユニットテストを使用して、ゲームの個々のコンポーネント、統(tǒng)合テストをテストしてこれらのコンポーネントがどのように連攜するか、UIテストでユーザーインターフェイスをテストできます。 Visual Studioのデバッグツールを使用して、コードのバグを識別および修正することもできます。

以上がVisual StudioとASP.NETで1時間以內(nèi)にWebゲームを構(gòu)築するの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java vs. JavaScript:混亂を解消します Java vs. JavaScript:混亂を解消します Jun 20, 2025 am 12:27 AM

JavaとJavaScriptは異なるプログラミング言語であり、それぞれ異なるアプリケーションシナリオに適しています。 Javaは大規(guī)模なエンタープライズおよびモバイルアプリケーション開発に使用されますが、JavaScriptは主にWebページ開発に使用されます。

JavaScriptコメント:短い説明 JavaScriptコメント:短い説明 Jun 19, 2025 am 12:40 AM

JavaScriptcommentsEareEssentialential-formaining、およびGuidingCodeexecution.1)single-linecommentseared forquickexplanations.2)多LinecommentsexplaincomplexlogiCorprovidededocumentation.3)clarifyspartsofcode.bestpractic

JSで日付と時間を操作する方法は? JSで日付と時間を操作する方法は? Jul 01, 2025 am 01:27 AM

JavaScriptで日付と時間を処理する場合は、次の點に注意する必要があります。1。日付オブジェクトを作成するには多くの方法があります。 ISO形式の文字列を使用して、互換性を確保することをお勧めします。 2。時間情報を取得および設(shè)定して、メソッドを設(shè)定でき、月は0から始まることに注意してください。 3.手動でのフォーマット日付には文字列が必要であり、サードパーティライブラリも使用できます。 4.ルクソンなどのタイムゾーンをサポートするライブラリを使用することをお勧めします。これらの重要なポイントを習(xí)得すると、一般的な間違いを効果的に回避できます。

なぜの下部にタグを配置する必要があるのですか? なぜの下部にタグを配置する必要があるのですか? Jul 02, 2025 am 01:22 AM

PLACSTHETTHETTHE BOTTOMOFABLOGPOSTORWEBPAGESERVESPAGESPORCICALPURPOSESESFORSEO、userexperience、andDesign.1.IthelpswithiobyAllowingseNStoAccessKeysword-relevanttagwithtagwithtagwithtagwithemaincontent.2.iTimrovesexperiencebyepingepintepepinedeeping

JavaScript vs. Java:開発者向けの包括的な比較 JavaScript vs. Java:開発者向けの包括的な比較 Jun 20, 2025 am 12:21 AM

javascriptispreferredforwebdevelopment、whilejavaisbetterforlge-scalebackendsystemsandroidapps.1)javascriptexcelsininintingtivewebexperiences withitsdynAmicnature anddommanipulation.2)javaofferstruntypyping-dobject-reientedpeatures

DOMでのイベントの泡立ちとキャプチャとは何ですか? DOMでのイベントの泡立ちとキャプチャとは何ですか? Jul 02, 2025 am 01:19 AM

イベントキャプチャとバブルは、DOMのイベント伝播の2つの段階です。キャプチャは最上層からターゲット要素までであり、バブルはターゲット要素から上層までです。 1.イベントキャプチャは、AddEventListenerのUseCaptureパラメーターをTrueに設(shè)定することにより実裝されます。 2。イベントバブルはデフォルトの動作であり、UseCaptureはfalseに設(shè)定されているか、省略されます。 3。イベントの伝播を使用して、イベントの伝播を防ぐことができます。 4.イベントバブルは、動的なコンテンツ処理効率を改善するためにイベント委任をサポートします。 5.キャプチャを使用して、ロギングやエラー処理など、事前にイベントを傍受できます。これらの2つのフェーズを理解することは、タイミングとJavaScriptがユーザー操作にどのように反応するかを正確に制御するのに役立ちます。

JavaScript:効率的なコーディングのためのデータ型の調(diào)査 JavaScript:効率的なコーディングのためのデータ型の調(diào)査 Jun 20, 2025 am 12:46 AM

javascripthassevenfundamentaldatypes:number、string、boolean、undefined、null、object、andsymbol.1)numberseadouble-precisionformat、有用であるため、有用性の高いものであるため、but-for-loating-pointarithmetic.2)ストリングリムムット、使用率が有用であること

JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? JavaScriptアプリケーションのペイロードサイズをどのように削減できますか? Jun 26, 2025 am 12:54 AM

JavaScriptアプリケーションがゆっくりとロードされ、パフォーマンスが低い場合、問題はペイロードが大きすぎることです。ソリューションには、次のものが含まれます。1。コード分割(コードスプリッティング)を使用し、React.lazy()またはビルドツールを介して大きなバンドルを複數(shù)の小さなファイルに分割し、最初のダウンロードを減らすために必要に応じてロードします。 2。未使用のコード(Treeshaking)を削除し、ES6モジュールメカニズムを使用して「デッドコード」をクリアして、導(dǎo)入されたライブラリがこの機(jī)能をサポートしていることを確認(rèn)します。 3.リソースファイルを圧縮してマージし、GZIP/BrotliとTerserがJSを圧縮できるようにし、ファイルを合理的にマージし、靜的リソースを最適化します。 4.頑丈な依存関係を交換し、day.jsやフェッチなどの軽量ライブラリを選択します

See all articles