けっこう前に書いたスクリプトが今回の質問に合うものだったので、
質問に合わせて少し手を加えたものを載せておきます。
(選択肢の位置がおかしいのは当時作ろうとしていたソフトの名残)
cls 4
ans=1
k=0
*modeselect
pos 0,0
color 255,255,255
;選択肢の一覧を記述
telq(0)="VS COM"
telq(1)="VS 2P"
telq(2)="QUIT"
repeat 3;いったんそれを描画
pos 150,70+(cnt*160)
mes telq(cnt)
telx(cnt)=ginfo_mesx
await
loop
tely=ginfo_mesy
repeat
stick k
;ansの値が何番目を選んでいるかを示す
if ans>0{
poy=70+(160*(ans-1))
redraw 0
repeat 3
color 0,0,0
boxf 145,65+(cnt*160),155+telx(cnt),75+(cnt*160)+tely;選んでいない選択肢の枠を消す
pos 150,70+(cnt*160)
color 255,255,255
mes telq(cnt)
await
loop
color 0,255,0
boxf 145,poy-5,155+telx(ans-1),poy+5+tely;選んでいる選択肢を塗りつぶす
color 0,0,0
boxf 147,poy-3,153+telx(ans-1),poy+3+tely;内部を背景色で塗りつぶして枠にする
pos 150,poy
color 255,255,255
mes telq(ans-1)
redraw 1
}
if k&2:ans-:if ans<1:ans=3;上キーで上に移動
if k&8:ans+:if ans>3:ans=1;下キーで下に移動
if k&32:if ans>0:break;エンターキーで決定
await 10
loop
sdim telq,1,1
if ans=1:goto *vscpu
if ans=2:goto *vsply
if ans=3:goto *end0
*vscpu
wait 10
cls
dialog "VS CPU が選ばれました"
stop
*vsply
wait 10
cls
dialog "VS 2P が選ばれました"
stop
*end0
wait 10
cls
dialog "QUIT が選ばれました"
end