|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由MySQL用来存储数据的文件格式以已经被广泛地测试过,但是总是有外部情况可以导致数据库表被破坏:中文
最近达芬奇暗码热抄,也从网上找来看了,对中文官网首页的游戏发生了乐趣.因为是小时分看过这个数学题,如今俄然看到备感亲热.以是用SQL摹拟了一个.(中文官方网站见http://davincicode.leiling.com/)
createprocdavinci(@intarrayvarchar(1000))as--******************--2004.7--******************declare@spvarchar(1)set@sp=,
declare@iint,@jint,@maxqint
--初始化ifcharindex(@sp,@intarray)=0beginifobject_id(tempdb..##t)isnotnulldroptable##t
ifisnumeric(@intarray)=0beginprint输出参数必需是数字。returnendcreatetable##t(idintidentity(1,1),qint)set@i=floor(10+rand()*30)insertinto##t(q)values(@i)print方针:+cast(@iasvarchar(2))end
--循环游戏elsebegin--判别游戏是不是停止ifobject_id(tempdb..##t)isnullbeginprint本回合已停止,年夜侠请从头来过!returnend
--考证用户输出数正当性ifisnumeric(right(@intarray,charindex(@sp,reverse(@intarray))-1))=0beginprint输出参数必需是数字。returnendset@i=cast(right(@intarray,charindex(@sp,reverse(@intarray))-1)asint)set@maxq=(selectmax(q)from##twhereid>1)if@i<=isnull(@maxq,0)beginprint输出参数必需年夜于以后最年夜数。returnendif@i-isnull(@maxq,1)>3beginprint输出参数凌驾局限。returnendif@i>(selectqfrom##twhereid=1)beginprint输出参数不得年夜于方针数。returnend
--拔出用户输出数insertinto##t(q)values(@i)print你输出:+cast(@iasvarchar(2))--判别胜败if@i=(selectqfrom##twhereid=1)begindroptable##tprint-------------------------------------print胜负乃兵家常事,年夜侠请从头来过!returnendif@i=(selectqfrom##twhereid=1)-1begindroptable##tprint达芬奇:+cast(@i+1asvarchar(2))print-----------------print祝贺!你得胜了。returnend
--拔出达芬奇应对数if(selectq-1from##twhereid=1)%4=0set@j=(selectcount(id)from##twhereid%2=1)*4elsebeginset@j=(selectq-1from##twhereid=1)%4+((selectcount(id)from##twhereid%2=1)-1)*4if@j<(selectmax(q)from##twhereid>1)set@j=@j+4endif@i=@jset@j=@j+floor(1+rand()*3)insertinto##tvalues(@j)print达芬奇:+cast(@jasvarchar(2))end
--完全版显现select方针数=q,你输出=null,达芬奇=null,下次输出=1,2,3from##twhereid=1unionallselect方针数=null,你输出,达芬奇,下次输出=casewhencharindex(,+方针数+,,,+下次输出+,)=0then下次输出elseleft(left(下次输出,charindex(,+方针数+,,,+下次输出+,)+len(方针数)),len(left(下次输出,charindex(,+方针数+,,,+下次输出+,)+len(方针数)))-charindex(,,reverse(left(下次输出,charindex(,+方针数+,,,+下次输出+,)+len(方针数)))))endfrom(select方针数,你输出,达芬奇,下次输出=cast(达芬奇+1asvarchar(2))+,+cast(达芬奇+2asvarchar(2))+,+cast(达芬奇+3asvarchar(2))from(select方针数=cast((selectqfrom##twhereid=1)asvarchar(2)),你输出=max(casewhenid%2=0thenqelse0end),达芬奇=max(casewhenid%2=1thenqelse0end)from##twhereid>1groupbyfloor(id/2))a)b
/*--简化版显现selectcasewhenid=1then方针数:whenid%2=0then你输出:whenid%2=1andid>1then达芬奇:end,qfrom##t*/
游戏划定规矩:体系随机发生方针数,两边从数字1入手下手循环应对,数字必需一连,每回合最多能够选择3个数字,先到方针数者为负。
游戏申明:实行execdavinci2入手下手程序,个中数字2能够为恣意数字,体系发生随机方针数。你入手下手应对,应对数以逗号『,』分开,如:execdavinci2,1,然后体系主动回应对,如4。接着入手下手下一轮应对:execdavinci2,1,6………
目前的方案是用mysqlbinlog工具,增加一个Flashback参数,输出结果为一个新的binlog文件――姑且叫做flashbacklog,这个flashbacklog顺序执行,可制定某张表和执行到哪个pos,来实现数据库的闪回。 |
|