Menambahkan kotak merah ke area permainan:
Tambahkan Komponen a
Membuat konstruktor komponen, yang memungkinkan Anda menambahkan komponen ke gamearea tersebut.
Objek konstruktor disebut component
, dan kami membuat komponen pertama kami, disebut myGamePiece
:
Contoh
var myGamePiece;
function startGame() {
myGameArea.start();
myGamePiece = new
component(30, 30, "red" , 10, 120);
}
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
this.x = x;
this.y = y;
ctx = myGameArea.context;
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
}
Komponen memiliki sifat dan metode untuk mengontrol penampilan dan gerakan mereka.
frame
Untuk membuat permainan siap beraksi, kami akan memperbarui tampilan 50 kali per detik, yang jauh seperti frame dalam film.
Pertama, membuat fungsi baru yang disebut updateGameArea()
.
Dalam myGameArea
objek, tambahkan interval yang akan menjalankan updateGameArea()
fungsi setiap milidetik 20 (50 times per second) . Juga menambahkan fungsi yang disebut clear()
, yang membersihkan seluruh kanvas.
Dalam component
konstruktor, menambahkan fungsi disebut update()
, untuk menangani gambar komponen.
The updateGameArea()
fungsi panggilan clear()
dan update()
metode.
Hasilnya adalah bahwa komponen diambil dan dibersihkan 50 kali per detik:
Contoh
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);
},
clear : function() {
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
}
}
function component(width, height, color, x, y) {
this.width = width;
this.height = height;
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);
}
}
function updateGameArea() {
myGameArea.clear();
myGamePiece.update();
}
Cobalah sendiri " Buatlah Pindah
Untuk membuktikan bahwa lapangan merah sedang ditarik 50 kali per detik, kita akan mengubah posisi x (horizontal) oleh salah satu pixel setiap kali kita update area permainan:
Contoh
function updateGameArea() {
myGameArea.clear();
myGamePiece.x += 1;
myGamePiece.update();
}
Cobalah sendiri " Mengapa Batal The Game Area?
Ini mungkin tampak tidak perlu untuk membersihkan area permainan di setiap update. Namun, jika kita biarkan clear()
metode, semua gerakan dari komponen akan meninggalkan jejak di mana ia diposisikan di frame terakhir:
Contoh
function updateGameArea() {
//myGameArea.clear();
myGamePiece.x += 1;
myGamePiece.update();
}
Cobalah sendiri " Ubah Ukuran
Anda dapat mengontrol lebar dan tinggi dari komponen:
Contoh
Buat persegi panjang 10x140 piksel:
function startGame() {
myGameArea.start();
myGamePiece = new
component( 10 , 140 , "red" , 10, 120);
}
Cobalah sendiri " Mengubah Warna
Anda dapat mengontrol warna dari komponen:
Contoh
function startGame() {
myGameArea.start();
myGamePiece = new
component(30, 30, "blue" , 10, 120);
}
Cobalah sendiri " Anda juga dapat menggunakan colorvalues lain seperti hex, rgb, atau RGBA:
Contoh
function startGame() {
myGameArea.start();
myGamePiece = new
component(30, 30, "rgba(0, 0, 255, 0.5)" , 10, 120);
}
Cobalah sendiri " Ubah Posisi
Kami menggunakan x- dan y-koordinat posisi komponen ke area permainan.
Sudut kiri atas kanvas memiliki koordinat (0,0)
Mouse area permainan di bawah ini untuk melihat x dan y koordinat:
Anda dapat memposisikan komponen mana pun Anda suka di area permainan:
Contoh
function startGame() {
myGameArea.start();
myGamePiece = new
component(30, 30, "red" , 2 , 2 );
}
Cobalah sendiri " banyak Komponen
Anda dapat menempatkan sebagai banyak komponen yang Anda inginkan pada area permainan:
Contoh
var redGamePiece, blueGamePiece, yellowGamePiece;
function startGame() {
redGamePiece = new
component(75, 75, "red" , 10, 10);
yellowGamePiece = new component(75, 75, "yellow" , 50, 60);
blueGamePiece = new component(75, 75, "blue" , 10, 110);
myGameArea.start();
}
function updateGameArea() {
myGameArea.clear();
redGamePiece.update();
yellowGamePiece.update();
blueGamePiece.update();
}
Cobalah sendiri " pindah Komponen
Membuat semua tiga komponen bergerak di arah yang berbeda:
Contoh
function updateGameArea() {
myGameArea.clear();
redGamePiece.x += 1;
yellowGamePiece.x += 1;
yellowGamePiece.y += 1;
blueGamePiece.x += 1;
blueGamePiece.y -= 1;
redGamePiece.update();
yellowGamePiece.update();
blueGamePiece.update();
}
Cobalah sendiri "