エラーが発生しています。

かえるの合唱の輪唱

by YOS G-spec, at 2018年2月 3日 03:53:36

powered by hsp3dish.js / OpenHSP

コメント
説明

HSPのコルーチンのイテレータ的用法のテスト。

HSPDishではモジュール変数は使えないとか時々聞いたりするけど、特にそういうことはなさそうか。
これが起因かはわからないけど、モジュール関数内でgosubすると何かが狂い、関数で値が返らなくなったりとか色々おかしなことが起きてハマったのは苦労した。

#include "hsp3dish.as"
#cmpopt varinit 1

screen 0,640,480
redraw 0
color 0,0,0
boxf
color 187,187,187
font "monospace",14
pos 10,5

;かえるの合唱イテレータ
#module __Caelin co,value,user
	#define yieId(%1="") value=%1%c newlab co,1: return
	;; ceNextValue関数のお墓
	;#modcfunc ceNextValue
	;	gosub co: return value
	#modfunc ceNext
		gosub co: return
	#modcfunc ceValue
		return value
	#define global Caelin(%1,%2) dimtype %1,5 :newmod %1,__Caelin,%2

	#modinit str _user
		user=_user
		newlab co,1: return
		yieId user+"『かえるのうたが』"
		yieId user+"『きこえてくるよ』"
		yieId user+"『クワ クワ クワ クワ』"
		yieId user+"『ケケケケケケケケ』"
		yieId user+"『クワクワクワ』"
		yieId user+"『』"
		value=""
	return
#global

#module Program
	#deffunc main
		;イテレータオブジェクトのセット
		Caelin usrA,"A"
		Caelin usrB,"B"
		Caelin usrC,"C"

		;輪唱
		repeat 10
			ceNext usrA
			lin=ceValue(usrA)
			if 1<=cnt {
				ceNext usrB
				lin+=ceValue(usrB)
			}
			if 2<=cnt {
				ceNext usrC
				lin+=ceValue(usrC)
			}
			strrep lin,"\"",""
			mes lin
		loop
	return
#global
main

redraw 1

作成者
icon

YOS G-spec

ここはユーザの紹介文

詳しく...


関連プログラム