ساخت بازی مار در NOTEPAD در ۲ دقیقه

اگر به دنبال کد بازی HTML هستید تا Snake Game را به راحتی در دفترچه یادداشت ایجاد کنید ، در صفحه مناسبی قرار دارید. در حقیقت ، ساخت بازی مار  در Notepad فقط با کد HTML بسیار آسان است. اساساً می توانید بازی را تنها در ۲ دقیقه انجام دهید.

 

برای انجام این کار نیازی به دانش برنامه نویسی ندارید . همه چیز برای شما انجام شده است ، از جمله CSS و JavaScript.

 

تنها چیزی که نیاز دارید این است که کد بازی HTML زیر را کپی و جایگذاری کنید و می توانید بازی را به صورت رایگان شروع کنید!

 

نکته : کد بازی مار بصورت فایل PDF نیز در انتهای مقاله برای استفاده در دسترس است.

 

همچنین ما دو کد را برای این منظور در اختیار شما قرار داده ایم ، کد اول کمی حرفه ای تر و زیباتر نسبت به کد دوم می باشد.

 

کد اول :

اجازه دهید مروری بر این بازی در قالب GIF داشته باشیم.

من فقط یک فایل برای این برنامه ایجاد کرده ام زیرا این برنامه از نظر طول و اندازه کوچک است. من کمی از CSS استفاده کردم ، به همین دلیل CSS را بین برچسب <head> قرار دادم . یک فایل HTML با نام “snakegame.html” یا هر نام دیگری که می خواهید ایجاد کنید. فرم کدها را در زیر کپی کرده و روی فایل HTML بچسبانید.

