スネークゲームのウェブ版を実装するための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 をインストールするための詳細なチュートリアル

推薦する

ウェブページの読みやすさを向上させるいくつかの方法

1. 対照的な色を使用します。ここでのコントラストとは、テキストの色と背景色のコントラストを指します...

MySQL パーティション関数の詳細な説明と例の分析

まず、データベース パーティショニングとは何でしょうか?以前、MySQL のテーブル パーティショニ...

Facebook によるインターネット サービスのほぼ完璧な再設計

<br />出典: http://www.a-xuan.cn/?p=197 先ほどFac...

Nginx 構成の実装 HTTPS セキュリティ認証

1. HttpとHttpsの違いHTTP: インターネットで最も広く使用されているネットワーク プロ...

CSSは親コンテナのdivをimg画像で埋め、コンテナのサイズに適応します。

ページに複数の画像を導入すると、画像のサイズがばらつくことがあります。しかし、それらを一貫したサイズ...

Jenkinsはマイクロサービスをパッケージ化してDockerイメージを構築し、実行します。

目次環境の準備始める1. GitLabリモートリポジトリがマイクロサービスプロジェクトを作成する2....

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決します

Node.js はクライアントリクエストデータ内の中国語文字化けの問題を解決しますコード例: var...

MySQL サーバー ログイン エラー ERROR 1820 (HY000) の解決方法

障害サイト: MySQL サーバーにログインし、どのコマンドを実行してもこのエラーが発生します my...

MySQLで重複行を削除する方法

SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...

Vue サーバーに js 構成ファイルをインポートする方法

目次背景成し遂げるvue-cli2.0での設定方法の補足要約する背景プロジェクトにはローカル構成ファ...

Chrome 4.0 は GreaseMonkey スクリプトをサポートします

GreaseMokey (中国語では Grease Monkey Script と呼んでいます) は...

Dockerを使用してOracle_11gをインストールする方法

DockerでOracle_11gをインストールする1. oracle_11gイメージを取得する d...

インターフェーステストプラットフォームを構築するためのDjango+Vue+Dockerの詳細な説明

1. 冒頭の2つの単語みなさんこんにちは。私の名前はLin Zonglinです。私はテストエンジニア...

コードブロックのハイライトをコピーして表示できる js プラグイン highlight.js + clipboard.js 統合

主に2つの側面から: 1. ハイライト/改行2. コードのコピーボタンこれら両方には既製のプラグイン...

CSS 表示テーブルの適応的な高さと幅の問題の解決策

定義と使用法display プロパティは、要素が生成するボックスのタイプを指定します。例示するこの属...