プログラムを書かせてみた

プログラム言語の「N88-BASIC」は知っていますか?

はい、N88-BASICは、日本のNEC PC-8801シリーズのパソコンで使用されていたBASICプログラム言語です。N88-BASICは、1981年にNECが発売したPC-8801のオペレーティングシステムの一部として提供されました。N88-BASICは、独自の構文やコマンドを持っており、NEC PC-8801シリーズのユーザーによって広く使用されました。また、PC-8801シリーズは、日本で最も人気のあるパソコンの1つであったため、N88-BASICは日本のコンピューター文化において重要な役割を果たしています。

プログラムが書けますか?

はい、プログラムを書くことができます。どのプログラミング言語を使用するかによって、私がどの程度助けることができるかが異なる場合がありますが、必要に応じてお手伝いいたします。どのような種類のプログラムを書きたいのか、具体的にお知らせください。

n88BASICでアナログ時計を作りたいのですが

N88-BASICを使用してアナログ時計を作成するには、グラフィックス機能を使って時計の盤面を描画し、タイマー機能を使用して秒針、分針、時針を動かす必要があります。以下は、アナログ時計を描画するための基本的なコード例です。

10 SCREEN 1 ' グラフィックスモード1を設定
20 CLS ' 画面をクリア
30 COLOR 1 ' 線の色を黒に設定
40 CIRCLE 200, 200, 150 ' 中心が(200,200)、半径が150の円を描画
50 WHILE 1 ' 無限ループ
60 t = TIME$ ' 現在の時刻を取得
70 hh = VAL(MID$(t, 1, 2)) ' 時間を抽出
80 mm = VAL(MID$(t, 4, 2)) ' 分を抽出
90 ss = VAL(MID$(t, 7, 2)) ' 秒を抽出
100 ' 時針を描画
110 xh = 200 + 100 * SIN((hh + mm / 60) * 30 * PI / 180)
120 yh = 200 - 100 * COS((hh + mm / 60) * 30 * PI / 180)
130 LINE 200, 200, xh, yh
140 ' 分針を描画
150 xm = 200 + 120 * SIN(mm * 6 * PI / 180)
160 ym = 200 - 120 * COS(mm * 6 * PI / 180)
170 LINE 200, 200, xm, ym
180 ' 秒針を描画
190 xs = 200 + 140 * SIN(ss * 6 * PI / 180)
200 ys = 200 - 140 * COS(ss * 6 * PI / 180)
210 LINE 200, 200, xs, ys
220 WAIT 60 ' 1分待つ
230 CLS ' 画面をクリア
240 WEND

このように、各行に行番号があります。行番号を使用して、プログラムの各部分を制御し、必要に応じてプログラムを修正できます。


懐かしい、もうpc98は壊れて処分したけど、今はjavascriptでプログラムして楽しんでいます

そうですね、PC-98は懐かしいですね。現在ではJavaScriptなどのWeb開発言語が主流となっていますが、N88-BASICなどの古いプログラミング言

それではjavascriptでアナログ時計のプログラムを書いてください

以下はJavaScriptでアナログ時計のプログラムの例です。このコードは、Canvasを使用して、現在の時刻に基づいてアナログ時計を描画します。


<!DOCTYPE html>
<html>
<head>
<title>Analog Clock
<style>
canvas {
border: 1px solid black;
}
</style>
</head>
<body onload="drawClock()">
<canvas id="clock" width="300" height="300"></canvas>
<script>
function drawClock() {
var canvas = document.getElementById("clock");
var ctx = canvas.getContext("2d");
var radius = canvas.width / 2;
ctx.translate(radius, radius);
radius = radius * 0.9;
setInterval(drawFace, 1000);

function drawFace() {
ctx.clearRect(-radius, -radius, canvas.width, canvas.height);
ctx.beginPath();
ctx.arc(0, 0, radius, 0, 2*Math.PI);
ctx.fillStyle = "white";
ctx.fill();
ctx.lineWidth = radius*0.1;
ctx.strokeStyle = "black";
ctx.stroke();
ctx.beginPath();
ctx.arc(0, 0, radius*0.1, 0, 2*Math.PI);
ctx.fillStyle = "black";
ctx.fill();

var now = new Date();
var hour = now.getHours();
var minute = now.getMinutes();
var second = now.getSeconds();

// draw hour hand
hour = hour % 12;
hour = (hour * Math.PI / 6) +
(minute * Math.PI / (6 * 60)) +
(second * Math.PI / (360 * 60));
drawHand(ctx, hour, radius*0.5, radius*0.07);

// draw minute hand
minute = (minute * Math.PI / 30) + (second * Math.PI / (30 * 60));
drawHand(ctx, minute, radius*0.8, radius*0.07);

// draw second hand
second = (second * Math.PI / 30);
drawHand(ctx, second, radius*0.9, radius*0.02);
}

function drawHand(ctx, pos, length, width) {
ctx.beginPath();
ctx.lineWidth = width;
ctx.lineCap = "round";
ctx.moveTo(0, 0);
ctx.rotate(pos);
ctx.lineTo(0, -length);
ctx.stroke();
ctx.rotate(-pos);
}
}
</script>
</body>
</html>

このコードでは、HTML5のcanvas要素を使用して、アナログ時計を描画しています。drawClock()関数は、setInterval()メソッドを使用して、毎秒アナログ時計を再描画します。drawFace()関数は、現在の時刻に基づいて、時、分、秒の針を描画します。

drawHand()関数は、針を描画するために使用されます。drawFace()関数で呼び出され、中心からの距離、幅、角度を指定して針を描画します。

このプログラムをブラウザで開くと、アナログ時計が表示されます。





ありがとう、私の昔書いたものと比べて見ます

どういたしまして。もしあなたが持っているコードに何か問題があれば、遠慮なくお知らせください。よりよいアナログ時計を作るためにお手伝いできるかもしれません。


MENUへ戻る