スネークゲームのウェブ版を実装するためのJavaScript

スネークゲームのウェブ版を実装するためのJavaScript

この記事では、ウェブページのスネークゲームを実装するためのJavaScriptの具体的なコードを参考までに共有します。具体的な内容は次のとおりです。

<!DOCTYPE html>
<html>
<head><title>ヘビ</title>
</head>
<本文>
<キャンバスid="キャンバス" 幅="400" 高さ="400"></キャンバス>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.js"></script>
<スクリプト>
var canv = document.getElementById("キャンバス");
var ctx = canv.getContext("2d");
var スコア = 0;
//ブロックコンストラクタを定義する var Block = function (col, row, size)
{
  列は、
  行番号
  this.size=サイズ;
    };
//Block 関数のプロトタイプ メソッド draw を定義します。
Block.prototype.draw = 関数()
{
  ctx.fillRect(この列*このサイズ、この行*このサイズ、このサイズ、このサイズ)
   }
//オブジェクトsnakeを定義するvar snake = {
  体:[
    新しいブロック(20,20,10)
    新しいブロック(20,21,10)
    新しいブロック(20,22,10)
   ]、
  方向:"右",
  };

// ヘビを描画する関数を定義する snake.draw=function()
{
   (var i=0;i<this.body.length;i++) の場合
  {
     this.body[i].draw();
        }
   };

snake.move = 関数()
         {
          var head = this.body[0];

if(snake.direction=="right")
     {    
     var newhead = 新しいブロック (head.col + 1、head.row、head.size)
            }
  
  if(snake.direction == "左")
   
     { 
     var newhead = 新しいブロック(head.col-1、head.row、head.size); 
           }  
 if(snake.direction=="上")
     {
     var newhead = 新しいブロック (head.col、head.row-1、head.size)
           }
    if(snake.direction=="down")
     {
     var newhead = 新しいブロック (head.col、head.row+1、head.size)
           } 
          新しいヘッド列<0 || 新しいヘッド列>39 の場合
          {
           間隔をクリアします(間隔ID);
           ゲームオーバー();
          }
          
          新しいヘッド行が<0 || 新しいヘッド行が>39の場合
          {
           間隔をクリアします(間隔ID);
           ゲームオーバー();
          }
 (var i=0;i<this.body.length;i++) の場合
{
    this.body[i].col==newhead.col &&this.body[i].row==newhead.row の場合
  {
    間隔をクリアします(間隔ID);
    ゲームオーバー();
      }
          }         
     this.body.unshift(新しいヘッド);
     newhead.col==apple.posX &&newhead.row==apple.posY の場合
{  
    スコア=スコア+100;
    (真)の間
  {
     var checkApple =false;
     apple.posX=Math.floor(Math.random()*40);
     apple.posY=Math.floor(Math.random()*40);
     (var i=0; i<this.body.length; i++) の場合
   {
     this.body[i].col==apple.posX &&this.body[i].row==apple.posY の場合
          checkApple=true;
                        }
       if(!checkApple)
       壊す;
      }  
  }
それ以外{
     this.body.pop();
        }         
         };
//リンゴオブジェクトを作成する var apple={
    posX:Math.floor(Math.random()*40)、
    posY:Math.floor(Math.random()*40)、
    サイズR:5
}
//リンゴを描く function apple.draw=function()
{
  ctx.fillStyle="緑";
  ctx.beginPath();
  ctx.arc(this.posX*10+5,this.posY*10+5,5,0,Math.PI*2,false);
  ctx.fill();
  ctx.fillStyle="黒";
     };
//終了 var gameover = function()
{
  ctx.font="60px Comic Sans MS";
  ctx.textAlign="中央";
  ctx.textBaseline="中央";
  ctx.fillText("ゲームオーバー!",200,200)
    };
// タイミング関数 var intervalId = setInterval (function ()
{
   ctx.clearRect(0,0,400,400);
   ctx.font="20px Arial";
   ctx.fillText("スコア:"+score,5,15);
   スネークを描画します。
   スネークを移動します。
   apple.draw();
   ctx.strokeRect(0,0,400,400);
    },200);
//スネークキーコントロール $("body").keydown(function(event)
{
   console.log(イベント.キーコード);
    if(event.keyCode==37 &&snake.direction!="right")
     {
    snake.direction="左";
         }
    if(event.keyCode==38 &&snake.direction!="down")
     {
    snake.direction="上";
        }
    if(event.keyCode==39 &&snake.direction!="left")
     {
     snake.direction="右";
         }
     if(event.keyCode==40 &&snake.direction!="上")
     {
     snake.direction="下";
         }
              }
);
</スクリプト>
</本文>
</html> 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JSはスネークゲームを実装する
  • スネークゲームのアイデアを実現するためのJavaScript
  • 古典的なスネークゲームの JavaScript 実装
  • jsを使用して簡単なスネークゲームを書く
  • JavaScript スネーク実装コード
  • JavaScript でスネーク ゲームを実装する
  • シンプルなスネークゲームを実現するネイティブjs
  • ネイティブ JS でスネーク ゲームを書く
  • コメント付きのスネークゲームを実装する js
  • JavaScript の絶妙なスネーク実装プロセス

<<:  MySQL 30軍事ルールの詳細な説明

>>:  Raspberry Pi 4 に Ubuntu 19.10 をインストールするための詳細なチュートリアル

推薦する

ウェブデザインと制作の一般的な原則をまとめる

<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...

リアルタイムクロックを実装するネイティブJS

ネイティブ JS で実装したリアルタイム クロック エフェクトを共有します。エフェクトは以下のとおり...

opensslを使用して無料の証明書を生成する方法

1: openssl とは何ですか? その機能は何ですか?適用シナリオは何ですか? Baidu 百科...

Ubuntu システムログで /var/log/messages を設定する方法

1. 問題の説明今日、システム ログ ファイルを確認する必要がありますが、/var/log/mess...

MySQL の自動増分主キーが使い果たされた場合の対処方法

面接では、次のようなシナリオを経験する必要があります。インタビュアー: 「MySQL を使用したこと...

ドメイン名を介してプロジェクトにアクセスするnginx + tomcatの例

ドメイン名を使ってプロジェクトにアクセスする方法が気になったのですが、自分でドメイン名を取得するのは...

Vue での親子コンポーネント通信と、sync を使用して親子コンポーネント データを同期する

目次序文子コンポーネントは親コンポーネントにデータを渡す1. 親コンポーネントから子コンポーネントに...

MySQL 学習ノート: データ エンジン

現在のデータベースでサポートされているエンジンを表示します エンジンを表示 +-----------...

MySQL 8.0.12 簡単インストールチュートリアル

この記事では、MySQL 8.0.12のインストールチュートリアルを参考までに紹介します。具体的な内...

thead、tfoot、tbodyを使用して表を作成します

これらの 3 つのタグを間違った方法で使用して、タイトルを表に沿わせたり、tbody の高さを固定し...

JavaScriptコールバック関数の詳細な理解

目次序文クイックレビュー: JavaScript 関数関数とは何ですか?関数を宣言する関数の呼び出し...

vue+rem カスタムカルーセル効果

vue+remを使用したカスタムカルーセルチャートの実装は参考までに。具体的な内容は以下のとおりです...

高並列処理 nginx サーバー向け Linux カーネル最適化構成の説明

デフォルトの Linux カーネル パラメータは最も一般的なシナリオに基づいており、高い同時アクセス...

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

postcss-pxtorem モバイル適応の実装

コマンドを実行してプラグインpostcss-pxtoremをインストールします npm インストール...