Blogroll

Pages

Sunday, July 20, 2014

MERANCANG GAME SEDERHANA DI JAVA SCRIPT

Memiliki pengetahuan tentang gambar bergerak menggunakan JavaScript, kita akan membuat sebuah permainan kecil Ping Pong sebagai contoh untuk posting ini.

Hari ini kita akan belajar untuk melakukan beberapa hal baru dalam JavaScript:

1 Pelaksana beberapa kode setiap interval waktu tertentu (untuk permainan lingkaran).
2 Pelacakan dan menggunakan gerakan mouse.
3 Melampirkan kode (fungsi) untuk acara.


Teori Permainan

Seperti yang Anda harus tahu, dalam game ini ada satu bola dan dua dayung di kedua ujung. Salah satunya adalah yang dikendalikan oleh pengguna lain, untuk contoh ini, adalah CPU dikontrol. Pengguna harus memindah pemukul agar tidak membiarkan bola melewati, CPU juga harus melakukan hal yang sama. Siapa pun yang sisi bola melewati kehilangan permainan.

Ada beberapa objek yang dapat berinteraksi satu sama lain, ini adalah bola, dayung, dinding. Mari kita lihat berbagai interaksi yang dapat terjadi antara:

     Bola Menekan Atas / Bawah Wall - Bola akan terpental.

     Bola Melewati Entah Side - Player atau CPU, tergantung pada yang timnya bola melewati, akan kehilangan permainan.

     Bola Menekan Paddle - Ini akan terpental

Kita harus mengurus peristiwa ini:

     Halaman Load - benda game akan diinisialisasi

     Permainan Start - mouse klik pada dayung pemain akan memulai permainan.

     Mutasi Mouse - Di dalam area permainan (div), dayung akan mengikuti y-posisi mouse. Paddle namun tidak boleh melewati batas.

     CPU Paddle - Dayung akan mengikuti bola dengan bergerak naik / turun tergantung posisi relatif bola. Kami telah menambahkan sedikit kecerdasan dengan hanya menggerakkan dayung sementara bola datang ke arah itu. Ini akan membuat gerakan serta permainan terlihat lebih nyata.


kode

CATATAN: Masukkan dua file
ball_small.png, paddle.png (Klik kanan "Save As") di direktori yang sama script dalam. 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Pong Game In JavaScript</title>

<style>
#box
{
   width: 500px;
   height: 300px;
   margin: auto;
   border: 5px solid #ccc;
   position: relative;
   overflow: hidden;
}

.ob
{
   position: absolute;
   border: 0px;
}
</style>
<script type="application/javascript">

// CHANGE THESE, IF REQUIRED
var Speed = 5; // Speed of ball (pixels/step)
var CPUSpeed = 5; // Speed of CPU Paddle (pixels/step)

// Short references to objects
var paddle1;
var paddle2;
var ball;
var box;
var msg;


// For internal use
var dx, dy; // Speed in x and y directions
var ballX, ballY; // x and y positions of ball
var playerY; // y position of player paddle (x fixed)

var cpuY; // y position of CPU paddle (x fixed)
var iID; // To store ID of set interval used to clear it when required

// Attach a function to onLoad event
window.onload = Init;

// INITIALIZE GAME OBJECTS
function Init()
{
   // Make short refrences to objects

   paddle1 = document.getElementById('paddle1');
   paddle2 = document.getElementById('paddle2');
   ball = document.getElementById('ball');
   box = document.getElementById('box');
   msg = document.getElementById('msg');

   // Initial values
   ballX = (box.offsetWidth / 2) - (ball.offsetWidth / 2);
   ballY = (box.offsetHeight / 2) - (ball.offsetHeight / 2);
   cpuY = (box.offsetHeight / 2) - (paddle2.offsetHeight / 2);
   playerY = (box.offsetHeight / 2) - (paddle1.offsetHeight / 2);
   dx = dy = Speed;

   paddle1.style.left = 20 + 'px';
   paddle1.style.top = playerY + 'px';
   paddle2.style.left = box.offsetWidth - (20 + paddle2.offsetWidth) + 'px';
   paddle2.style.top = cpuY + 'px';
   ball.style.left = ballX + 'px';
   ball.style.top = ballY + 'px';

   // Show message

   msg.innerHTML = '<h2>Click on Paddle to Start Game.</h2>';
}

