なんとなくHSP3用のHit&Blowのコードを書きました。以前はjsで同様に実装したことがあるけど以前のはSwitchでgoto紛いのことをやって凄いことになってた気がする。http://gspectool.ifdef.jp/hitblow/DOS.html
なんとなくHSP3用のHit&Blowのコードを書きました。以前はjsで同様に実装したことがあるけど以前のはSwitchでgoto紛いのことをやって凄いことになってた気がする。http://gspectool.ifdef.jp/hitblow/DOS.html
#runtime "hsp3cl" #cmpopt varinit 1 randomize #module Program #defcfunc getDigit sdim ln repeat mes "桁数を入力してください > ",1 input ln,,2 digit=int(ln) if 1<=digit & digit<=9: break mes "1-9の数字を入力してください。" loop return digit #defcfunc getSeq int _digit #const nums 10 dim seq,nums repeat nums seq.cnt=cnt loop repeat nums-1,1: i=nums-cnt r=rnd(i+1) tmp=seq.i seq.i=seq.r seq.r=tmp loop s="" repeat _digit s+=seq.cnt loop return s #defcfunc getInputSeq int _digit,int _chkCnt numList="0123456789" sdim ln repeat mes strf("[%d] ",_chkCnt),2 input ln,,2 lnLength=strlen(ln) isDigit=_digit=lnLength isNum=1 repeat lnLength if -1=instr(numList,,strmid(ln,cnt,1)){ isNum=0 break } loop isUnique=1 repeat lnLength i=cnt repeat lnLength if i!cnt && strmid(ln,i,1)=strmid(ln,cnt,1) { isUnique=0 break } loop if 0=isUnique: break loop if isDigit & isNum & isUnique: break mes "入力が不正です。" loop return ln #deffunc main digit=getDigit() ans=getSeq(digit) repeat user=getInputSeq(digit,cnt) hit=0 blow=0 repeat digit if strmid(ans,cnt,1)=strmid(user,cnt,1) { hit++ } else:if -1!instr(ans,,strmid(user,cnt,1)) { blow++ } loop mes strf("hit: %d blow: %d",hit,blow) if hit=digit: break loop mes "Congratulation!" sdim ln input ln,,2 return #global main