ตัวควบคุมเกม
- หน้าก่อน องค์ประกอบเกม
- หน้าต่อไป สิ่งขวางเกม
বাটন প্রেস করলে লাল বাক্সটি সরতে পারে:
সবকিছু নিয়ন্ত্রণ করুন
এখন আমরা লাল বাক্সটি নিয়ে যাই নয়াই।
চারটি বাটন যোগ করুন: উপর, নীচে, ডান, বাম。
প্রত্যেক বাটনের জন্য একটি ফাংশন লিখুন, যা কম্পোনেন্টকে নির্ধারিত দিকে সরাতে পারে。
নিচে component
কনস্ট্রাকটরে দুটি নতুন প্রতিভা তৈরি করা হয়, এবং তাদের নামকরণ করা হয় speedX
এবং speedY
এই প্রতিভা হল গতিমাপার ইনডিকেটর হিসাবে ব্যবহৃত হয়
নিচে component
কনস্ট্রাকটরে একটি নামকরণ করা হয়েছে newPos()
এর ফাংশন, যা speedX
এবং speedY
প্রতিভা থেকে কম্পোনেন্টের অবস্থান পরিবর্তন করুন。
কম্পোনেন্টটি আবর্জন করা আগে, updateGameArea
ফাংশন ব্যবহার newPos
ফাংশন:
ইনস্ট্যান্স
<script> function component(width, height, color, x, y) { this.width = width; this.height = height; this.speedX = 0; this.speedY = 0; this.x = x; this.y = y; this.update = function() { ctx = myGameArea.context; ctx.fillStyle = color; ctx.fillRect(this.x, this.y, this.width, this.height); } this.newPos = function() { this.x += this.speedX; this.y += this.speedY; } } function updateGameArea() { myGameArea.clear(); myGamePiece.newPos(); myGamePiece.update(); } function moveup() { myGamePiece.speedY -= 1; } function movedown() { myGamePiece.speedY += 1; } function moveleft() { myGamePiece.speedX -= 1; } function moveright() { myGamePiece.speedX += 1; } </script> <button onclick="moveup()">UP</button> <button onclick="movedown()">DOWN</button> <button onclick="moveleft()">LEFT</button> <button onclick="moveright()">RIGHT</button>
স্থগিত করা
যদি প্রয়োজন, তবে বুটন ছেদ করার সময় কালো বক্সকে স্থগিত করা যেতে পারে。
গতি সূচককে 0 সেট করা হবে একটি পদ্ধতি যোগ করা হয়েছে。
সাধারণ স্ক্রিন এবং টাচস্ক্রিনের জন্য, আমরা এই দুইটি ডিভাইসের জন্য কোড যোগ করবো:
ইনস্ট্যান্স
function stopMove() { myGamePiece.speedX = 0; myGamePiece.speedY = 0; } </script> <button onmousedown="moveup()" onmouseup="stopMove()" ontouchstart="moveup()">UP</button> <button onmousedown="movedown()" onmouseup="stopMove()" ontouchstart="movedown()">DOWN</button> <button onmousedown="moveleft()" onmouseup="stopMove()" ontouchstart="moveleft()">LEFT</button> <button onmousedown="moveright()" onmouseup="stopMove()" ontouchstart="moveright()">RIGHT</button>
কিবোর্ড হিসাবে নিয়ন্ত্রক
আমরা কালো বক্সকে নিয়ন্ত্রিত করতে পারি কিনা কিবোর্ডের দিকনির্দেশক কীবর্ডের দিকনির্দেশক দিকনির্দেশক দিকনির্দেশক
একটি পদ্ধতি তৈরি করা হয়েছে যাতে কোনও কী ক্লিক করা হয়েছে তা পরীক্ষা করা যায় এবং myGameArea
বস্তুর key
প্রতিভা সেট করা হয়েছে কী কোড।কীটি ছেদ করা হলে, key
প্রতিভা সেট করা হয়েছে false
:
ইনস্ট্যান্স
var myGameArea = { canvas : document.createElement("canvas"), start : function() { this.canvas.width = 480; this.canvas.height = 270; this.context = this.canvas.getContext("2d"); document.body.insertBefore(this.canvas, document.body.childNodes[0]); this.interval = setInterval(updateGameArea, 20); window.addEventListener('keydown', function (e) { myGameArea.key = e.keyCode; }) window.addEventListener('keyup', function (e) { myGameArea.key = false; }) }, clear : function(){ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); } }
এভাবে, যদি দিশাকীয় কীটির কোনোটা প্রেস করা হয়, তাহলে লাল বাক্সটি চলবে:
ইনস্ট্যান্স
function updateGameArea() { myGameArea.clear(); myGamePiece.speedX = 0; myGamePiece.speedY = 0; যদি (myGameArea.key && myGameArea.key == 37) {myGamePiece.speedX = -1; } যদি (myGameArea.key && myGameArea.key == 39) {myGamePiece.speedX = 1; } যদি (myGameArea.key && myGameArea.key == 38) {myGamePiece.speedY = -1; } যদি (myGameArea.key && myGameArea.key == 40) {myGamePiece.speedY = 1; } myGamePiece.newPos(); myGamePiece.update(); }
একাধিক কী প্রেস করা
একাধিক কী একসাথে প্রেস করা হলে কী হবে?
এই উদাহরণে, কম্পোনেন্ট শুধুমাত্র হোরিজন্টাল বা ভার্টিক্যাল গতিতে চলতে পারে। এখন আমরা চাই যে কম্পোনেন্টটি কোনার গতিতেও চলতে পারে。
জন্য myGameArea
একটি keys
একটি তালিকা, এবং প্রত্যেক প্রেস করা কীর জন্য একটি এলিমেন্ট যোগ করা হবে এবং তাকে true
، এই মান true থাকবে পর্যন্ত কোনো কী না প্রেস করা হয়, এই মান keyup
ইভেন্ট লিস্টেনার ফাংশনে হয়েছে false
:
ইনস্ট্যান্স
var myGameArea = { canvas : document.createElement("canvas"), start : function() { this.canvas.width = 480; this.canvas.height = 270; this.context = this.canvas.getContext("2d"); document.body.insertBefore(this.canvas, document.body.childNodes[0]); this.interval = setInterval(updateGameArea, 20); window.addEventListener('keydown', function (e) { myGameArea.keys = (myGameArea.keys || []); myGameArea.keys[e.keyCode] = true; }) window.addEventListener('keyup', function (e) { myGameArea.keys[e.keyCode] = false; }) }, clear : function(){ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); } } function updateGameArea() { myGameArea.clear(); myGamePiece.speedX = 0; myGamePiece.speedY = 0; যদি (myGameArea.keys && myGameArea.keys[37]) {myGamePiece.speedX = -1; } যদি (myGameArea.keys && myGameArea.keys[39]) {myGamePiece.speedX = 1; } যদি (myGameArea.keys && myGameArea.keys[38]) {myGamePiece.speedY = -1; } if (myGameArea.keys && myGameArea.keys[40]) {myGamePiece.speedY = 1; } myGamePiece.newPos(); myGamePiece.update(); }
মাউস কার্সরকে কন্ট্রোলার হিসাবে ব্যবহার করো
আপনি যদি মাউস কার্সরকে লাল বাক্সকে নিয়ন্ত্রণ করতে চান, তবে myGameArea
একটি পদ্ধতি যোগ করো যা মাউস কার্সরের x এবং y কোণ্ডিটি নিয়ন্ত্রণ করে:
ইনস্ট্যান্স
var myGameArea = { canvas : document.createElement("canvas"), start : function() { this.canvas.width = 480; this.canvas.height = 270; this.canvas.style.cursor = "none"; //hide the original cursor this.context = this.canvas.getContext("2d"); document.body.insertBefore(this.canvas, document.body.childNodes[0]); this.interval = setInterval(updateGameArea, 20); window.addEventListener('mousemove', function (e) { myGameArea.x = e.pageX; myGameArea.y = e.pageY; }) }, clear : function(){ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); } }
তারপর, আমরা মাউস কার্সরের সমান কোডটি ব্যবহার করে লাল বাক্সকে সরাতে পারি:
ইনস্ট্যান্স
function updateGameArea() { myGameArea.clear(); if (myGameArea.x && myGameArea.y) { myGamePiece.x = myGameArea.x; myGamePiece.y = myGameArea.y; } myGamePiece.update(); }
স্ক্রিনকে টাপ করে গেমকে নিয়ন্ত্রণ করো
আমরা আরও টাচস্ক্রিনে লাল বাক্সকে নিয়ন্ত্রণ করতে পারি。
নিচে myGameArea
একটি পদ্ধতি যোগ করো, যা স্ক্রিনের টাচপয়েন্টের x এবং y কোণ্ডিটি ব্যবহার করে:
ইনস্ট্যান্স
var myGameArea = { canvas : document.createElement("canvas"), start : function() { this.canvas.width = 480; this.canvas.height = 270; this.context = this.canvas.getContext("2d"); document.body.insertBefore(this.canvas, document.body.childNodes[0]); this.interval = setInterval(updateGameArea, 20); window.addEventListener('touchmove', function (e) { myGameArea.x = e.touches[0].screenX; myGameArea.y = e.touches[0].screenY; }) }, clear : function(){ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); } }
তারপর, যখন ব্যবহারকারী স্ক্রিনকে টাপ করে, আমরা মাউস কার্সরের সমান কোডটি ব্যবহার করে লাল বাক্সকে সরাতে পারি:
ইনস্ট্যান্স
function updateGameArea() { myGameArea.clear(); if (myGameArea.x && myGameArea.y) { myGamePiece.x = myGameArea.x; myGamePiece.y = myGameArea.y; } myGamePiece.update(); }
চিত্রক্ষেত্রের কন্ট্রোলার
আমরা আমাদের নিজস্ব বাটনগুলিকে চিত্রিত করতে পারি এবং তাদের কন্ট্রোলার হিসাবে ব্যবহার করতে পারি:
ইনস্ট্যান্স
function startGame() { myGamePiece = new component(30, 30, "red", 10, 120); myUpBtn = new component(30, 30, "blue", 50, 10); myDownBtn = new component(30, 30, "blue", 50, 70); myLeftBtn = new component(30, 30, "blue", 20, 40); myRightBtn = new component(30, 30, "blue", 80, 40); myGameArea.start(); }
একটি নতুন ফাংশন যোগ করা হয়েছে যাতে কোনও কম্পোনেন্ট (এই উদাহরণে একটি বাটন) ক্লিক করা হয়েছে কিনা না নির্ধারণ করা যায়。
প্রথমে মাউস বাটন ক্লিক করা হয়েছে কিনা পরীক্ষা করার জন্য ইভেন্ট লিস্টিনার যোগ করা হয়েছে (mousedown
এবং mouseup
)。টাচস্ক্রিনের জন্য প্রতিক্রিয়া দেওয়ার জন্য একটি ইভেন্ট লিস্টিনার যোগ করা হয়েছে যাতে স্ক্রিনটি ক্লিক করা হয়েছে কিনা পরীক্ষা করা যায় (touchstart
এবং touchend
):
ইনস্ট্যান্স
var myGameArea = { canvas : document.createElement("canvas"), start : function() { this.canvas.width = 480; this.canvas.height = 270; this.context = this.canvas.getContext("2d"); document.body.insertBefore(this.canvas, document.body.childNodes[0]); this.interval = setInterval(updateGameArea, 20); window.addEventListener('mousedown', function (e) { myGameArea.x = e.pageX; myGameArea.y = e.pageY; }) window.addEventListener('mouseup', function (e) { myGameArea.x = false; myGameArea.y = false; }) window.addEventListener('touchstart', function (e) { myGameArea.x = e.pageX; myGameArea.y = e.pageY; }) window.addEventListener('touchend', function (e) { myGameArea.x = false; myGameArea.y = false; }) }, clear : function(){ this.context.clearRect(0, 0, this.canvas.width, this.canvas.height); } }
এখন myGameArea
একটি অবজেক্ট যেটি আমাদের ক্লিকের x এবং y কোণশোধনী দিয়ে থাকে। আমরা এই অবজেক্টগুলো ব্যবহার করে কোনও একটি নীল বাটনের ওপর ক্লিক করা হয়েছে কিনা পরীক্ষা করি。
এই নতুন পদ্ধতিটি হল clicked
হল component
কনস্ট্রাকটরের একটি পদ্ধতি যা কম্পোনেন্টটি ক্লিক করা হয়েছে কিনা পরীক্ষা করে。
নিচে updateGameArea
ফাংশনে, একটি ব্লু বাটনকে ক্লিক করার সময়, আমরা প্রয়োজনীয় কাজ করবো:
ইনস্ট্যান্স
function component(width, height, color, x, y) { this.width = width; this.height = height; this.speedX = 0; this.speedY = 0; this.x = x; this.y = y; this.update = function() { ctx = myGameArea.context; ctx.fillStyle = color; ctx.fillRect(this.x, this.y, this.width, this.height); } this.clicked = function() { var myleft = this.x; var myright = this.x + (this.width); var mytop = this.y; var mybottom = this.y + (this.height); var clicked = true; if ((mybottom < myGameArea.y) || (mytop > myGameArea.y) || (myright < myGameArea.x) || (myleft > myGameArea.x)) { clicked = false; } return clicked; } } function updateGameArea() { myGameArea.clear(); if (myGameArea.x && myGameArea.y) { if (myUpBtn.clicked()) { myGamePiece.y -= 1; } if (myDownBtn.clicked()) { myGamePiece.y += 1; } if (myLeftBtn.clicked()) { myGamePiece.x += -1; } if (myRightBtn.clicked()) { myGamePiece.x += 1; } } myUpBtn.update(); myDownBtn.update(); myLeftBtn.update(); myRightBtn.update(); myGamePiece.update(); }
- หน้าก่อน องค์ประกอบเกม
- หน้าต่อไป สิ่งขวางเกม