Bu işlem için
CSS koduna ihtiyacımız olmayacak. Çünkü bütün tasarım ve renklendirme araçları
JavaScript kodlarının içerisinde barınmakta.
İlk olarak
<head></head> tagleri arasına aşağıdaki kodu ekleyerek
jQuery dosyamızı çağıralım.
Şimdi oyunu yayınlayacak div koduyla başlayacağız. Buradan sonraki tüm kodlar <body></body> içerisine eklenecek. İşte ihtiyacımız olan tek satırlık HTML kod :
< div id = "snake-oyunu" ></ div > |
Şimdi divimizin altına JavaScript kodlarımızı ekleyelim.
window.onload = function () { |
var canvas = document.createElement( 'canvas' ); |
var ctx = canvas.getContext( '2d' ); |
var snake = new Array(3); |
var arena = new Array(20); |
for ( var i = 0; i < arena.length; i++) { |
arena[i] = new Array(20); |
$( '#snake-oyunu' ).append(canvas); |
arena = generateSnake(arena); |
arena = generateFood(arena); |
window.addEventListener( 'keydown' , function (e) { |
if (e.keyCode === 38 && direction !== 3) { |
} else if (e.keyCode === 40 && direction !== 2) { |
} else if (e.keyCode === 37 && direction !== 0) { |
} else if (e.keyCode === 39 && direction !== 1) { |
ctx.clearRect(0, 0, canvas.width, canvas.height); |
for ( var i = snake.length - 1; i >= 0; i--) { |
snake[0] = { x: snake[0].x + 1, y: snake[0].y } |
snake[0] = { x: snake[0].x - 1, y: snake[0].y } |
snake[0] = { x: snake[0].x, y: snake[0].y - 1 } |
snake[0] = { x: snake[0].x, y: snake[0].y + 1 } |
if (arena[snake[0].x][snake[0].y] === 1) { |
arena = generateFood(arena); |
snake.push({ x: snake[snake.length - 1].x, y: snake[snake.length - 1].y }); |
arena[snake[snake.length - 1].x][snake[snake.length - 1].y] = 2; |
if ((score % 100) == 0) { |
} else if (arena[snake[0].x][snake[0].y] === 2) { |
arena[snake[0].x][snake[0].y] = 2; |
if (i === (snake.length - 1)) { |
arena[snake[i].x][snake[i].y] = null ; |
snake[i] = { x: snake[i - 1].x, y: snake[i - 1].y }; |
arena[snake[i].x][snake[i].y] = 2; |
for ( var x = 0; x < arena.length; x++) { |
for ( var y = 0; y < arena[0].length; y++) { |
ctx.fillStyle = '#20abbc' ; |
ctx.fillRect(x * 10, y * 10 + 20, 10, 10); |
} else if (arena[x][y] === 2) { |
ctx.fillStyle = '#bc202d' ; |
ctx.fillRect(x * 10, y * 10 + 20, 10, 10); |
setTimeout(getGame, speed - (level * 50)); |
ctx.strokeStyle = '#000' ; |
ctx.strokeRect(2, 20, canvas.width - 4, canvas.height - 24); |
ctx.rect(3,21,canvas.width - 6,canvas.height - 26); |
ctx.fillStyle = '#bc202d' ; |
ctx.font = '12px Helvetica' ; |
ctx.fillText( 'Puan : ' + score + ' - Seviye : ' + level, 2, 12); |
function generateFood(arena) { |
var rndX = Math.round(Math.random() * 19); |
var rndY = Math.round(Math.random() * 19); |
while (arena[rndX][rndY] === 2) { |
rndX = Math.round(Math.random() * 19); |
rndY = Math.round(Math.random() * 19); |
function generateSnake(arena) { |
var rndX = Math.round(Math.random() * 19); |
var rndY = Math.round(Math.random() * 19); |
while ((rndX - snake.length) < 0) { |
rndX = Math.round(Math.random() * 19); |
for ( var i = 0; i < snake.length; i++) { |
snake[i] = { x: rndX - i, y: rndY }; |
arena[rndX - i][rndY] = 2; |
function showGameOver() { |
ctx.clearRect(0, 0, canvas.width, canvas.height); |
ctx.fillStyle = '#bc202d' ; |
ctx.font = '16px Helvetica' ; |
ctx.fillText( 'Oyun bitti!' , ((canvas.width / 2) - (ctx.measureText( 'Oyun bitti!' ).width / 2)), 50); |
ctx.font = '12px Helvetica' ; |
ctx.fillText( 'Puanın : ' + score, ((canvas.width / 2) - (ctx.measureText( 'Puanın : ' + score).width / 2)), 70); |
Ve yılan oyunumuz hazır.
Kapanış
Bu makalenin bizler için önemi jQuery kategorimizin ilk yayını olması. CSS3 ve HTML5 içerisine sıkıştıramayacağımız jQuery kodları artık daha kolay erişilebilir olacak.
Oyuna gelirsek; Nokia serisindeki klasik yılan oyununa fazlasıyla benziyor. İşin güzel kısmı JS kodlarıyla oynarak oyunu hızlandırabiliyoruz. Çünkü 200 piksellik kutu içerisinde yılanın bir uçtan diğer uça gitmesini beklemek bazen can sıkabiliyor.
Hepinize iyi oyunlar.
Etiketler:
Blogger
Webmaster
Wordpress
Yazar Hakkında - BLoomente Blog .
Blogumuz ilk yayınından bu güne , blogger eklentilerini Ve Tüm Güncel Konular Hakkında Bilgi Vermektedir , tüm blogger kullanıcılarına ulaştırmak için yayın yapmış , bu süre içinde hiç bir şekilde kar/gelir elde etmemiş , etmiyecektir..Lütfen desteklerinizi bizden esirgemeyin..
BLoomente Blog
Bizi
Facebook ve
Twitter üzerinden de takip edebilirsiniz..
ne cok oynardim bu oyunu eskiden
YanıtlaSil