Tutorial Pemrograman

Cara Membuat Game Tennis dengan JavaScript

Berkat bahasa pemrograman CSS dan JavaScript, kita dapat membuat dan memainkan berbagai permainan di website. Salah satunya adalah game tennis. 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 dengan bahasa pemograman CSS dan JavaScript? Mudah kok, yuk langsung saja buka komputer kamu dan ikuti beberapa langkah mudah di bawah ini.

1. Download dulu file pendukung. Letakkan file pendukung di folder Tennis.

2. Buka XAMPP Control Panel, serta aktifkan Apache.

3. Buka program teks editor yang ter-install di komputer kamu, disini saya menggunakan teks editor Notepad++. Ketikkan kode HTML5 berikut ini.

<!DOCTYPE HTML>
<html>
<head>
<title>Membuat Game Tennis dengan JavaScript</title>



<link rel="stylesheet" type="text/css" href="styles/style.css">
<script src="scripts/jquery.js" type="text/javascript"></script>
</head>
<body>

<div id="game" >
<span id="gs">Game Speed</span><br/>
<input type="radio" class="speed" name="s" id="s" value="Slow" checked> <label for="s" class="lbl" id="ls">Slow</label><br/>

<input type="radio" class="speed" name="s" id="f" value="Fast"> <label for="f" class="lbl"  id="lf">Fast</label><br/>

<input type="radio" class="speed" name="s" id="vf" value="Very Fast"><label for="vf" class="lbl"  id="lvf">Very Fast</label> <br/>
<span id="target">Target Score</span>
<div id="goals">
<select id="select_tag"> 

</select>
</div>
<span id="btn1" onClick="btn()">Start Game</span>
<span id="over">Game Over!!</span></div>
<div id="players">
<span id="player1">Player 1</span>
<span id="player2">Player 2</span>
</div>
<div id="corners">
<span id="score"></span>
<span id="score1"></span>
</div>
<span id="win"></span>
<span id="draw"></span>
<h1 id="score2" style="font-weight:bold;position:fixed;top:440px;left:470px;"></h1>
<canvas id="canvas">
</canvas>

</body>
</html>

Simpan kode HTML5 di atas di folder xampplite – htdocs – buat folder baru dengan nama Tennis – simpan kode di atas dengan nama index.html.

4. Untuk melihat hasil script code di atas, kamu bisa buka browser kamu ketiklah http://localhost/Tennis.

5. Ketikkan script code CSS berikut di lembar kerja baru.

label
{
    color: #33AB3D;
    line-height: 20px;
    text-align: center;
    font-weight:bold;
    

}
body
{

}
#goals
{
position:fixed;
        
    
}
#target
{
    position:fixed;
    
    color: BROWN;
    
    
    font-weight:bold;
}

#canvas
{
    margin:35px 15px 0 0;
    
    
    background-image:url("tennis_ground.png");
    border-style:solid;
    border-color:white;
    border-width:5px;
    
    
}
#gs select option
{
color:blue;	
display:block;
background:red;
}
#gs
{
color: DARKBLUE;
    line-height: 30px;
    text-align: center;
    font-weight:bold;
}
label:hover
{
    font-size:110%;
    color: GREEN;	
}

#players span{
position:fixed;
display:block;
font-size:120%;
font-weight:bold;
}
#player1
{
color:#72D474;
}
#player2
{
color:#8C9DFF;
}

#game{
background:white;
padding:20px 100px 100px 60px;;
border-radius: 10px;
border : solid 2px black;
position:fixed;
/*top:180px;
left:400px;*/
}

#win
{
position:fixed;top:10px;
/*left:425px;*/
    color: #F50C3F;
        
    text-weight:bold;
    color: #0F0F0F;
        font-size:150%;
text-shadow:  1px 1px #808080;
}
#over
{
position:fixed;top:90px;left:450px;
    color: #FacC3F;
        
    font-weight:bold;
    color: #0F0F0F;
        font-size:180%;
        text-shadow:  1px 1px #808080;

}#draw
{
position:fixed;top:10px;
/*left:450px;*/
    
        border-radius:2px;
    text-wight:bold;
    color: #0F0F0F;
        font-size:150%;
        font-weight:bold;
text-shadow:  1px 1px #808080;
}

#score
{
position:fixed;top:5px;right:20px;
background: #8C9DFF;
padding:5px 20px;
border-radius:2px;
            color: white;
            font-weight:bold;
        font-size:100%;
}

#score1
{
position:fixed;top:5px;left:10px;
background: #72D474;
padding:5px 20px;
border-radius:2px;
            color: white;
        font-size:100%;
font-weight:bold;		
}

