ここまでの見本
lesson2・チャプター3
ここまでの見本1
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
}
lesson2・チャプター4
ここまでの見本2
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
}
lesson2・チャプター5
ここまでの見本3
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
//塗りの色設定と円形(目)
fill('black');
ellipse(170, 140, 20, 20);
ellipse(230, 140, 20, 20);
}
lesson2・チャプター6
ここまでの見本4
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
//塗りの色設定と円形(目)
fill('black');
ellipse(170, 140, 20, 20);
ellipse(230, 140, 20, 20);
//塗りの色設定と円形(ボタン)
fill('red');
ellipse(200, 260, 20, 20);
ellipse(200, 300, 20, 20);
ellipse(200, 340, 20, 20);
}
lesson2・チャプター7
ここまでの見本5
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
//塗りの色設定と円形(目)
fill('black');
ellipse(170, 140, 20, 20);
ellipse(230, 140, 20, 20);
//塗りの色設定と円形(ボタン)
fill('red');
ellipse(200, 260, 20, 20);
ellipse(200, 300, 20, 20);
ellipse(200, 340, 20, 20);
//塗りの色設定と四角(口)
fill('black');
rectMode(CENTER);
rect(200, 200, 30, 15);
}
lesson2・チャプター8
ここまでの見本6
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
//塗りの色設定と円形(目)
fill('black');
ellipse(170, 140, 20, 20);
ellipse(230, 140, 20, 20);
//塗りの色設定と円形(ボタン)
fill('red');
ellipse(200, 260, 20, 20);
ellipse(200, 300, 20, 20);
ellipse(200, 340, 20, 20);
//塗りの色設定と四角(口)
fill('black');
rectMode(CENTER);
rect(200, 200, 30, 15);
//塗りの色設定と三角(鼻)
fill('orange')
triangle(190, 150, 210, 150, 200, 180);
}
lesson2・チャプター9
ここまでの見本7
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
//塗りの色設定と円形(目)
fill('black');
ellipse(170, 140, 20, 20);
ellipse(230, 140, 20, 20);
//塗りの色設定と円形(ボタン)
fill('red');
ellipse(200, 260, 20, 20);
ellipse(200, 300, 20, 20);
ellipse(200, 340, 20, 20);
//塗りの色設定と四角(口)
fill('black');
rectMode(CENTER);
rect(200, 200, 30, 15);
//塗りの色設定と三角(鼻)
fill('orange')
triangle(190, 150, 210, 150, 200, 180);
//塗りの色設定と名前
fill('green')
textAlign(CENTER);
textSize(20);
text('SNOWMAN', 200, 450);
}
lesson2・チャプター10
ここまでの見本8
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 500);
//線の塗りを無効にする
noStroke();
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background('black');
//塗りの色設定
fill('white');
//円形(胴体)
ellipse(200, 300, 200, 200);
//円形(頭)
ellipse(200, 150, 150, 150);
//塗りの色設定と円形(目)
fill('black');
ellipse(170, 140, 20, 20);
ellipse(230, 140, 20, 20);
//塗りの色設定と円形(ボタン)
fill('red');
ellipse(200, 260, 20, 20);
ellipse(200, 300, 20, 20);
ellipse(200, 340, 20, 20);
//塗りの色設定と四角(口)
fill('black');
rectMode(CENTER);
rect(200, 200, 30, 15);
//塗りの色設定と三角(鼻)
fill('orange')
triangle(190, 150, 210, 150, 200, 180);
//塗りの色設定と名前
fill('green')
textAlign(CENTER);
textSize(20);
text('SNOWMAN', 200, 450);
}
lesson3・チャプター3
ここまでの見本9
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
textSize(30);
textAlign(CENTER);
text("KIRAMEKI TARO", 200, 150);
text("きらめき 太郎", 200, 250);
}
lesson3・チャプター4
ここまでの見本10
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
textSize(30);
textAlign(CENTER);
text("KIRAMEKI TARO", 200, 150);
text("きらめき 太郎", 200, 250);
}
lesson3・チャプター5
ここまでの見本11
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
textSize(30);
textAlign(CENTER);
text("KIRAMEKI TARO, 200, 150);
text("きらめき 太郎", 200, 250);
}
lesson4・チャプター3
ここまでの見本12
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(220);
//線を無効にする
noStroke();
//円形1
fill("black");
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill("gray");
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill("white");
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson4・チャプター4
ここまでの見本13
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(220);
//線を無効にする
noStroke();
//円形1
fill(0);
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill(125);
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill(255);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson4・チャプター5
ここまでの見本14
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(220);
//線を無効にする
noStroke();
//円形1
fill(255, 0, 0);
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill(0, 255, 0);
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill(0, 0, 255);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson4・チャプター6
ここまでの見本15
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(220);
//線を無効にする
noStroke();
//円形1
fill("#FF0000");
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill("#00FF00");
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill("#0000FF");
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson4・チャプター7
ここまでの見本16
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(220);
//線を無効にする
noStroke();
//円形1
fill(255, 0, 0, 126);
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill(0, 255, 0, 126);
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill(0, 0, 255, 126);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson4・チャプター8
ここまでの見本17
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
//カラーモード・最大値の変更
colorMode(RGB, 100);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(86);
//線を無効にする
noStroke();
//円形1
fill(100, 0, 0, 50);
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill(0, 100, 0, 50);
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill(0, 0, 100, 50);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson4・チャプター9
ここまでの見本18
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
//カラーモード・最大値の変更
colorMode(HSB);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(0, 0, 86);
//線を無効にする
noStroke();
//円形1
fill(0, 100, 100);
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill(120, 100, 100);
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill(240, 100, 100);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson6・チャプター2
ここまでの見本19
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
var x = width / 2;
var y = height / 2;
ellipse(x, y, 120 * 2, 120 * 2);
ellipse(x, y, 120 + 30, 120 + 30);
ellipse(x, y, 120 - 30, 120 - 30);
ellipse(x, y, 120 / 2, 120 / 2);
noLoop();
}
lesson7・チャプター3
ここまでの見本20
var x = 70;
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
rectMode(CENTER);
}
//繰り返し呼び出される処理
function draw() {
background(220);
ellipse(x, 200, 120, 120);
x = x + 130;
rect(x, 200, 120, 120);
x = x + 130;
triangle(x, 140, 390, 260, 270, 260);
noLoop();
}
lesson7・チャプター3
ここまでの見本21
var x = 70;
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
rectMode(CENTER);
}
//繰り返し呼び出される処理
function draw() {
background(220);
console.log(x);
ellipse(x, 200, 120, 120);
x = x + 130;
console.log(x);
rect(x, 200, 120, 120);
x = x + 130;
console.log(x);
triangle(x, 140, 390, 260, 270, 260);
noLoop();
}
lesson10・チャプター3
ここまでの見本22
var count = 0; //カウント変数
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(0);
//塗りの色設定
fill(255);
//文字の設定
textAlign(CENTER);
textSize(100);
//カウント表示
text(count, 200, 250);
}
lesson10・チャプター4
ここまでの見本23
var count = 0; //カウント変数
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(0);
//塗りの色設定
fill(255);
//文字の設定
textAlign(CENTER);
textSize(100);
//カウント表示
text(count, 200, 250);
//変数cに+1(1フレーム毎)
count = count + 1;
}
lesson10・チャプター5
ここまでの見本24
var count = 0; //カウント変数
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(0);
//塗りの色設定
fill(255);
//文字の設定
textAlign(CENTER);
textSize(100);
//カウント表示
text(count, 200, 250);
//変数cに+1(1フレーム毎)
count = count + 1;
}
lesson10・チャプター6
ここまでの見本25
var count = 0; //カウント変数
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(0);
//塗りの色設定
fill(255);
//文字の設定
textAlign(CENTER);
textSize(100);
//カウント表示
text(int(count / 60), 200, 250);
//変数cに+1(1フレーム毎)
count = count + 1;
//10以上になったとき
if (int(count / 60) >= 10) {
//背景の描画を変更
background(0, 0, 255);
//カウント表示(0)
text(10, 200, 250);
}
console.log(count);
}
lesson10・チャプター7
ここまでの見本26
var count = 600; //カウント変数
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
//背景の描画
background(0);
//塗りの色設定
fill(255);
//文字の設定
textAlign(CENTER);
textSize(100);
//カウント表示
text(int(count / 60), 200, 250);
//変数cに-1(1フレーム毎)
count = count - 1;
//0以下になったとき
if (int(count / 60) <= 0) {
//背景の描画を変更
background(255, 0, 0);
//カウント表示(0)
text(0, 200, 250);
}
console.log(count);
}
lesson11・チャプター4
ここまでの見本27
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
noStroke();
//円形1
fill(255, 0, 0, 126);
ellipse(width / 4 * 1, height / 2, 150, 150);
//円形2
fill(0, 255, 0, 126);
ellipse(width / 4 * 2, height / 2, 150, 150);
//円形
fill(0, 0, 255, 126);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson11・チャプター4
ここまでの見本28
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの大きさ
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
noStroke();
//円形1
fill(255, 0, 0, 126);
ellipse(width / 4 * 1, height / 2, mouseX, mouseX);
//円形2
fill(0, 255, 0, 126);
ellipse(width / 4 * 2, height / 2, mouseY, mouseY);
//円形3
fill(mouseX, mouseY, mouseX / mouseY, 126);
ellipse(width / 4 * 3, height / 2, 150, 150);
}
lesson12・チャプター3
ここまでの見本29
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
background(200);
}
//繰り返し呼び出される処理
function draw() {
//マウスの位置に四角を描画
rect(mouseX, mouseY, 30, 30);
}
lesson12・チャプター4
ここまでの見本30
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
background(200);
}
//繰り返し呼び出される処理
function draw() {
//マウスの位置に四角を描画
rect(mouseX, mouseY, 30, 30);
//マウスクリック判定
if (mouseIsPressed) {
fill(255, 255, 0);
} else {
fill(255, 0, 255);
}
}
lesson15・チャプター3
ここまでの見本31
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(480, 120);
strokeWeight(2);
}
//繰り返し呼び出される処理
function draw() {
background(220);
stroke(255, 0, 0);
line(20, 40, 80, 80);
line(80, 40, 140, 80);
line(140, 40, 200, 80);
line(200, 40, 260, 80);
line(260, 40, 320, 80);
line(320, 40, 380, 80);
line(380, 40, 440, 80);
}
lesson15・チャプター4
ここまでの見本32
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(480, 120);
strokeWeight(2);
}
//繰り返し呼び出される処理
function draw() {
background(220);
stroke(255, 0, 0);
for (var i = 20; i < 400; i += 60) {
line(i, 40, i + 60, 80);
}
}
lesson16・チャプター3
ここまでの見本33
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson16・チャプター4
ここまでの見本34
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ライン
line(50, 100, 180, 30);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson16・チャプター5
ここまでの見本35
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ライン
line(50, 100, 180, 30);
//三角形
triangle(110, 120, 180, 200, 50, 240);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson16・チャプター6
ここまでの見本36
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ライン
line(50, 100, 180, 30);
//三角形
triangle(110, 120, 180, 200, 50, 240);
//四辺形
quad(90, 260, 180, 280, 150, 360, 50, 350);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson16・チャプター7
ここまでの見本37
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ライン
line(50, 100, 180, 30);
//三角形
triangle(110, 120, 180, 200, 50, 240);
//四辺形
quad(90, 260, 180, 280, 150, 360, 50, 350);
//四角形
rect(220, 30, 150, 70);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson16・チャプター8
ここまでの見本38
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ライン
line(50, 100, 180, 30);
//三角形
triangle(110, 120, 180, 200, 50, 240);
//四辺形
quad(90, 260, 180, 280, 150, 360, 50, 350);
//四角形
rect(220, 30, 150, 70);
//楕円形
ellipse(300, 180, 120, 120);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson16・チャプター9
ここまでの見本39
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(255);
strokeWeight(1)
stroke(0);
//ライン
line(50, 100, 180, 30);
//三角形
triangle(110, 120, 180, 200, 50, 240);
//四辺形
quad(90, 260, 180, 280, 150, 360, 50, 350);
//四角形
rect(220, 30, 150, 70);
//楕円形
ellipse(300, 180, 120, 120);
//円弧
arc(300, 320, 120, 120, 0, PI + HALF_PI, PIE);
//ガイドライン
for (var i = 10; i < 400; i = i + 10) {
stroke(100);
strokeWeight(0.1);
line(i, 0, i, 400);
line(0, i, 400, i);
}
//ガイド数値
for (i = 0; i < 400; i = i + 50) {
textSize(8);
text(i, i, 8);
text(i, 0, i);
}
}
lesson17・チャプター3
ここまでの見本40
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
noStroke();
}
//繰り返し呼び出される処理
function draw() {
background(0);
for (var y = 0; y <= height; y += 40) {
for (var x = 0; x <= width; x += 40) {
fill(255, 140, y);
ellipse(x, y, 40, 40);
}
}
}
lesson17・チャプター4
ここまでの見本41
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
noStroke();
}
//繰り返し呼び出される処理
function draw() {
background(0);
for (var y = 0; y <= 20; y += 40) {
for (var x = 0; x <= 400; x += 40) {
fill(255, 140, y);
ellipse(x, y, 40, 40);
}
}
}
lesson18・チャプター3
ここまでの見本42
var x = 200;
var y = 200;
var radius = 12;
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
ellipseMode(RADIUS);
}
//繰り返し呼び出される処理
function draw() {
background(220);
fill(255, 0, 0);
ellipse(x, y, radius, radius);
}
lesson18・チャプター4
ここまでの見本43
var x = 200;
var y = 200;
var radius = 12;
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
ellipseMode(RADIUS);
}
//繰り返し呼び出される処理
function draw() {
background(220);
var d = dist(mouseX, mouseY, x, y);
if (d < radius) {
radius++;
fill(0, 0, 255);
} else {
fill(255, 0, 0);
}
ellipse(x, y, radius, radius);
}
lesson19・チャプター3
ここまでの見本44
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
stroke(255, 0, 255);
line(50, 20, 50, 380);
line(100, 20, 100, 380);
line(150, 20, 150, 380);
line(200, 20, 200, 380);
line(250, 20, 250, 380);
line(300, 20, 300, 380);
line(350, 20, 350, 380);
}
lesson19・チャプター4
ここまでの見本45
//最初に一回だけ呼び出される初期設定
function setup() {
createCanvas(400, 400);
}
//繰り返し呼び出される処理
function draw() {
background(220);
var mx = mouseX / 10;
var offsetA = random(-mx, mx);
var offsetB = random(-mx, mx);
stroke(255, 0, 255);
line(50 + offsetA, 20, 50 - offsetB, 380);
line(100 + offsetA, 20, 100 - offsetB, 380);
line(150 + offsetA, 20, 150 - offsetB, 380);
line(200 + offsetA, 20, 200 - offsetB, 380);
line(250 + offsetA, 20, 250 - offsetB, 380);
line(300 + offsetA, 20, 300 - offsetB, 380);
line(350 + offsetA, 20, 350 - offsetB, 380);
}
lesson24・チャプター2
ここまでの見本46
//プレイヤーの変数
let player;
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//プレイヤーを描画
player.display();
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
}
lesson24・チャプター3
ここまでの見本47
//プレイヤーの変数
let player;
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
lesson24・チャプター4
ここまでの見本48
//プレイヤーの変数
let player;
//スタートしているかどうかの変数
let isStart = false;
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//スタートしているかどうかで処理を分ける
if (isStart) {
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
} else {
//塗りつぶす色の設定
fill(0, 0, 100);
//線を無効
noStroke();
//文字の大きさ
textSize(34);
//アラインの設定
textAlign(CENTER, CENTER);
//文字を描画
text("click to start!", width / 2, height / 2);
//マウスを押したときの処理
if (mouseIsPressed) {
isStart = true;
}
}
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
lesson24・チャプター5
ここまでの見本49
//プレイヤーの変数
let player;
//スタートしているかどうかの変数
let isStart = false;
//敵の変数
let enemys = Array(20);
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//スタートしているかどうかで処理を分ける
if (isStart) {
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
//敵の数だけ繰り返す
for (let enemy of enemys) {
//敵を描画
enemy.display();
}
} else {
//塗りつぶす色の設定
fill(0, 0, 100);
//線を無効
noStroke();
//文字の大きさ
textSize(34);
//アラインの設定
textAlign(CENTER, CENTER);
//文字を描画
text("click to start!", width / 2, height / 2);
//マウスを押したときの処理
if (mouseIsPressed) {
isStart = true;
enemysSetup();
}
}
}
//敵のポジションを設定
function enemysSetup() {
for (let j = 0; j < 2; j++) {
for (let i = 0; i < enemys.length / 2; i++) {
enemys[i + j * enemys.length / 2] = new Enemy(i * 40, 60 - j * 60)
}
}
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
//Enemyクラス
class Enemy {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//辺の長さ
this.sidelength = 30;
//ライフ
this.life = 3;
}
//描画の処理
display() {
//3回繰り返す
for (let i = 0; i < 3; i++) {
//線の色
stroke(160, 80, 100, this.life);
//線の太さ
strokeWeight(3);
//塗りつぶしを無効
noFill();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, this.sidelength * (i + 1) / 3, this.sidelength * (i + 1) / 3);
}
}
}
lesson24・チャプター6
ここまでの見本50
//プレイヤーの変数
let player;
//スタートしているかどうかの変数
let isStart = false;
//敵の変数
let enemys = Array(20);
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//スタートしているかどうかで処理を分ける
if (isStart) {
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
//敵が端に来たかどうか
let enemyIsCameEdge = false;
//敵の数だけ繰り返す
for (let enemy of enemys) {
//敵を移動
enemy.move();
//敵を描画
enemy.display();
//x座標とライフの状況を確認
if ((enemy.x > width || enemy.x < 0) && enemy.life > 0) {
enemyIsCameEdge = true;
}
}
//端にきていたら下に移動
if (enemyIsCameEdge) {
for (let enemy of enemys) {
enemy.shiftDown();
}
}
} else {
//塗りつぶす色の設定
fill(0, 0, 100);
//線を無効
noStroke();
//文字の大きさ
textSize(34);
//アラインの設定
textAlign(CENTER, CENTER);
//文字を描画
text("click to start!", width / 2, height / 2);
//マウスを押したときの処理
if (mouseIsPressed) {
isStart = true;
enemysSetup();
}
}
}
//敵のポジションを設定
function enemysSetup() {
for (let j = 0; j < 2; j++) {
for (let i = 0; i < enemys.length / 2; i++) {
enemys[i + j * enemys.length / 2] = new Enemy(i * 40, 60 - j * 60)
}
}
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
//Enemyクラス
class Enemy {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//辺の長さ
this.sidelength = 30;
//ライフ
this.life = 3;
//移動速度
this.xSpeed = 1.5;
}
//描画の処理
display() {
//3回繰り返す
for (let i = 0; i < 3; i++) {
//線の色
stroke(160, 80, 100, this.life);
//線の太さ
strokeWeight(3);
//塗りつぶしを無効
noFill();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, this.sidelength * (i + 1) / 3, this.sidelength * (i + 1) / 3);
}
}
//下に降りる
shiftDown() {
this.xSpeed *= -1;
this.y += this.sidelength;
}
//移動の処理
move() {
this.x += this.xSpeed;
}
}
lesson24・チャプター7
ここまでの見本51
//プレイヤーの変数
let player;
//スタートしているかどうかの変数
let isStart = false;
//敵の変数
let enemys = Array(20);
//弾の変数
let bullets = [];
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//スタートしているかどうかで処理を分ける
if (isStart) {
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
//敵が端に来たかどうか
let enemyIsCameEdge = false;
//敵の数だけ繰り返す
for (let enemy of enemys) {
//敵を移動
enemy.move();
//敵を描画
enemy.display();
//x座標とライフの状況を確認
if ((enemy.x > width || enemy.x < 0) && enemy.life > 0) {
enemyIsCameEdge = true;
}
}
//端にきていたら下に移動
if (enemyIsCameEdge) {
for (let enemy of enemys) {
enemy.shiftDown();
}
}
//弾の数だけ繰り返す
for (let bullet of bullets) {
//弾を移動
bullet.move();
//弾を表示
bullet.display();
}
//弾の配列を更新
bullets = bullets.filter(b => b.isVisible);
} else {
//塗りつぶす色の設定
fill(0, 0, 100);
//線を無効
noStroke();
//文字の大きさ
textSize(34);
//アラインの設定
textAlign(CENTER, CENTER);
//文字を描画
text("click to start!", width / 2, height / 2);
//マウスを押したときの処理
if (mouseIsPressed) {
isStart = true;
enemysSetup();
}
}
}
//キー操作
function keyPressed() {
//スペースキーを押したら
if (key == ' ') {
//弾を配列に追加
bullets.push(new Bullet(player.x, height - 20));
}
}
//敵のポジションを設定
function enemysSetup() {
for (let j = 0; j < 2; j++) {
for (let i = 0; i < enemys.length / 2; i++) {
enemys[i + j * enemys.length / 2] = new Enemy(i * 40, 60 - j * 60)
}
}
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
//Enemyクラス
class Enemy {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//辺の長さ
this.sidelength = 30;
//ライフ
this.life = 3;
//移動速度
this.xSpeed = 1.5;
}
//描画の処理
display() {
//3回繰り返す
for (let i = 0; i < 3; i++) {
//線の色
stroke(160, 80, 100, this.life);
//線の太さ
strokeWeight(3);
//塗りつぶしを無効
noFill();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, this.sidelength * (i + 1) / 3, this.sidelength * (i + 1) / 3);
}
}
//下に降りる
shiftDown() {
this.xSpeed *= -1;
this.y += this.sidelength;
}
//移動の処理
move() {
this.x += this.xSpeed;
}
}
//Bulletクラス
class Bullet {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//半径
this.r = 8;
//表示するかどうか
this.isVisible = true;
}
//移動の処理
move() {
this.y -= 5;
if (this.y < 0) {
this.isVisible = false;
}
}
//描画の処理
display() {
//線を無効
noStroke();
//塗りつぶす色
fill(20, 80, 100);
//円を描画
ellipse(this.x, this.y, this.r * 2, this.r * 2);
}
}
lesson24・チャプター8
ここまでの見本52
//プレイヤーの変数
let player;
//スタートしているかどうかの変数
let isStart = false;
//敵の変数
let enemys = Array(20);
//弾の変数
let bullets = [];
//最初のゲームかどうかの変数
let isFirstGame = true;
//スコアの変数
let score = 0;
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//スタートしているかどうかで処理を分ける
if (isStart) {
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
//敵が端に来たかどうか
let enemyIsCameEdge = false;
//敵の数だけ繰り返す
for (let enemy of enemys) {
//敵を移動
enemy.move();
//敵を描画
enemy.display();
//x座標とライフの状況を確認
if ((enemy.x > width || enemy.x < 0) && enemy.life > 0) {
enemyIsCameEdge = true;
}
//プレイヤーと敵のy座標を確認
if (player.y <= enemy.y) {
isStart = false;
isFirstGame = false;
}
}
//端にきていたら下に移動
if (enemyIsCameEdge) {
for (let enemy of enemys) {
enemy.shiftDown();
}
}
//弾の数だけ繰り返す
for (let bullet of bullets) {
//弾を移動
bullet.move();
//弾を表示
bullet.display();
//敵の数だけ繰り返す
for (let enemy of enemys) {
//ヒットしていたら
if (bullet.isHit(enemy)) {
//球を非表示
bullet.isVisible = false;
//ライフを減らす
enemy.life -= 1;
//スコアを加算
score += 10;
}
}
}
//弾の配列を更新
bullets = bullets.filter(b => b.isVisible);
//敵がすべてライフが0だったら
if (enemys.every(enemy => enemy.life == 0)) {
//敵をセットアップ
enemysSetup();
//弾を初期化
bullets = [];
}
} else {
//塗りつぶす色の設定
fill(0, 0, 100);
//線を無効
noStroke();
//文字の大きさ
textSize(34);
//アラインの設定
textAlign(CENTER, CENTER);
//文字を描画
if (isFirstGame) {
text("click to start!", width / 2, height / 2);
} else {
text("Game Over!\nclick to start!", width / 2, height / 2);
}
//マウスを押したときの処理
if (mouseIsPressed) {
isStart = true;
enemysSetup();
score = 0;
}
}
//線を無効
noStroke();
//塗りつぶす色の設定
fill(0, 0, 100);
//アラインの設定
textAlign(LEFT, CENTER);
//文字の大きさ
textSize(16);
//文字を描画
text("score: " + score, 20, height - 20);
}
//キー操作
function keyPressed() {
//スペースキーを押したら
if (key == ' ') {
//弾を配列に追加
bullets.push(new Bullet(player.x, height - 20));
}
}
//敵のポジションを設定
function enemysSetup() {
for (let j = 0; j < 2; j++) {
for (let i = 0; i < enemys.length / 2; i++) {
enemys[i + j * enemys.length / 2] = new Enemy(i * 40, 60 - j * 60)
}
}
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
//Enemyクラス
class Enemy {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//辺の長さ
this.sidelength = 30;
//ライフ
this.life = 3;
//移動速度
this.xSpeed = 1.5;
}
//描画の処理
display() {
//3回繰り返す
for (let i = 0; i < 3; i++) {
//線の色
stroke(160, 80, 100, this.life);
//線の太さ
strokeWeight(3);
//塗りつぶしを無効
noFill();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, this.sidelength * (i + 1) / 3, this.sidelength * (i + 1) / 3);
}
}
//下に降りる
shiftDown() {
this.xSpeed *= -1;
this.y += this.sidelength;
}
//移動の処理
move() {
this.x += this.xSpeed;
}
}
//Bulletクラス
class Bullet {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//半径
this.r = 8;
//表示するかどうか
this.isVisible = true;
}
//移動の処理
move() {
this.y -= 5;
if (this.y < 0) {
this.isVisible = false;
}
}
//描画の処理
display() {
//線を無効
noStroke();
//塗りつぶす色
fill(20, 80, 100);
//円を描画
ellipse(this.x, this.y, this.r * 2, this.r * 2);
}
//当たり判定
isHit(enemy) {
//ライフが0なら当たらない
if (enemy.life == 0) {
return false;
}
//弾と敵の距離が弾の半径+敵の1辺の長さの半分より短くなったら当たり
if (dist(this.x, this.y, enemy.x, enemy.y) < this.r + enemy.sidelength / 2) {
return true;
}
//それ以外は当たらない
return false;
}
}
lesson24・チャプター9
ここまでの見本53
//プレイヤーの変数
let player;
//スタートしているかどうかの変数
let isStart = false;
//敵の変数
let enemys = Array(20);
//弾の変数
let bullets = [];
//最初のゲームかどうかの変数
let isFirstGame = true;
//スコアの変数
let score = 0;
//最初に一回だけ呼び出される初期設定
function setup() {
//キャンバスの設定
createCanvas(480, 640);
//カラーモードの設定
colorMode(HSB, 360, 100, 100, 3);
//Playerクラスのインスタンスを生成
player = new Player();
}
//繰り返し呼び出される処理
function draw() {
//背景色設定
background(200, 80, 30);
//スタートしているかどうかで処理を分ける
if (isStart) {
//プレイヤーを移動
player.move();
//プレイヤーを描画
player.display();
//敵が端に来たかどうか
let enemyIsCameEdge = false;
//敵の数だけ繰り返す
for (let enemy of enemys) {
//敵を移動
enemy.move();
//敵を描画
enemy.display();
//x座標とライフの状況を確認
if ((enemy.x > width || enemy.x < 0) && enemy.life > 0) {
enemyIsCameEdge = true;
}
//プレイヤーと敵のy座標を確認
if (player.y <= enemy.y) {
isStart = false;
isFirstGame = false;
}
}
//端にきていたら下に移動
if (enemyIsCameEdge) {
for (let enemy of enemys) {
enemy.shiftDown();
}
}
//弾の数だけ繰り返す
for (let bullet of bullets) {
//弾を移動
bullet.move();
//弾を表示
bullet.display();
//敵の数だけ繰り返す
for (let enemy of enemys) {
//ヒットしていたら
if (bullet.isHit(enemy)) {
//球を非表示
bullet.isVisible = false;
//ライフを減らす
enemy.life -= 1;
//スコアを加算
score += 10;
}
}
}
//弾の配列を更新
bullets = bullets.filter(b => b.isVisible);
//敵がすべてライフが0だったら
if (enemys.every(enemy => enemy.life == 0)) {
//敵をセットアップ
enemysSetup();
//弾を初期化
bullets = [];
}
} else {
//塗りつぶす色の設定
fill(0, 0, 100);
//線を無効
noStroke();
//文字の大きさ
textSize(34);
//アラインの設定
textAlign(CENTER, CENTER);
//文字を描画
if (isFirstGame) {
text("click to start!", width / 2, height / 2);
} else {
text("Game Over!\nclick to start!", width / 2, height / 2);
}
//マウスを押したときの処理
if (mouseIsPressed) {
isStart = true;
enemysSetup();
score = 0;
}
}
//線を無効
noStroke();
//塗りつぶす色の設定
fill(0, 0, 100);
//アラインの設定
textAlign(LEFT, CENTER);
//文字の大きさ
textSize(16);
//文字を描画
text("score: " + score, 20, height - 20);
}
//キー操作
function keyPressed() {
//スペースキーを押したら
if (key == ' ') {
//弾を配列に追加
bullets.push(new Bullet(player.x, height - 20));
}
}
//敵のポジションを設定
function enemysSetup() {
for (let j = 0; j < 2; j++) {
for (let i = 0; i < enemys.length / 2; i++) {
enemys[i + j * enemys.length / 2] = new Enemy(i * 40, 60 - j * 60)
}
}
}
//Playerクラス
class Player {
constructor() {
//x座標
this.x = width / 2;
//y座標
this.y = height - 20
//移動速度
this.speed = 5;
}
//描画の処理
display() {
//塗りつぶす色
fill(200, 80, 100);
//線を無効
noStroke();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, 20, 50, 5);
}
//移動の処理
move() {
//右へ移動
if (keyIsDown(RIGHT_ARROW)) {
this.x += this.speed;
//左へ移動
} else if (keyIsDown(LEFT_ARROW)) {
this.x -= this.speed;
}
//左移動の制限
if (this.x < 0) {
this.x = 0;
}
//右移動の制限
if (width < this.x) {
this.x = width;
}
}
}
//Enemyクラス
class Enemy {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//辺の長さ
this.sidelength = 30;
//ライフ
this.life = 3;
//移動速度
this.xSpeed = 1.5;
}
//描画の処理
display() {
//3回繰り返す
for (let i = 0; i < 3; i++) {
//線の色
stroke(160, 80, 100, this.life);
//線の太さ
strokeWeight(3);
//塗りつぶしを無効
noFill();
//四角の描画元の指定
rectMode(CENTER);
//四角を描画
rect(this.x, this.y, this.sidelength * (i + 1) / 3, this.sidelength * (i + 1) / 3);
}
}
//下に降りる
shiftDown() {
this.xSpeed *= -1;
this.y += this.sidelength;
}
//移動の処理
move() {
this.x += this.xSpeed;
}
}
//Bulletクラス
class Bullet {
constructor(_x, _y) {
//x座標
this.x = _x;
//y座標
this.y = _y;
//半径
this.r = 8;
//表示するかどうか
this.isVisible = true;
}
//移動の処理
move() {
this.y -= 5;
if (this.y < 0) {
this.isVisible = false;
}
}
//描画の処理
display() {
//線を無効
noStroke();
//塗りつぶす色
fill(20, 80, 100);
//円を描画
ellipse(this.x, this.y, this.r * 2, this.r * 2);
}
//当たり判定
isHit(enemy) {
//ライフが0なら当たらない
if (enemy.life == 0) {
return false;
}
//弾と敵の距離が弾の半径+敵の1辺の長さの半分より短くなったら当たり
if (dist(this.x, this.y, enemy.x, enemy.y) < this.r + enemy.sidelength / 2) {
return true;
}
//それ以外は当たらない
return false;
}
}