プログラミング

【JavaScript】糸通し・SFCaveのにょろにょろを実装

懐かしのガラケーアプリ SFCave!!

懐かしくないですか??SFCaveとか糸通し!なんだっけ?って人はこの画像を見れば思い出すのではないでしょうか?

今回はこのアプリに出てくる、「ボタンを押すと上昇、放っとくと落ちるにょろにょろ」の実装に成功したので紹介です!

キーボードのどこでも押している間、にょろにょろが上昇し、離すと下降します!

コードはこんな感じ

<!DOCTYPE html>
<html lang="ja">
<head>
	<meta charset="UTF-8">
	<title>Caveman</title>
	<script src="main.js" defer></script>
</head>
<body>
	<canvas id="main" width=500 height=500></canvas>
</body>
</html>
const main = document.getElementById("main");
const context = main.getContext("2d");

const gravity = 9.8 / 50;

let bX = 125;
let bY = 250;
let signal = "false";
let bVelY = -5;
let balls =[];

class Ball {
	constructor(c) {
		this.bX = 125 - 5 * c;
		this.bY = 250;
		this.bVelY = -5
	}
	draw() {
		context.fillStyle = "#fff";
		context.fillRect(this.bX, this.bY, 5, 5);
	}
}

function draw() {
	context.fillStyle = "#000";
	context.fillRect(0, 0, 500, 500);
}

function tick () {
	document.addEventListener('keydown', function() {
		signal = "true";
	});
	document.addEventListener('keyup', function() {
		signal = "false";
	});

	if(signal === "true") {
		balls[0].bVelY -= gravity;
	}
	else{
		balls[0].bVelY += gravity;
	}
	balls[0].bY += balls[0].bVelY;
}

function start() {
	for(i = 0; i < 20; i++) {
		balls.push(new Ball(i));
	}
}
function makeBall() {
	for(let b of balls) {
		b.draw();
	}
}

function addBall() {
	for(i = 0; i < 20; i++) {
		balls.push(new Ball(i));
	}
}

function cave() {
	for(i = 19; i > 0; i--) {
		if(!(balls[i].bY === balls[i - 1])) {
			balls[i].bY = balls[i - 1].bY;
		}
	}
}

function move() {
	cave();
	tick();
	draw();
	makeBall();
	
	window.requestAnimationFrame(move);
}

start();
move();

コードが少し汚いですが、ご了承ください。。。

HTMLには<canvas>タグで描写できるキャンバスを書いてあるのみです。JavaScriptで描画しながらアニメーションをつけて実装しています。

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA