to qhc ;取火柴游戏
draw
ht
make "q 0 make
"qq 0 make "n 100 hc 1 :n 2 12
setpc 12 setfont
"黑体 30 1
pu setxy se -110
200 pd tt "取火柴游戏
setpc 9 setfont
"楷体 20 1 pu setxy se -270 150 pd
tt[现在火柴的根数\:]
pu setxy se -235
-194 pd ; setfont "仿宋 2 setpc 2
tt[每次只能取1~10根火柴。先取完者为胜。]
label
"by_
;博弈计算入口
sx1 pu setxy se
-70 150 pd setpc 9 tt :n
if :n>0
then[pu setpc 12 setx -15 pd \
tt[请输入取几根并按回车键]]
(pr "现在有 :n
"根火柴,请输入取几根火柴并按回车键!)
make "qq rq make
"w count :qq
make "q
(ascii(last :qq))-48
if :w>1 [make
"q :q+((ascii(first :qq))-48)*10]
if (or :q<1
:q>10) then[\
pr[你输入的是游戏规则所不允许的根数!] go "by_]
(pr "你取走火柴的根数是
:q)
sx2 pu setxy se
-270 110 pd setpc 4
tt[你取走火柴的根数是\:]
pu setx -18 pd tt
:q
make "n
:n-:q
if :n=0 then[sx1
pu setxy se -30 150 pd \
setpc 12
tt[火柴已被取完!你获胜!]\
pu setx -68
setpc 9 pd tt :n hc 1 100 7 8 \
(pr "火柴已被取光!你获胜!游戏结束。) go "end_]
if (0=remainder
:n 11) then[\
make "j random
10]else[make "j :n-11*(int(:n/11))]
(pr "计算机取走火柴的根数是
:j)
pu setx 23 pd
setpc 13 tt[计算机取走的根数\:]
pu setx 253 pd tt
:j
make "n
:n-:j
hc :n+1 100 7
8
if :n=0 then[sx1
pu setxy se -50 150 pd \
setpc 12
tt[火柴已被取光!计算机获胜!]\
pu setx -68
setpc 9 pd tt :n hc 1 100 7 8 \
(pr "火柴已被取光!计算机获胜!游戏结束。) go "end_]
if :n>0 go
"by_
label
"end_
;退出博弈出口
end
to hc :a :b :y1 :y2
;画所有火柴的子程序
for "i :a-1 :b-1[pu setxy se
(remainder :i 25)*19-230 \
80-(int(:i/25)+1)*64 pd setpc :y1 setw 6 fd 47
\
setw 10 setpc
:y2 dot se xcor ycor]
end
to sx1 ;对第一行提示的刷新
setw 30 setpc 15 pu setxy se -58
138 pd setx 270
end
to sx2 ;对第二行提示的刷新
setw 30 setpc 15 pu setxy se -270
95 pd setx 280
end