Board logo

標題: 20121110 [打印本頁]

作者: ray    時間: 2012-11-10 10:44     標題: 20121110

  1. function doMouseDown(event)
  2. {
  3.         //alert("x="+event.pageX+";y="+event.pageY);
  4.                 for(var i=0;i<balls;i++)
  5.                 {
  6.                 for(var j=0;j<=i;j++)
  7.                                 {
  8.                                                                                 if(event.pageX > x-i*(r*2+d)/2+(r*2+d)*j-r && event.pageX < x-i*(r*2+d)/2+(r*2+d)*j+r && event.pageY > y+r*2*i-r && event.pageY < y+r*2*i+r)
  9.                                                                                 {
  10.                                                 if(seats[i][j] == 0)
  11.                                                         seats[i][j] = ++sno;
  12.                                                                                                 if(i > 0)
  13.                                                                                                 {
  14.                                                                                                         if(seats[i-1][j] == 0) seats[i-1][j] = -1;
  15.                                                                                                         if(seats[i-1][j-1] == 0) seats[i-1][j-1] = -1;
  16.                                                                                                 }
  17.                                                                                                 if(seats[i][j+1] == 0) seats[i][j+1] = -1;
  18.                                                                                                 if(seats[i][j-1] == 0) seats[i][j-1] = -1;
  19.                                                                                                 if(seats[i+1][j] == 0) seats[i+1][j] = -1;
  20.                                                                                                 if(seats[i+1][j+1] == 0) seats[i+1][j+1] = -1;
  21.                                         }
  22.                                 }
  23.                 }
  24. }
複製代碼

作者: ray    時間: 2012-11-10 10:57

  1. <!DOCTYPE html>
  2. <head>
  3. <meta charset="utf-8">
  4. </head>
  5. <body>
  6. <div id="gameArea"><canvas id="gameCanvas"></canvas></div>
  7. <script>
  8. var gameHeight = window.innerHeight; //取得瀏覽器內容的高度,放進設定的遊戲視窗高度。
  9. var gameWidth = window.innerWidth; //取得瀏覽器內容的寬度,放進設定的遊戲視窗寬度。

  10. var gameArea = document.getElementById("gameArea"); //利用"gameArea"這個ID來取得該Div
  11. var gameCanvas = document.getElementById("gameCanvas"); //利用"gameCanvas"這個ID來取得該Canvas
  12. gameArea.style.height = gameHeight; //設定gameArea的高度為遊戲視窗高度
  13. gameArea.style.width = gameWidth; //設定gameArea的寬度為遊戲視窗寬度
  14. gameCanvas.height = gameHeight; //設定gameCanvas的高度為遊戲視窗高度
  15. gameCanvas.width = gameWidth; //設定gameCanvas的高度為遊戲視窗寬度
  16. gameCanvas.addEventListener("mousedown",doMouseDown,false);

  17. var x = 500;
  18. var y = 100;
  19. var r = 30;
  20. var d = 7;
  21. var balls = 7;
  22. var sno = 0;

  23. function doMouseDown(event)
  24. {
  25.         //alert("x="+event.pageX+";y="+event.pageY);
  26.                 for(var i=0;i<balls;i++)
  27.                 {
  28.                 for(var j=0;j<=i;j++)
  29.                                 {
  30.                                                                                 if(event.pageX > x-i*(r*2+d)/2+(r*2+d)*j-r && event.pageX < x-i*(r*2+d)/2+(r*2+d)*j+r && event.pageY > y+r*2*i-r && event.pageY < y+r*2*i+r)
  31.                                                                                 {
  32.                                                 if(seats[i][j] == 0)
  33.                                                         seats[i][j] = ++sno;
  34.                                                                                                 if(i > 0)
  35.                                                                                                 {
  36.                                                                                                         if(seats[i-1][j] == 0) seats[i-1][j] = -1;
  37.                                                                                                         if(seats[i-1][j-1] == 0) seats[i-1][j-1] = -1;
  38.                                                                                                 }
  39.                                                                                                 if(seats[i][j+1] == 0) seats[i][j+1] = -1;
  40.                                                                                                 if(seats[i][j-1] == 0) seats[i][j-1] = -1;
  41.                                                                                                 if(seats[i+1][j] == 0) seats[i+1][j] = -1;
  42.                                                                                                 if(seats[i+1][j+1] == 0) seats[i+1][j+1] = -1;
  43.                                         }
  44.                                 }
  45.                 }
  46. }

  47. var ctx = gameCanvas.getContext("2d"); //取得gameCanvas的2D容器(Context)

  48. function clearScreen()
  49. {
  50.         ctx.fillStyle = "rgb(255,255,255)";
  51.         ctx.fillRect(0,0,gameWidth,gameHeight);
  52. }

  53. function drawArc(x,y,r,color)
  54. {
  55.         ctx.beginPath();
  56.         ctx.fillStyle = color;
  57.         ctx.arc(x,y,r,0,Math.PI*2,true);
  58.         ctx.fill();
  59. }

  60. var seats = new Array(balls);
  61. for(var i=0;i<balls;i++)
  62.         seats[i] = new Array(balls);

  63. function initGame()
  64. {
  65.         for(var i=0;i<balls;i++)
  66.                 for(var j=0;j<=i;j++)
  67.                         seats[i][j] = 0;
  68. }

  69. function gameLoop()
  70. {
  71.         clearScreen();
  72.         for(var i = 0;i <balls;i++)
  73.         {
  74.                         for(var j=0;j<=i;j++)
  75.                         {
  76.                                         if(seats[i][j]==0)
  77.                                                         drawArc(x-i*(r*2+d)/2+(r*2+d)*j,y+r*2*i,r,"rgb(0,255,128)");
  78.                                         else
  79.                                         {
  80.                                                         drawArc(x-i*(r*2+d)/2+(r*2+d)*j,y+r*2*i,r,"rgb(0,128,128)");
  81.                                                         if(seats[i][j] > 0)
  82.                                                                                                                 {
  83.                                                                                                                         ctx.fillStyle = "rgb(0,0,0)";
  84.                                                                                                                         ctx.font = "italic bold 30px sans-serif";
  85.                                                                                                                         ctx.textBaseline = "bottom";
  86.                                                                                                                         ctx.fillText(seats[i][j],x-i*(r*2+d)/2+(r*2+d)*j-r/2,y+r*2*i+r/2);
  87.                                                                                                                 }
  88.                                         }
  89.                         }
  90.                           
  91.                 }
  92.         
  93.         setTimeout(gameLoop,200);
  94. }        
  95. initGame();
  96. gameLoop();
  97. </script>
  98. </body>
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2