ChatGPTで、マトリックスに出てくる縦スクロール・アニメを作るjsコードを書いてもらった

ChatGPTで、マトリックスに出てくる縦スクロール・アニメを作るjsコードを書いてもらいました。

先に結果から。下記のように成功しました。表示する要素に指定する文字は、0-9,A-Zだけだと変化が乏しいので、記号や空白も混ぜて調整してます。記号とか漢字も混ぜると、より、それっぽくなるかも。

 

指示文(プロンプト):

映画マトリックスに出てくる、文字が上から下に縦スクロールしていくアニメーションを表示するjsプログラムを書いてください。HTMLの <canvas> 要素を使用してください。

 

回答:
  • 以下は、JavaScriptを使用して、マトリックスのように上から下に縦に流れる文字列アニメーションを表示する方法の例です。
  • このスクリプトは、ランダムに選択した文字列の配列から文字を選択し、指定された文字列の長さのマトリックスを初期化します。
  • それから、一定の間隔で、各行に対して文字列を表示し、配列の先頭に新しいランダムな文字を追加し、配列の最後から文字を削除して、アニメーションを作成します。
  • HTMLの canvas 要素を使用して、同じアニメーションを作成します。文字列を表示するために fillText() を使用し、キャンバスの背景を透過させるために fillRect() を使用しています。
  • また、CSScanvas 要素をスタイル設定しています。

<!DOCTYPE html>
<html>
<head>
	<title>Matrix Animation</title>
	<style>
		body {
			background-color: black;
			margin: 0;
			padding: 0;
			overflow: hidden;
		}
		canvas {
			display: block;
		}
	</style>
</head>
<body>
	<canvas id="canvas"></canvas>
	<script>
		// canvas要素を取得
		var canvas = document.getElementById("canvas");

		// canvasの大きさを設定
		canvas.width = window.innerWidth;
		canvas.height = window.innerHeight;

		// canvasの描画コンテキストを取得
		var ctx = canvas.getContext("2d");

		// 文字列の配列
		var chars = [" "," "," "," "," "," "," "," "," "," "," "," "," ",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".","・","・","・","・","・","+","+","*","."*".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".",".","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];

		// 文字列をランダムに選択
		function randomChar() {
			return chars[Math.floor(Math.random() * chars.length)];
		}

		// 文字列の長さ
		var length = 100;

		// 初期化
		var matrix = [];
		for (var i = 0; i < length; i++) {
			matrix[i] = [];
			for (var j = 0; j < window.innerHeight / 20; j++) {
				matrix[i][j] = randomChar();
			}
		}

		// 文字列を表示
		function draw() {
			ctx.fillStyle = "rgba(0, 0, 0, 0.1)";
			ctx.fillRect(0, 0, canvas.width, canvas.height);

			ctx.fillStyle = "#0F0"; // 文字の色
			ctx.font = "15px Courier"; // フォント
			for (var i = 0; i < length; i++) {
				var row = matrix[i];
				for (var j = 0; j < row.length; j++) {
					var char = row[j];
					ctx.fillText(char, i * 20, j * 20);
				}
				matrix[i].unshift(randomChar());
				matrix[i].pop();
			}
		}

		// 一定間隔でアニメーションを表示
		setInterval(draw, 100);
	</script>
</body>
</html>