【チラシのうら 28日目】乱数を実装してみた。
RND関数(乱数)を実装してみました。
ESP32にはWi-Fiアンテナのノイズを乱数シードに使用するハードウエア乱数モードがあるので
RANDOMIZEに数値指定/SOFTモード/ESP32モードを付けました。
乱数のサンプルに迷路作成を動かしてみました。
今回もバグ大量発生(;^ω^)
- THEN区のPRINT文字が文字化けする ※参照場所を間違っていた。
- DIM 宣言の添え字に定数値しか使えない ※バグではなく仕様。なぜか定数しか指定できないと思い込んでいた。
------------------------
M5Z-80 BASIC Ver.0.3a
------------------------
heap check = OK
Largest Internal = 110580(107.988KByte)
free = 217448(212.352KByte)
Largest PSRAM = 0(0)
Stack Free = 6156 bytes
READY.
list
10 REM ***********************
20 REM * MAZE GENERATOR
30 REM * 棒倒し法
40 REM ***********************
50 RANDOMIZE ESP32
60 W=21
70 H=21
80 DIM M(W,H)
90 REM ----- 全部通路にする -----
100 FOR Y=0 TO H-1
110 FOR X=0 TO W-1
120 M(X,Y)=0
130 NEXT X
140 NEXT Y
150 REM ----- 外周を壁に -----
160 FOR X=0 TO W-1
170 M(X,0)=1
180 M(X,H-1)=1
190 NEXT
200 FOR Y=0 TO H-1
210 M(0,Y)=1
220 M(W-1,Y)=1
230 NEXT
240 REM ----- 柱を立てる -----
250 FOR Y=2 TO H-3 STEP 2
260 FOR X=2 TO W-3 STEP 2
270 M(X,Y)=1
280 NEXT
290 NEXT
300 REM ----- 棒倒し -----
310 FOR Y=2 TO H-3 STEP 2
320 FOR X=2 TO W-3 STEP 2
330 D=INT(RND(1)*4)
340 IF Y>2 THEN GOTO 380
350 IF D=0 THEN DX=0:DY=-1
360 IF D=1 THEN DX=1:DY=0
370 IF D=2 THEN DX=0:DY=1
375 IF D=3 THEN DX=-1:DY=0
376 GOTO 420
380 D=INT(RND(1)*3)+1
390 IF D=1 THEN DX=1:DY=0
400 IF D=2 THEN DX=0:DY=1
410 IF D=3 THEN DX=-1:DY=0
420 M(X+DX,Y+DY)=1
430 NEXT
440 NEXT
450 REM ----- 表示 -----
460 FOR Y=0 TO H-1
470 FOR X=0 TO W-1
480 IF M(X,Y)=1 THEN PRINT "#";
490 IF M(X,Y)=0 THEN PRINT " ";
500 NEXT
510 PRINT
520 NEXT
530 END
READY.
run
#####################
# # # # #
# ### ##### # # # ###
# # # #
##### # ##### ##### #
# # # # #
### # ####### # # # #
# # # # # #
# # # ##### ### #####
# # # # #
# ### ### # # # ### #
# # # # # # #
# ##### # # ####### #
# # # # #
# # # ### ### ### # #
# # # # # # # #
# ##### ####### # ###
# # # #
# ### # # ### ### # #
# # # # # #
#####################
READY.
run
#####################
# # # #
# ### # # ### ### # #
# # # # # #
# ##### # ### # ### #
# # # #
### ##### # ### ### #
# # # # # #
### ### # # # ### # #
# # # # # # # #
### ########### # # #
# # # #
##### ##### ### #####
# # #
##### ##### #########
# # #
# # # ### # ### ### #
# # # # # #
##### ##### ### #####
# # #
#####################
READY.
ここまでの成果
- 乱数が使えるようになった。
- IF THENのバグ修正
- DIMの仕様ミス修正
| 固定リンク
「BASIC」カテゴリの記事
- 【チラシのうら 42日目】約3倍 高速化しました。(2026.08.30)
- 【チラシのうら 41日目】便利だわ GitHubCopilot(2026.08.29)
- 【チラシのうら 40日目】実行中間コード化(2)(2026.08.25)
- 【チラシのうら 39日目】実行中間コード化(2026.08.22)
- 【チラシのうら 37日目】SDカードユニットの交換で問題解決(2026.08.13)
この記事へのコメントは終了しました。

コメント