// globalsplayarea_canvas=document.getElementById('tutorial');
playarea_canvas.resize(320,200);
playarea=playarea_canvas.getContext('2d');
//p1_scr = document.getElementById('p1_scr');//p2_scr = document.getElementById('p2_scr');//status_msg = document.getElementById('status');//debug = document.getElementById('debug');ball_direction=0;
up= -1;
down=1;
//key codeskey_up=38;
key_down=40;
key_W=87;
key_S=83;
key_pause=32;
speed=2; //controls the speed of the ballpaddle_inc=10; //how many pixels paddle can move in either directionpause=false;
player_1=0; //player IDsplayer_2=1;
player_1_scr=0; //player scoresplayer_2_scr=0;
player_1_direction=null; //null = no movement whatsoeverplayer_2_direction=null;
pa= new Array();
divider= new Array();
paddle_1= new Array();
paddle_2= new Array();
ball= new Array();
functionsleep(numberMillis)
{
var now = new Date();
var exitTime = now.getTime() +numberMillis;
while (true) {
now= new Date();
if (now.getTime() >exitTime)
return;
}
}
functioninit()
{
pa['width'] =150;
pa['height'] =140;
pa['player_margin'] =10; //area behind player paddlespa['foreground'] ="#FFFFFF";
pa['background'] ="#000000";
divider['pos'] =pa['width']/2;
divider['width'] =4;
paddle_1['width'] =8;
paddle_1['height'] =64;
paddle_1['x'] =pa['player_margin'];
paddle_1['y'] = (pa['height'] /2 ) - (paddle_1['height'] /2);
paddle_2['width'] =8;
paddle_2['height'] =64;
paddle_2['x'] = (pa['width'] -pa['player_margin'] -paddle_2['width']);
paddle_2['y'] = (pa['height'] /2 ) - (paddle_2['height'] /2);
ball['width'] =10;
ball['height'] =10;
ball['x'] = (pa['width']/2) - (ball['width'] /2);
ball['y'] = (pa['height']/2) - (ball['height'] /2);
ball_direction=Math.random() *360; //initialize ball direction, which is determined by angle, at randomspeed=2;
}
functionrenderPlayarea()
{
playarea.beginPath();
playarea.clearRect(0,0,pa['width'],pa['height']);
playarea.fillStyle=pa['background'];
playarea.strokeStyle=pa['foreground'];
playarea.fillRect(0,0, pa['width'], pa['height']);
//move paddlesif(player_1_direction!=null)
{
if(player_1_direction==up)
paddle_1['y'] =paddle_1['y'] -paddle_inc;
else
paddle_1['y'] =paddle_1['y'] +paddle_inc;
}
if(player_2_direction!=null)
{
if(player_2_direction==up)
paddle_2['y'] =paddle_2['y'] -paddle_inc;
else
paddle_2['y'] =paddle_2['y'] +paddle_inc;
}
playarea.rect(paddle_1['x'],paddle_1['y'],paddle_1['width'],paddle_1['height']);
playarea.rect(paddle_2['x'],paddle_2['y'],paddle_2['width'],paddle_2['height']);
//move ballplayarea.rect(ball['x'], ball['y'], ball['width'], ball['height']);
ball['x'] =ball['x'] +Math.cos((ball_direction)*Math.PI/180) *speed;
ball['y'] =ball['y'] +Math.sin((ball_direction)*Math.PI/180) *speed;
playarea.fillStyle=pa['foreground'];
playarea.fill();
playarea.beginPath();
//redraw dividerplayarea.lineWidth=divider['width'];
playarea.lineTo(divider['pos'], 0);
playarea.lineTo(divider['pos'], pa['height'] =200);
playarea.lineWidth=1;
playarea.stroke();
playarea.closePath();
}
functiontestCollisions()
{
//make sure paddles don't go beyond play areaif(((paddle_1['y'] <=0) && (player_1_direction==up)) || ((paddle_1['y'] >= (pa['height'] -paddle_1['height'])) && (player_1_direction==down)))
player_1_direction=null;
if(((paddle_2['y'] <=0) && (player_2_direction==up)) || ((paddle_2['y'] >= (pa['height'] -paddle_2['height'])) && (player_2_direction==down)))
player_2_direction=null;
//check to see if ball went beyond paddles, and if so, score accordingly and reset playareaif(ball['x'] <=0)
{
setScore(player_2);
init()
sleep(1000);
}
if(ball['x'] >= (pa['width'] -ball['width']))
{
setScore(player_1);
init();
sleep(1000);
}
//check to see if ball hit top or bottom wall. if so, change directionif((ball['y'] >= (pa['height'] -ball['height'])) ||ball['y'] <=0)
ball_direction= -ball_direction;
//check to see if the ball hit a paddle, and if so, change ball angle dependant on where it hit the paddleif((ball['x'] <= (paddle_1['x'] +paddle_1['width'])) && (ball['y'] >=paddle_1['y']) && (ball['y'] <= (paddle_1['y'] +paddle_1['height'])))
{
ball_direction= -ball_direction/2;
speed+=.5;
}
if(((ball['x'] +ball['width']) >=paddle_2['x']) && (ball['y'] >=paddle_2['y']) && (ball['y'] <= (paddle_2['y'] +paddle_2['height'])))
{
ball_direction= (180+ball_direction)/2;
speed+=.5;
}
}
functionsetScore(p)
{
if(p==player_1)
{
player_1_scr++;
//p1_scr.firstChild.nodeValue = player_1_scr;
}
if(p==player_2)
{
player_2_scr++;
//p2_scr.firstChild.nodeValue = player_2_scr;
}
}
//handle inputdocument.onkeydown=function(ev)
{
switch(ev.keyCode)
{
casekey_W:
player_1_direction=up;
break;
casekey_S:
player_1_direction=down;
break;
casekey_up:
player_2_direction=up;
break;
casekey_down:
player_2_direction=down;
break;
}
}
document.onkeyup=function(ev)
{
switch(ev.keyCode)
{
casekey_W:
casekey_S:
player_1_direction=null;
break;
casekey_up:
casekey_down:
player_2_direction=null;
break;
casekey_pause:
if(pause==false)
{
clearInterval(game);
//status_msg.style.visibility = "visible";pause=true;
}
else
{
game=setInterval(main, 25);
//status_msg.style.visibility = "hidden";pause=false;
}
break;
}
}
functionmain()
{
testCollisions();
renderPlayarea();
}
init();
game=setInterval(main, 25);
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter
ou par MP !