PitSparone

Javascrip: PitSparone

 

Attenzione, questo browser non supporta i canvas.
 
 
[code]

//
// controllo tastiera
//
function acquisizioneInput()
{
    // acquisisco l'input da tastiera
    if (Key.isDown(Key.SINISTRA)) { posx = posx - 5; }
    if (Key.isDown(Key.DESTRA)) { posx = posx +  5; }
    if (Key.isDown(Key.SU)) { posy = posy -  5; }
    if (Key.isDown(Key.GIU)) { posy = posy +  5; }
}


//
// controllo mouse
//
function muoviMouse (ev) {
    if (ev.layerX || ev.layerX == 0) { // Firefox ?
        posx = ev.layerX;
        posy = ev.layerY;
    } else if (ev.offsetX || ev.offsetX == 0) {
        posx = ev.offsetX;
        posy = ev.offsetY;
    }
}

function mouseclick (ev) {
    if (ev.layerX || ev.layerX == 0) { // Firefox ?
        posx = ev.layerX;
        posy = ev.layerY;
    } else if (ev.offsetX || ev.offsetX == 0) {
        posx = ev.offsetX;
        posy = ev.offsetY;
    }
    timeSparo = new Date().getTime();
    flagSparo = true;

}

function aggiornaLogica()
{
    // aggiorno dati e posizioni degli oggetti nella scena
}

function disegnaScena()
{
    timeAdesso = new Date().getTime();
    timeDelta =  timeAdesso  - timeSparo;

    // disegno la scena
    contesto.clearRect(0,0,500,300);
    //disegna i bersagli
    contesto.strokeStyle ="#ff0000";
    contesto.beginPath();
    contesto.lineWidth = 3;
    contesto.arc(ballX , ballY, ballD, 0 , Math.PI*2, true);
    contesto.stroke();
    
    //
    // calcola la distanza tra centro mirino e bersaglio
    //
    var dist = Math.sqrt( Math.pow(ballX - posx, 2) + Math.pow(ballY - posy,2));
    if (dist <= ballD){
        if (flagSparo == true){
            flagColpito = true;
        }
        contesto.fillStyle = "#00ff00";
    }
    else{
        contesto.fillStyle = "#0000ff";
    }
    
      
    if (flagColpito == true){
        contesto.fillStyle = "#000000";
        if (timeDelta >= 500 ){
            ballX = Math.floor(Math.random() * 501);
            ballY = Math.floor(Math.random() * 301);
            flagColpito = false;
        }
    }
    
    contesto.fill();

    // disegna il mirino 
    contesto.strokeStyle ="#0000ff";
    
    contesto.beginPath();
    contesto.lineWidth = 2;
    contesto.lineCap = "round";

    contesto.arc(posx,posy, 10, 0 , Math.PI*2, true);
    contesto.stroke();

    contesto.beginPath();
    contesto.arc(posx,posy,  6, 0 , Math.PI*2, true);

    if (flagSparo == true){
        contesto.fillStyle = "#000000";
        contesto.fill();
        if (timeDelta >= 500 ){
            flagSparo = false;
        }
        
        // acquisisco l'elemento associato all'id quadro1
        var elemento = document.getElementById("quadro1");
        // Modifico la proprietà innerHTML di tale elemento
        elemento.innerHTML = 'Si Sparoooo ' + flagSparo + " " + timeSparo + " " +  timeAdesso + " " + timeDelta + " " + dist;
        //flagSparo = false;
    }
    
    else{
        // acquisisco l'elemento associato all'id quadro1
        var elemento = document.getElementById("quadro1");
        // Modifico la proprietà innerHTML di tale elemento
        elemento.innerHTML = 'No Sparoooo ' + flagSparo + " " + timeSparo + " "+  timeAdesso + " " + timeDelta + " " + dist;

    }

    contesto.stroke();

    contesto.beginPath();
    contesto.moveTo (posx -15, posy);
    contesto.lineTo (posx  -6, posy);

    contesto.moveTo (posx +15, posy);
    contesto.lineTo (posx  +6, posy);


    contesto.moveTo (posx    , posy -15);
    contesto.lineTo (posx    , posy  -6);

    contesto.moveTo (posx    , posy +15);
    contesto.lineTo (posx    , posy  +6);


    contesto.stroke();

    //contesto.drawImage(mirino,posx - 35,posy - 35);
}

function gameLoop()
{
    acquisizioneInput();
    aggiornaLogica();
    disegnaScena();
}

function init()
{
    window.addEventListener('keyup', function(event) { Key.onKeyup(event); }, false);
    window.addEventListener('keydown', function(event) { Key.onKeydown(event); }, false);
    canvas.addEventListener('mousemove', muoviMouse, false);
    canvas.addEventListener('click', mouseclick, false);
    // Attivo l'esecuzione di gameLoop() ogni 25 millisecondi
    intervallo = window.setInterval(gameLoop,ritardo);
}

// Dichiarazione variabili globali
canvas = document.getElementById("canvas");
contesto = canvas.getContext("2d");
var mirino = new Image();
var timeSparo = new Date().getTime();
var timeAdesso = new Date().getTime();
var timeDelta = new Date().getTime();

var ballX = Math.floor(Math.random() * 501);
var ballY = Math.floor(Math.random() * 301);
var ballD = 40;

var flagSparo = false;
var flagColpito = false;
mirino.src = "./mirino.JPG";
var posx = 250, posy = 150;
var ritardo = 2;

// faccio partire il loop
init();



[/code]

Related Articles