<!--Code By WebDevTrick (https://webdevtrick.com)-->
<html lang="en">
<head>
     <meta charset="UTF-8">
     <title>Simple JavaScript Snake Game| Webdevtrick.com</title>
     
     <style>
     canvas {
          display: block;
          position: absolute;
          border: 5px solid  #009BFF;
          margin: auto;
          top: 0;
          bottom: 0;
          right: 0;
          left: 0;
     }
     </style>
</head>
<body>

var
COLS = 26,
ROWS = 26,
EMPTY = 0,
SNAKE = 1,
FRUIT = 2,
LEFT  = 0,
UP    = 1,
RIGHT = 2,
DOWN  = 3,
KEY_LEFT  = 37,
KEY_UP    = 38,
KEY_RIGHT = 39,
KEY_DOWN  = 40,
canvas,       
ctx,       
keystate, 
frames,   
score;       

grid = {

     width: null,  
     height: null, 
     _grid: null,  

     
     init: function(d, c, r) {
          this.width = c;
          this.height = r;

          this._grid = [];
          for (var x=0; x < c; x++) {
               this._grid.push([]);
               for (var y=0; y < r; y++) {
                    this._grid[x].push(d);
               }
          }
     },

     
     set: function(val, x, y) {
          this._grid[x][y] = val;
     },

     
     get: function(x, y) {
          return this._grid[x][y];
     }
}


snake = {

     direction: null, 
     last: null,           
     _queue: null,     

     
     init: function(d, x, y) {
          this.direction = d;

          this._queue = [];
          this.insert(x, y);
     },

     
     insert: function(x, y) {
          
          this._queue.unshift({x:x, y:y});
          this.last = this._queue[0];
     },

     
     remove: function() {
          
          return this._queue.pop();
     }
};


function setFood() {
     var empty = [];
     
     for (var x=0; x < grid.width; x++) {
          for (var y=0; y < grid.height; y++) {
               if (grid.get(x, y) === EMPTY) {
                    empty.push({x:x, y:y});
               }
          }
     }
     
     var randpos = empty[Math.round(Math.random()*(empty.length - 1))];
     grid.set(FRUIT, randpos.x, randpos.y);
}


function main() {
     
     canvas = document.createElement("canvas");
     canvas.width = COLS*20;
     canvas.height = ROWS*20;
     ctx = canvas.getContext("2d");
     
     document.body(canvas);

     
     ctx.font = "12px Helvetica";

     frames = 0;
     keystate = {};
     
     document.addEventListener("keydown", function(evt) {
          keystate[evt.keyCode] = true;
     });
     document.addEventListener("keyup", function(evt) {
          delete keystate[evt.keyCode];
     });

     
     init();
     loop();
}


function init() {
     score = 0;

     grid.init(EMPTY, COLS, ROWS);

     var sp = {x:Math.floor(COLS/2), y:ROWS-1};
     snake.init(UP, sp.x, sp.y);
     grid.set(SNAKE, sp.x, sp.y);

     setFood();
}


function loop() {
     update();
     draw();
     
     window.requestAnimationFrame(loop, canvas);
}


function update() {
     frames++;

     
     if (keystate[KEY_LEFT] && snake.direction !== RIGHT) {
          snake.direction = LEFT;
     }
     if (keystate[KEY_UP] && snake.direction !== DOWN) {
          snake.direction = UP;
     }
     if (keystate[KEY_RIGHT] && snake.direction !== LEFT) {
          snake.direction = RIGHT;
     }
     if (keystate[KEY_DOWN] && snake.direction !== UP) {
          snake.direction = DOWN;
     }

     
     if (frames%7 === 0) {
          
          var nx = snake.last.x;
          var ny = snake.last.y;

          
          switch (snake.direction) {
               case LEFT:
                    nx--;
                    break;
               case UP:
                    ny--;
                    break;
               case RIGHT:
                    nx++;
                    break;
               case DOWN:
                    ny++;
                    break;
          }

          
          if (0 > nx || nx > grid.width-1  ||
               ۰ > ny || ny > grid.height-1 ||
               grid.get(nx, ny) === SNAKE
          ) {
               return init();
          }

          if (grid.get(nx, ny) === FRUIT) {
               
               score++;
               setFood();
          } else {
               
               var tail = snake.remove();
               grid.set(EMPTY, tail.x, tail.y);
          }

          grid.set(SNAKE, nx, ny);
          snake.insert(nx, ny);
     }
}


function draw() {
     
     var tw = canvas.width/grid.width;
     var th = canvas.height/grid.height;
     
     for (var x=0; x < grid.width; x++) {
          for (var y=0; y < grid.height; y++) {
               
               switch (grid.get(x, y)) {
                    case EMPTY:
                         ctx.fillStyle = "#fff";
                         break;
                    case SNAKE:
                         ctx.fillStyle = "#333";
                         break;
                    case FRUIT:
                         ctx.fillStyle = "#009BFF";
                         break;
               }
               ctx.fillRect(x*tw, y*th, tw, th);
          }
     }
     
     ctx.fillStyle = "#000";
     ctx.fillText("SCORE: " + score, 10, canvas.height-10);
}


main();

</body>
</html>

کد دوم : کد بازی HTML برای ساخت بازی مار در NOTEPAD

اگر ترجیح می دهید یک آموزش تصویری نیز ایجاد کرده ام ، آن را در زیر مشاهده کنید:

ابتدا کد زیر را کپی کنید:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Snake Game</title>
<style type="text/css">
body {text-align:center;}
canvas { border:7px dashed #4A4747 }
h1 { font-size:35px; text-align: center; margin: 0; padding-bottom: 25px; text-decoration: underline; font-family: Geneva; color: #0520A5;}
</style>
<script type="text/javascript">
function play_game()
{
var level = 160; // Game level, by decreasing will speed up
var rect_w = 45; // Width
var rect_h = 30; // Height
var inc_score = 50; // Score
var snake_color = "#0520A5"; // Snake Color
var ctx; // Canvas attributes
var tn = []; // temp directions storage
var x_dir = [-1, 0, 1, 0]; // position adjusments
var y_dir = [0, -1, 0, 1]; // position adjusments
var queue = [];
var frog = 1; // defalut food
var map = [];
var MR = Math.random;
var X = 5 + (MR() * (rect_w - 10))|0; // Calculate positions
var Y = 5 + (MR() * (rect_h - 10))|0; // Calculate positions
var direction = MR() * 3 | 0;
var interval = 0;
var score = 0;
var sum = 0, easy = 0;
var i, dir;
// getting play area 
var c = document.getElementById('playArea');
ctx = c.getContext('2d');
// Map positions
for (i = 0; i < rect_w; i++)
{
map[i] = [];
}
// random placement of snake food
function random_snake()
{
var x, y;
do
{
x = MR() * rect_w|0;
y = MR() * rect_h|0;
}
while (map[x][y]);
map[x][y] = 1;
ctx.fillStyle = snake_color;
ctx.strokeRect(x * 10+1, y * 10+1, 8, 8);
}
// Default somewhere placement
random_snake();
function set_game_speed()
{
if (easy)
{
X = (X+rect_w)%rect_w;
Y = (Y+rect_h)%rect_h;
}
--inc_score;
if (tn.length)
{
dir = tn.pop();
if ((dir % 2) !== (direction % 2))
{
direction = dir;
}
}
if ((easy || (0 <= X && 0 <= Y && X < rect_w && Y < rect_h)) && 2 !== map[X][Y])
{
if (1 === map[X][Y])
{
score+= Math.max(5, inc_score);
inc_score = 50;
random_snake();
frog++;
}
//ctx.fillStyle("#ffffff");
ctx.fillRect(X * 10, Y * 10, 9, 9);
map[X][Y] = 2;
queue.unshift([X, Y]);
X+= x_dir[direction];
Y+= y_dir[direction];
if (frog < queue.length)
{
dir = queue.pop()
map[dir[0]][dir[1]] = 0;
ctx.clearRect(dir[0] * 10, dir[1] * 10, 10, 10);
}
}
else if (!tn.length)
{
var show_score = document.getElementById("show");
show_score = "You lose!<br /> <u>Your Score:</u> <b>"+score+"</b><br><br> Want to try again?<br><br><input type='button' value='Play Again' ='.reload();' />";
document.getElementById("playArea").style.display = 'none';
window.clearInterval(interval);
}
}
interval = window.setInterval(set_game_speed, level);
 = function(e) {
var code = e.keyCode - 37;
if (0 <= code && code < 4 && code !== tn[0])
{
tn.unshift(code);
}
else if (-5 == code)
{
if (interval)
{
window.clearInterval(interval);
interval = 0;
}
else
{
interval = window.setInterval(set_game_speed, 60);
}
}
else
{
dir = sum + code;
if (dir == 44||dir==94||dir==126||dir==171) {
sum+= code
} else if (dir === 218) easy = 1;
}
}
}

</head>
<body ="play_game()">
<h1>Play Snake Game</h1>
<div id="show"></div>
<canvas id="playArea" width="450" height="300">Sorry your browser does not support HTML5. Try using like Chrome or Firefox.</canvas>
</body>
</html>

در مرحله بعد ، Note Pad را در رایانه خود باز کرده و کد را وارد کنید.

برای ذخیره کد روی CTRL + S کلیک کنید .

در زیر نوع فایل ، All file را انتخاب کرده و به اسم فایل را با عنوان mar.html یا هر چیز دیگری ذخیره کنید .

توجه: هر اسمی که برای بازی خود بگذارید ، مطمئن شوید که با فرمت html. ذخیره می کنید.

اکنون می توانید به پوشه ای که فایل کد را در آن ذخیره کرده اید بروید و آن را با هر مرورگری که از HTML 5 پشتیبانی می کند باز کنید.

مرورگرهای توصیه شده: Chrome/Firefox.

کانال روبیکا من : کانال روبیکا من : https://rubika.ir/artinkarimian3

اگر ایده یا پروژه ای دارید از طریق لینک زیر :
https://formafzar.com/form/zso58
پیام خود را وارد کنید راستی به تمام سوالات شما پاسخ داده میشود .

رمز داخل سایت (جهت نیاز) : artinkarimian125701