// START GAME
function Start()
{
   // Attach a function to onmousemove event of the box
   box.onmousemove = MovePaddle;
   // Call 'GameLoop()' function every 10 milliseconds

   iID = setInterval('GameLoop()', 10);

   msg.innerHTML = '';
}

// MAIN GAME LOOP, CALLED REPEATEDLY
function GameLoop()
{
   // MOVE BALL
   ballX += dx;
   ballY += dy;

   // See if ball is past player paddle

   if(ballX < 0)
   {
      clearInterval(iID);
      Init();

      box.onmousemove = '';

      msg.innerHTML = '<h2>You Loose!<br/>Click on Paddle to Re-Start Game.</h2>';
   }

   // See if ball is past CPU paddle

   if((ballX + ball.offsetWidth) > box.offsetWidth)
   {
      clearInterval(iID);
      Init();

      box.onmousemove = '';

      msg.innerHTML = '<h2>You Win!<br/>Click on Paddle to Re-Start Game.</h2>';
   }

   // COLLISION DETECTION

   // If ball hits upper or lower wall
   if(ballY < 0 || ((ballY + ball.offsetHeight) > box.offsetHeight))
      dy = -dy; // Make x direction opposite

   // If ball hits player paddle

   if(ballX < (paddle1.offsetLeft + paddle1.offsetWidth))
      if(((ballY + ball.offsetHeight) > playerY) && ballY < (playerY + paddle1.offsetHeight))
         dx = -dx;

   // If ball hits CPU paddle
   if((ballX + ball.offsetWidth) > paddle2.offsetLeft)
      if(((ballY + ball.offsetHeight) > cpuY) && ballY < (cpuY + paddle2.offsetHeight))
         dx = -dx;

   // Place ball at calculated positions

   ball.style.left = ballX + 'px';
   ball.style.top = ballY + 'px';

   // MOVE CPU PADDLE
   // Move paddle only if ball is coming towards the CPU paddle
   if(dx > 0)
   {
      if((cpuY + (paddle2.offsetHeight / 2)) > (ballY + ball.offsetHeight)) cpuY -= CPUSpeed;
      else cpuY += CPUSpeed;

      paddle2.style.top = cpuY + 'px';
   }
}


// TO MOVE PLAYER PADDLE ON MOUSE MOVE EVENT
function MovePaddle(e)
{
   // Fetch y coordinate of mouse
   var y = (e.clientY - (box.offsetTop - document.documentElement.scrollTop));
   // Here, (box.offsetTop - document.documentElement.scrollTop) will get the relative
   // position of "box" w.r.t to current scroll postion

   // If y below lower boundary (cannot go above upper boundary - 
   // mousemove event only generated when mouse is inside box
   if(y > (box.offsetHeight - paddle1.offsetHeight))
      y = (box.offsetHeight - paddle1.offsetHeight);

   // Copy position
   playerY = y;
   // Set position

   paddle1.style.top = y + 'px';
}
</script>
</head>

<body bgcolor="#fff">
<h1 align="center">Pong Game Example in JavaScript</h1>

<div id="box">
<img class="ob" id="paddle1" src="paddle.PNG" onclick="javascript: Start()"/>

<img class="ob" id="paddle2" src="paddle.PNG" />
<img class="ob" id="ball" src="ball_small.PNG" />

</div>
<div id="msg" align="center"></div>
</body>
</html>
 
hahahaha... lucu kan..
itu sebagai contoh sobat.. sobat bisa mengedit dan mengembangkannya sendiri..
 
terimaksih.. 
 
selamat mencoba 
  GOOD LUCK ^_^

0 comments:

Post a Comment