Tutorial Pemrograman

Cara Membuat Game Tenis Meja dengan JavaScript

Berkat bahasa pemrograman CSS dan JavaScript, kita dapat memainkan berbagai permainan di website. Salah satunya adalah game tenis meja. Dengan bahasa pemrograman CSS, kita akan membuat background dari game. Sedangkan dengan bahasa pemrograman JavaScript, kita akan menampilkan serta agar game bisa dimainkan. Karena game tenis meja membutuhkan dua pemain, maka komputer akan menjadi lawan kita.

Lalu, bagaimana caranya membuat game tenis meja dengan bahasa pemrograman CSS dan JavaScript? Mudah kok, yuk langsung saja buka komputer kamu dan ikuti beberapa langkah mudah di bawah ini.

1. Buka XAMPP Control Panel, serta aktifkan Apache.

2. Buka program teks editor yang ter-install di komputer kamu, disini saya menggunakan teks editor Notepad++. Ketikkan kode HTML5 berikut ini. Simpan kode HTML5 di atas di folder xampplite → htdocs → buat folder baru dengan nama TenisMeja → simpan kode di atas dengan nama index.html. Karena script code CSS hanya sedikit, maka script code CSS langsung ditambahkan di file index.html.

<html>
<head>
    <title>Membuat Game Tennis Meja dengan JavaScript</title>
</head>
<body style="background-color:#b22222">
    <hr>
    <h1 align="center" style="color:#dcdcdc;">Game Tenis Meja</h1>
    <hr>
    <canvas style="margin-left:24%; margin-top:2%; " id = "gameCanvas" width = "800" height = "600" ></canvas>
</body>
</html>

3. Untuk melihat hasil script code di atas, kamu bisa buka browser kamu ketiklah http://localhost/TenisMeja. Tampilan background dari game tenis meja.

4. Untuk menampilkan game tenis meja dan agar game bisa dimainkan, buka kembali file index.html, dan ketikkan script code JavaScript berikut sebelum kode </body>.

<script>
var canvas;
var canvasContext;
var ballX = 50;
var ballY = 50;
var ballSpeedX = 10;
var ballSpeedY = 4;
var paddle1Y = 250;   //your paddle
var paddle2Y = 250;  //computer's paddle
const PADDLE_HEIGHT = 100;
const PADDLE_WIDTH = 10;
var playerScore = 0;
var computerScore = 0;
const WINNING_SCORE = 3;
var showingWInScreen = false; 
    
function calculateMousePos(event){
    var rect = canvas.getBoundingClientRect();
    var root = document.documentElement;
    var mouseX = event.clientX - rect.left - root.scrollLeft;
    var mouseY = event.clientY - rect.top - root.scrollTop;
    return {
        x:mouseX,
        y:mouseY 
    };
}
    
function handleMouseClick(event){
    if(showingWInScreen){
        playerScore = 0;
        computerScore = 0;
        showingWInScreen = false;
    }
}
    
window.onload = function(){
    canvas = document.getElementById('gameCanvas');
    canvasContext = canvas.getContext('2d');
    var framesPerSecond = 30;
    setInterval(function(){
        moveEverything();
        drawEverything();
    }, 1000/framesPerSecond);
    
    canvas.addEventListener('mousedown', handleMouseClick);
    canvas.addEventListener('mousemove', function(event){
        var mousePos = calculateMousePos(event);
        paddle1Y = mousePos.y;
        
    });
   
}

function ballReset(){
    if(playerScore >= WINNING_SCORE || computerScore >= WINNING_SCORE){
        showingWInScreen = true; 
    }
    ballSpeedX = -ballSpeedX;
    ballX = canvas.width/2;
    ballY = canvas.height/2;

}
    
function computerMovement(){
    var paddle2YCenter = paddle2Y + (PADDLE_HEIGHT/2);
    if(paddle2YCenter < ballY-35){
        paddle2Y = paddle2Y + 6;
    }else if (paddle2YCenter > ballY+35){
        paddle2Y = paddle2Y - 6;
    }
} 
    

