それだと移動は難しいですね・・・出来なくはないですけど。動かさないものはそれで良いとして動かすものは配列で座標を持たせる。仮に5個だとして、まず初期設定。
DIM X[5],Y[5] ’配列を使う宣言
FOR I=0 TO LEN(X)-1 ’初期値を代入
X[I]=RND(48)+1:Y[I]=RND(28)+1
NEXT
その後、ループ。
@LOOP ’ループ
FOR I=0 TO LEN(X)-1
LOCATE X[I],Y[I]:?" " ’今の位置を消す
R=RND(4) ’どっちに動くか
IF R==0 && X[I]<48 THEN INC X[I]
IF R==1 && X[I]>1 THEN DEC X[I]
IF R==2 && Y[I]<28 THEN INC Y[I]
IF R==3 && Y[I]>1 THEN DEC Y[I]
LOCATE X[I],Y[I]:?"●" ’新しい位置に表示
NEXT
VSYNC 10
GOTO @LOOP
ZEXさんとみむさんの手法は●が主体のオブジェクト方式。大概の場合はこれ。
とくちゃんさんの手法は空間が主体のセルオートマトン方式。コンウェイのライフゲームはこれね。
セルオートマトンの場合は、現世代の空間と次世代の空間を別に持たないとダメです。現世代のセル空間をスキャンして、一定のルールに従って、次世代のセル空間を決定する。ぐたいてきには
for y = 0 to ymax
for x = 0 to xmax
if 現世代のセル[x,y]=="●" then
次世代のセル[x+rnd(3)-1,y+rnd(3)-1]="●"
endif
next
next