#chance
{
position:fixed;bottom:5px;right:20px;
background: #8C9DFF;
padding:5px 20px;
border-radius:2px;
            color: white;
            font-weight:bold;
        font-size:100%;
}


#chance1
{
position:fixed;bottom:5px;left:10px;
background: #72D474;
padding:5px 20px;
border-radius:2px;
            color: white;
            font-weight:bold;
        font-size:100%;
}



#btn1
{
cursor: pointer;
    
    position:fixed;
    /*top:300px;left:485px;*/
    width: 85px;
    height: 35px;
    
    
    background: black;
    border-radius: 3px;
    box-shadow: 0px 4px rgba(0, 0, 0, 0.2);
    
    margin: 0 7px 11px 0;
    
    color: white;
    line-height: 36px;
    text-align: center;
    text-weight:bold;
    
    /* prevent selection of text inside keys */
    user-select: none;
    
    /* Smoothing out hover and active states using css3 transitions */
    transition: all 0.5s ease;
}
#btn1:hover {
background: lightgray;
border : 1 px;
    box-shadow: 0px 4px black;
    color: black;
    
    
    }

Simpan kode HTML5 di atas di folder xampplite – htdocs – pilih folder Tennis – buat folder baru dengan nama styles – simpan kode di atas dengan nama style.css.

6. Reload alamat website: http://localhost/ Tennis. Tampilan background level game.

7. Untuk menampilkan game tenis meja dan agar game bisa dimainkan, buka kembali file index.html, dan ketikkan script code JavaScript berikut diantara kode <head> … </head>.

