けっこう前に書いたスクリプトが今回の質問に合うものだったので、
質問に合わせて少し手を加えたものを載せておきます。
(選択肢の位置がおかしいのは当時作ろうとしていたソフトの名残)
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