function moveEverything(){
    if(showingWInScreen){
        return;
    }
   computerMovement();
   ballX = ballX + ballSpeedX;
   ballY = ballY + ballSpeedY; 
    
    if(ballX < PADDLE_WIDTH){
        if(ballY > paddle2Y-(PADDLE_HEIGHT/2) && ballY < (paddle2Y+PADDLE_HEIGHT/2)){
            ballSpeedX = -ballSpeedX;
             var deltaY = ballY - (paddle2Y+PADDLE_HEIGHT/2);
            ballSpeedY = deltaY * 0.35;
        }else{
        playerScore++; //INCREMENT SCORE BEFORE RESETTING THE BALL
        ballReset();
        }
    }  
    
    if(ballX > canvas.width-PADDLE_WIDTH){
        if(ballY > paddle1Y-(PADDLE_HEIGHT/2) && ballY < (paddle1Y+PADDLE_HEIGHT/2)){
            ballSpeedX = -ballSpeedX;
            var deltaY = ballY - (paddle1Y+PADDLE_HEIGHT/2);
            ballSpeedY = deltaY * 0.35;
        }else{
        computerScore++;
        ballReset();
        }
    }
    
   if(ballY > canvas.height || ballY < 0){
       ballSpeedY = -ballSpeedY;
   }
}
    
function drawNet(){
    for(var i=0 ; i < canvas.height ; i+=40){
        colorRect(canvas.width/2-1,i,2,20,'black');
    }
}

function drawEverything(){
    colorRect(0,0,canvas.width,canvas.height,'#2c3e50');
    if(showingWInScreen){
        canvasContext.fillStyle = 'white';
        if(playerScore >= WINNING_SCORE){
            canvasContext.fillText("YOU WIN",370,300);
        }else if(computerScore >= WINNING_SCORE){
            canvasContext.fillText("COMPUTER WINS",355,300);
        }
        canvasContext.fillText("CLICK TO CONTINUE",350,350);
        return;
    }
    drawNet();
    colorRect(0,(paddle2Y-(PADDLE_HEIGHT/2)), PADDLE_WIDTH,PADDLE_HEIGHT,'white');
    colorRect((canvas.width-PADDLE_WIDTH),(paddle1Y-(PADDLE_HEIGHT/2)) ,PADDLE_WIDTH,PADDLE_HEIGHT,'white');
    colorCircle(ballX, ballY, 8, 'white'); 
    canvasContext.fillText(computerScore, 100, 100); canvasContext.fillText(playerScore, canvas.width-100, 100);
}

function colorRect(leftX,topY,width,height,drawColor){
    canvasContext.fillStyle = drawColor;
    canvasContext.fillRect(leftX,topY,width,height);
}
    
function colorCircle(centreX, centreY, radius, drawColor){
    canvasContext.fillStyle = drawColor;
    canvasContext.beginPath();
    canvasContext.arc(centreX, centreY, radius, 0, Math.PI*2, true);
    canvasContext.fill();
}

</script>

Jangan lupa tekan Ctrl+S untuk menyimpan script code JavaScript di file index.html.

5. Reload alamat website: http://localhost/ TenisMeja. Game tenis meja bisa langsung dimainkan begitu alamat website di reload.

Sisi kiri akan dimainkan oleh komputer, dan sisi kanan akan dimainkan oleh kita. Kumpulkan skor sebanyak-banyaknya agar menang di game tenis meja.

Ketika game over maka game akan menampilkan siapa pemenangnya, klik link click to continue’ untuk memulai permainan baru.

6. Selesai, menarik sekali bukan?.

Catatan:

  1. Htdocs adalah salah satu folder bawaan dari XAMPP, yang tugasnya khusus untuk menyimpan berkas-berkas yang akan dijalankan, seperti berkas PHP, HTML, CSS, dan JavaScript.
  2. Kemudian, mungkin ada yang menanyakan maksud dari http://localhost/ TenisMeja. Localhost merupakan server lokal pada computer. Localhost dapat diaktifkan ketika kamu meng-klik start Apache di XAMPP Control Panel. TenisMeja menunjuk pada folder  TenisMeja saya di xampplite → htdocs. Serta, index.html dan style.css adalah nama file yang tersimpan script code di atas.

Demikian penjelasan dari tutorial ‘Cara Membuat Game Tenis Meja dengan JavaScript’. Selamat mencoba.

Tutorial Lainnya dari Penulis:









Click to comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Inwepo adalah media platform yang membantu setiap orang untuk belajar dan berbagi tutorial, tips dan trik cara penyelesaian suatu masalah di kehidupan sehari-hari dalam bentuk teks, gambar. dan video.

Dengan bergabung bersama kami dan membuat 1 tutorial terbaik yang kamu miliki dapat membantu jutaan orang di Indonesia untuk mendapatkan solusinya. Ayo berbagi tutorial terbaikmu.

Ikuti Kami di Sosmed!

        

Berlangganan Tutorial Gratis Melalui Email!

Copyright © 2020 Inwepo - All Rights Reserved.

To Top