<script>
window.onload = function(){
$("#corners").hide();
$("#over").hide();
$("#canvas").hide();
$("#players").hide();
var W = window.innerWidth-40;
var H = window.innerHeight-100;
$("#game").css('top', H/2-80);
$("#game").css('left', W/2-110);
$("#btn1").css('top',H/2+80);
$("#btn1").css('left',W/2-40);
$("#win").css('left',W/2-100);
$("#draw").css('left',W/2-40);
$("#target").css('left',W/2-45);
$("#target").css('top',H/2+50);
$("#goals").css('left',W/2+60);
$("#goals").css('top',H/2+50);
$("#player1").css('top',10);
$("#player1").css('left',150);
$("#player2").css('top',10);
$("#player2").css('right',150);


var select = document.getElementById("select_tag"); 
var options = new Array("3","4","5","6","7","8","9","10");
for(var i = 0; i < options.length; i++) {
    var opt = options[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    select.appendChild(el);
}

}
function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}
function btn(){

document.body.style.background="#DEE3DF";
document.getElementById("win").innerHTML ="";
document.getElementById("draw").innerHTML ="";
$("#canvas").show();

var canvas = document.getElementById("canvas");
var W = canvas.width = window.innerWidth-40;
var H = canvas.height = window.innerHeight-70;


 
var ctx = canvas.getContext("2d");

var d="right";
var posx=W;
var posy=H/2-50;
var posx1=10;
var posy1=H/2-50;
var ballx=15;
var bally=posy+30;
var dirx=3;
var diry=3;
var loop;
    ball_image = new Image();
  ball_image.src = 'images/ball.png';
  tennis_ground = new Image();
  tennis_ground.src = 'images/tennis_ground_b.png';
 var score=0;
 var score1=0;
 var target = $('#select_tag').find(":selected").text();
 
 
  
function bar1()
{
    
    ctx.fillStyle="blue";
ctx.fillRect(posx,posy,10,100);
}


function bar2()
{
    ctx.fillStyle="#63BA64";
    ctx.fillRect(posx1,posy1,10,100);
}
function ball()
{
    
    
    

    ctx.drawImage(ball_image,ballx,bally,30,30);
        
    
    if((score1==target)||(score==target))
            {
            clearInterval(loop);
            game_over();
            }
    
        if(bally<0)
        {
            bally=0;
            diry*=-1
        }
        if(bally>H-25)
        {
        bally=H-25;
        diry*=-1;
        }
        if((ballx>W-45)&&(bally>=posy)&&(bally<posy+100))
        {
            ballx=W-45;
            dirx*=-1;
            
        }
        if((ballx>W+10)&&(bally<posy))
        {
            
            document.getElementById("score1").style.background="red";
            score1++;
            dirx*=-1;
            posx=W;
            posy=H/2-50;
            posx1=10;
            posy1=H/2-50;
            ballx=15;
            bally=posy+30;
            sleep(500);
            document.getElementById("score1").style.background="#72D474";
            
        }
        if((ballx>W+10)&&(bally>posy+100))
        {		
            document.getElementById("score1").style.background="red";
            score1++;
            dirx*=-1;
            posx=W;
            posy=H/2-50;
            posx1=10;
            posy1=H/2-50;
            ballx=15;
            bally=posy+30;
            sleep(500);
            document.getElementById("score1").style.background="#72D474";
        }
        
        
        if((ballx<=14)&&(bally>=posy1)&&(bally<posy1+100))
        {
            ballx=15;			
            dirx*=-1;			
            
        }
        if((ballx<-35)&&(bally<posy1))
        {
            
            
            document.getElementById("score").style.background="red";
            score++;
            dirx*=-1;
            posx=W;
            posy=H/2-50;
            posx1=10;
            posy1=H/2-50;
            ballx=15;
            bally=posy+30;
            sleep(500);
            document.getElementById("score").style.background="#8C9DFF";

        }
        if((ballx<-35)&&(bally>posy1+100))
        {		
        
            document.getElementById("score").style.background="red";
        
            score++;
            dirx*=-1;
            posx=W;
            posy=H/2-50;
            posx1=10;
            posy1=H/2-50;
            ballx=15;
            bally=posy+30;
            sleep(500);
            document.getElementById("score").style.background="#8C9DFF";

        }		
        
        
        ballx+=dirx;
        bally+=diry;
        
    
    
}

function game_over(){	
        
    
        //document.getElementById("score1").innerHTML = "Player1 Score : "+score1;
        //document.getElementById("score").innerHTML = "Player2 Score : "+score;
        
        $("#game").show();
        
        
        if(score1>score)
        {
        document.getElementById("win").innerHTML = "Player 1 wins the game";
        
        $("#win").show();
        }
        else if(score1<score)
        {
        document.getElementById("win").innerHTML = "Player 2 wins the game"
        $("#win").show();
        }
        else{
        document.getElementById("draw").innerHTML = "Game Draw";
        $("#draw").show();
        }
        
        //$("#over").show();
        
        
        
    }

function draw()
{
        
        $("#game").hide();
        $("#corners").show();
        $("#players").show();
        
        if(posy<=0)
        {
        posy=0;		
        }
        if(posy1<=0)
        {
        posy1=0;		
        }
        if(posy>H-100)
        {
        posy=H-100;		
        }
        if(posy1>H-100)
        {
        posy1=H-100;		
        }
        

        if(posx>W-20)
        {
        posx=posx-20;
        }
        
        

        ctx.fillStyle="White";
        ctx.fillRect(0,0,W,H);
        ctx.drawImage(tennis_ground,0,0,W,H);
        ctx.fillStyle="Black"
        ctx.font = "20px Arial";
        
        ctx.fillStyle="BLACK";
        document.getElementById("score").innerHTML="Score: "+ score;
        document.getElementById("score1").innerHTML="Score: " + score1;
        
        $("#score").show();
        $("#score1").show();	
        
        /*var score_text = "Score: " + score;
        ctx.fillText(score_text, W-100, 25);
        ctx.fillStyle="BLACK";
        var score_text = "Score: " + score1;
        ctx.fillText(score_text, 25, 25);
        var score_text = "Chances left: " + chance1;
        ctx.fillText(score_text, 150, 25);
        var score_text = "Chances left: " + chance;
        ctx.fillText(score_text, W-300, 25);*/
        bar1();	
            bar2();
        ball();
    
}

$(document).keydown(function(e){

        var key=e.which;
        if(key=="38") {posy-=30;d="left"}
        else if(key=="40") {posy+=30; d="right"}
        if(key=="81") {posy1-=30;}
        else if(key=="65") {posy1+=30;} 
        

})


if(document.getElementById('s').checked)
loop=setInterval(draw,10);
if(document.getElementById('f').checked)
loop=setInterval(draw,5);
if(document.getElementById('vf').checked)
loop=setInterval(draw,1);

}
</script>

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

8. Reload alamat website: http://localhost/ Tennis. Pilih kecepatan game, target scor, dan klik tombol start game.

Sisi berwarna hijau adalah komputer dan sisi berwarna biru adalah kamu.

Tampilan game over.

9. 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/ Tennis. Localhost merupakan server lokal pada computer. Localhost dapat diaktifkan ketika kamu meng-klik start Apache di XAMPP Control Panel. Tennis menunjuk pada folder  Tennis 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 Tennis dengan JavaScript’. Selamat mencoba.

Tutorial Lainnya dari Penulis:


Komentar

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