Archive for February 2006

闵行   4 comments

从21号开始,我们整个物理系除大四外的所有学生就开始了在闵行的生活了。
闵行其实是一个挺不错的地方,而且还是一个人一间寝室,生活不受别人的干扰,的确是很理想的住宿环境。只不过,我们住的地方距离我们上课的地方那可还真不是一般的遥远。我走一个来回需要十五分钟,而我当时的速度又比一般人走路的速度要快不少。所以,在闵行,自行车成了不可或缺的代步工具。
21号我和406的同胞们是通宵看电影迎来的(最后一部我们看的是《星球大战前传I》,果然很震撼的说——用小熊的电脑看完全就是在欣赏截图,能不震撼吗?),这给后来几天的痛苦生活(我的)打下了一个坚强的伏笔。我们为了20号晚上的通宵活动,还特地去学校旁边的华联购买了123元的通宵物资。从面包、酱料,到饼干、饮料,乃至薯片、巧克力等电影物资,统统一应具全。唯一遗憾的是当时寝室网络已经断了,不然通宵一定会更让人回味的。
21号一大早5点左右,我们406和407的人就都已经起床准备大战了(到这里,我也不知道我到底是406还是407的人了,因为有太多活动是在406参加的了,包括睡觉)。从5点半开始,我们俩寝室的人就开始陆陆续续络绎不绝地把自己的行李搬到楼下大厅去等待火车的到来。
所幸的是我在放假的时候以及18号来学校的时候就已经把不少东西都给搬回了家,不然,估计当时我有得累了。
我们每个人都至少有一个箱子,里面是装满了书的。当然,是人都知道,这些书不可能是教科书。所以,基本上每个人都总有一个箱子是单独一个人绝对搬不动的,除非你想被你亲手打理的书给压死。
当天早上,我不单单要把自己的5箱行李给搬下去,还帮自己寝室搬了四个来回,帮406、403的兄弟们也各搬了四个来回,还帮408搬了一次,总共上下4楼19个来回,人差点累死半途。这也没办法,上头分配的志愿者严重有问题,给我们男生的都是女生,虽说是研究生,但是一帮女生又能有什么用呢?轻的如被子,在志愿者来以前我们都已经搬下去了;重的如书箱,一帮女生干瞪眼都搬不动;贵重如电脑,给一帮唧唧喳喳的女生搬还真不放心(特别是在欣赏了一女生是如何巧妙利用楼梯来实现其不可告人的“虐李”行为以后)。所以,到头来,我看到的最多的是一个寝室中聚集了两桌麻将的女生负责看管东西,而那些被这群“志愿者”帮助的对象的寝室兄弟们,都自己干起了志愿者的勾当,把行李搬上搬下。所幸的是到了大厅以后,那群花瓶志愿者总算是有了作用,终于有了能让其一展作用的棉被系列能供她们搬运了。
这让我不禁想到了我得知志愿者分配情况以后的一句话了(我是主席,知道消息总归会比较快一点点的):这么分配是很有道理的,你想啊,在你寝室放一群恐龙,你能不赶快拎着行李溜吗?而在闵行的寝室放上一两个美女,你在下车后把行李搬上5楼的动力也会足一点。
事后证明,我当时的这句笑话应验了一半:的确有群恐龙在本校给你驱魂,但在闵行却没MM给你勾魂。
19个来回后的我,由于还是2号车的车长,所以还要统计是不是所有人都到了,行李是不是都到位了,志愿者有没有把行李放错车,等等。结果发现:那群研究女生果然如传说中的一般东方不败——行李都能搬错,登记都能失误。这真不容易啊,亏她们还是研究生呢。更离谱的是一女生搬一行李走了几步路以后,幡然醒悟自己是1号车的志愿者而行李是2号车的,然后就把行李原地放下,转身,走人。更别说把货车行李和客车行李给弄混的情况了——想想一台显示器被当做棉被在货车上从一头扔到另一头是什么情况吧(的的确确是扔,丝毫不夸张)。
在车上小寐片刻,就到了闵行(片刻不片刻我不知道,反正我在梦中感觉是片刻)。下车后静后闵行这的大一志愿者N分钟未果。原来,我们敬爱的NSW同志竟然会天真地以为我们是一车一车来的,而不是一批一批来的。真不知道他对“两个班次”是怎么理解的,难道他认为就两辆车?要是两辆车能装下900人的话,DORA A MON一定是我的同桌。于是乎,整整一个年级的志愿者都聚集在第一辆开进宿舍区的客车和货车的门口,进行着“志愿”活动,而我们这里三辆车却连一个志愿者都没有。于是一班人在经历了本校的体力摧残以后还要在闵行继续着这非人道的折磨。
在NSW终于良心发现把志愿者叫来以前,我又上下了10个来回左右——这次是4、5、6楼的。
整整一个上午,就在这么闹哄哄地情况下拉下了帷幕。
中午整理房间的时候诧异地发现KINGGREEN竟然就在我寝室的对面(正对面的左下方),着实让我吃惊不小。
下午我和兄弟们借了两辆自行车,就在我的带领下去了次NGS。其实本来闵行我是不可能熟的,但是由于上次给我一表弟补课而他就在闵行,更重要的是我有两次徒步从他家走到学校的经历,所以在闵行我们学校这一带除了土生土长的人以外就属我最熟了——特别是对地面的熟悉,那可是我一脚一脚感受出来的呀!买了点生活不必须用品,就回到了寝室。
学校这次真的很不人道,竟然告诉我们搬家后的第二天要照常上课!不过这还不算什么,学校更绝的就是:和本校同样的价格申请的网络其流量竟然只有本来的四分之一!用我在食堂对那些卖菜阿姨最常说的一句话就是:你干脆去抢劫好了,效率还高一点!这让我们充分体会到,“学校根本就是一个赢利机构”是一句大错特错的话。那是对“赢利机构”的侮辱。学校根本就是一个剥削机构!
在闵行,我比别的兄弟多了一个困扰,那就是:我的显示器已经被我卖了。
看过我上个学期SPACE的朋友们一定知道,我的显示器已经坏了。而且,更重要的是,我的显示器很重。那是五年前的历史遗留问题。所以,这次搬家的时候,我用60块大洋把我的报废显示器当成正常显示器脱销了。但是紧跟着的一个问题就是:没有显示器的电脑能干什么?
终于,在思考了五分钟以后,我给出了一个正解:是一台大容量低级MP3。
的确,凭着我对SHORTCUT的熟识,以及事先把TTPLAYER设成了开机启动,所以我的电脑现在的唯一功能就是:唱歌给我听。而且,我还能控制它的音量(我的音箱是坏的,那也是五年前的历史遗留问题,所以只能通过软件调节音量),前后跳歌等。想想一台电脑现在落魄成这样,心中还真是感慨万千。
现在一个人一间寝室,我们都有了N多的时间来思考这么一个问题:现在干什么好?
也是是已经习惯了群居生活,现在转到了独居时代还真适应不了。而学校给我们安的门是那种房里死了人如果对面女生不偷窥的话一辈子都发觉不了的(还不算朝南的朋友其对面是一望无垠的农田)的结构,所以现在要召集一干人进行一些娱乐活动还真不容易,更别说学校规定不能拉网线导致了网络游戏竞技的不便利性。总之,生活的硬指标是上去了,但是软指标却一泻千里。
由于我们现在网还没开通,所以我们这一个礼拜又回到了刚进大学时的打牌下棋的ANTE-娱乐时代。不过N年没这么娱乐了,现在再回头来下棋打牌,还真是其乐无穷呢。只可惜,我这人是一个不适合这种娱乐方式的类型,因为我不喜欢去算牌,所以一直都无法完全溶入这样的生活中去。
看来,我过去说的一句笑话可能要成真了:我的老婆我已经知道是谁了——她就是我写的电脑程序!
这让我想到了我两位朋友的对话了。A对B说:会嫁给我的女人,要么先天残疾,要么后天残废。然后B对A说:从你这我看出一个社会现象——现在残障人士的福利还没得到保障。我听后差点笑岔过气去。
我发觉最近在没有显示器的日子里,我的生活还是很有规律的,而且似乎不过去的两年半更有规律了。我不知道这是由于独立式的生活环境引起的,还是由于无法操作电脑引起的。同样的结果可能是许多不同诱因所导致的。比如一次一个女生用哥伦布发现新大陆的语气对我和CFP说:我发现现在男生比女生还要害羞,因为我每次往你们男生这看的时候都发觉男生拉窗帘的人比女生多。然后我和CFP都用一种很感慨地语气说:这就是你的错了。女生拉窗帘是不希望有一群色狼盯着自己的闺房猛瞧,瞧到一个一览无余的境界;而男生拉窗帘是因为——晚上睡觉一般都会拉窗帘的,而早上起床一般都懒得再去拉开了。可见,不同的原因导致了相同的结果。
当然,当时我没说第三种诱因。这点在我们的“健男”身上得到了集中体现:一个拉窗帘的男生很自然会给女生一个他是一个很内向蛮含羞的人的印象,这点看看那个女哥伦布就知道了。而一旦一个色狼拉上窗帘以后,在上述思想的引导下女生自然就会不再对其防范,然后,每过几分钟就能发现一个骷榔头很定期地从窗帘下伸了出来……所幸的是这次我们的“色狼”同学其寝室是朝南的,不然我们就能欣赏到各种偷窥秘笈了。不过话说回来了,一个满嘴都是《肉蒲团》的人不一定就色到哪里去,因为越是显出来的东西越不是它所是的东西。这点还是要去看看“健男”,他这学期选了门“电影欣赏”,然后回来装得很纯洁地说原来那里的电影有不少是情色电影,然后给我们灌输了半个小时情色电影和色情电影的区别,并教导我们要用欣赏和分析的眼光去看待情色电影和其中的色情情节。这话说得要多高尚有多高尚,但是就在上个学期,KXL的一个40G的移动硬盘被他给塞满了色情电影。当然,这其中也不单单是他一个人的功劳,毕竟一个寝室有8个人呢。我以前高三的时候,一个同班女生说过两句经典的话,一是说:女生也是有需求的。二是说:早晚要做的,为什么现在不能学?这两句话高度概括了健男半个小时给我们灌输的思想,及其弦外音。可见,我国的性教育的确有必要从娃娃抓起。
说到选修课,这又是我比较郁闷的一件事。因为我本来选的“科普写作”很莫名地没选上,而我觉得那应该是一个没多少人选的冷门课程。于是我不得不去补选,结果选了数学建模班。这就是说,我来到了六道轮回中的修罗界。
这个学期的专业选修课有广义相对论、遥感技术、生物物理和现代物理选讲(双语),都蛮对胃的。只不过最后一个现代物理选讲真的是一个考验。我们看一个NOVA(比DISCOVERY更资深的科技影片公司)的片子,结果所有的图象以及图象所蕴涵的物理意义我都看明白了,但是他说的我一个字都没听清楚。比如里面有关于电磁相互作用的交换子图象的、弦论的、量子涨落的、PLANCK海洋的、EINSTEIN的思想实验的,等等等等,都看明白了,但是就是不知道他在说些什么。这让我感到很郁闷。我们的老师开卷就说:想走的人可以离开。结果一半人在听了开场白以后拎了包就走,没有丝毫留恋。
最近一直在思考一个问题,这问题竟然是:我到底是一个怎么样的人?
这个问题比较白痴,但是我还真回答不了。老实说,我自己都不知道我到底是一个怎么样的人。特别是在做了一个梦以后。
那个梦中,我见到了两个我最喜欢的女子(真实的),但是我竟然一个都不想放过。梦的最后是和我寝室的人住在一个地方,看着世界大战的爆发……虽然这梦前后没有丝毫关联性,但是却让我感到很震惊。它说明我有很强的占有欲(还是说我是一个色狼?),同时也有很强的破坏欲。但是,就我对我自己的了解,我应该是一个很大方的人啊。我这没有传说中上海小男人或者说小上海人的气质,被许多北方来的朋友所认同为北方人,而且日常生活中我也没觉得我就多么地想占有什么东西,但是却做了这么一个梦。还是说,是睡前看的《长安乱》的影响?天晓得了。
总之,无论如何,现在要考试在闵行的新生活了。不像我当初想的,心中可能会充满了某种感情,比如紧张、比如厌恶、比如失落、比如留恋,现在心中竟然平静到了极点。仿佛我本来就是在闵行的一般。唯一的波澜就是发生在我人在走廊上大吼“打牌咯!在XXX室!”的时候。

Posted February 25, 2006 by LostAbaddon in 世界叶

又下雪了~~   5 comments

今天又下雪了。
昨天和XZJ一起去裘江路二手电脑市场买了台电脑,当做学生会中给学生们输入和编辑东西的作业平台。那个时候天上就飘了一些雪子下来。然后把机器抗回学校,自然要回寝室和朋友们玩一会。本打算玩一小会以后回家的,结果和KXL等人一同看了亡命夺宝等电影后就出去吃了晚饭,正想着应该回家了,吃完饭回来碰到LHJ,而且听说他现在WARCRAFT已经练到了一个境界,便和他血拼了一番,从七点一直拼到了九点半,索性就放弃了回家的念头,继续血拼到了晚上两点半,总算是略微地胜了一筹结束了上半场。然后LHJ下换了406最强的XW上,他80%和我100%拼,我和LHJ轮流上到四点半,之后我又和XW一直单挑到了早上七点半,再转头一看:哎呀,下学了。
随后和XW出去吃早饭,充分感受了今年这第一场雪的猛烈。
无论如何,下雪的感觉就是好啊~~

Posted February 18, 2006 by LostAbaddon in 世界叶

经典……   Leave a comment

感觉,现在如果一样什么东西成了“经典”,那么这就意味这它已经进入了痛苦的边缘……
你说我们伟大的唐老先生生前犯了什么大罪了?作古都已N纪了,还在被人不断地拎出来鞭尸,实在是有够可怜的。你说你如果打出了艺术打出了层次打出了快感,那也就算了。可你如果只打出来尸腐肉来,那恐怕就是飞头蛮也要吐个你死他活的了。
当年我们可爱的星爷让唐老先生总算也活泼开朗了次,但是最近几年那些小白脸们可彻底让唐老跌进了痛苦的深渊。更别说那些二流半都小品了,它们让我一看到出现“唐伯虎”名词的节目下一个动作就是发生在延髓上的神经冲动——换台。
唐伯虎的招牌算是彻底砸了。
紧跟着的,还有238(不知道什么意思?那你可以去多看看电视了)和历代皇帝。
以前看过一个笑话,是这么说的:如果所有的童话都是正确的,那么欧洲所有的公主在其一生历程中将平均一个月被绑架一次。而每位王子有一个星期时间练级,一个星期时间打怪,一个星期时间杀BOSS,一个星期时间蜜月,然后开始REPEAT。魔王就比较凄惨一点,平均一个月诞生一个,然后一个月死一个。还不算魔王手下的火龙啊毒兽啊之类的,估计不用基因工程是不可能如此成批出现的。
当时以为这就是一个笑话,但是后来打开电视一看,发觉这是事实。
按照现在电视台出现的节目来看,估计中国历代帝王的一身中将总是伴随着连绵不断的谋朝篡位和后宫争宠,然后估计一辈子有一般时间是花在躲开皇太后的眼睛出宫上的。
康乾盛世的三位是最凄惨的,被描述得完全就是整天想着逃出皇宫的地下工作者,《地下城守护者》和《地牢》的开发者们应该看看中国电视剧的,对剧本的写作绝对有好处的。
唐宋的皇帝也比郁闷,基本上是被自称天才的笨蛋和厨师耍着玩的。
某些皇帝更加窝囊,被人策划了整整四十集的谋杀结果是哪个朝代的都没人知道。这种情况下那些电视剧的主角也比较郁闷,救人救了四十集,一些自己还成了死尸的,结果连自己救的皇帝是什么时候的都不知道。
还是喜欢像《方世玉》、《黄飞鸿》系列的电影,虽然谁都知道这样的人是不可能出现的,但是至少不会认为他们是超人。基本上一旦一个剧本从电影进入到了电视,那么如果电影中的打斗是人类的打斗,那么在电视剧中就是超人的打斗;如果电影中是超人的打斗,那么在电视剧中就是超人高校的群殴。基本上如果外国人看了中国的电视剧,普遍的想法一定是:幸好中国古代一直认为不存在欧洲大国,不然派一两个“武林人士”去欧洲公费旅游一次,欧洲就平了……基本上电视上中国古代的人一拳打过去就是大炮开了炮,一脚踢过去就是飞毛腿,嘴巴里吐东西出来的话就是机关枪扫射(这方面的经典场景其实不是星爷的《大内密探》,而是金庸的《神雕侠侣》,因为前者是人都知道是搞笑的)。综观电视中的中国历史,你会发现,中国人的功夫在宋朝以前是逐渐从超人向神进化,宋到清前半是逐渐从神向超人退化,而从清朝开始到解放战争爆发的时候,是从超人向人的退化。解放战争打响的瞬间,“侠客”就瞬间死光了。8年解放和4年内战之后,“侠客”又瞬间复活了。到了现在,基本上又恢复成了“超人”时代。经典电视剧是《我的武林男友》和电影《野蛮秘笈》,参考外国的话有《超人高校》。
嗨,武侠由于成了经典,所以便开始走向了坟墓。
简单地说,“经典”现在已经成了“尸体”的先行词了。
比如,周杰伦可以说已经成了一个经典,于是他现在就是“尸体”。为什么这么说?因为模仿他的人实在太多了,多到了烂的地步了。去年上海电视台主持人拜年的节目,最后把周的《双截棍》改到了一个境界,让我直接把电脑上的《双截棍》给删了。
记得以前没这么多“情景剧”的,但是似乎自从《成长的烦恼》的出现,中国的情景剧就如雨后春笋般地出现了。你说如果真的是笋的话也就算了,偏偏一些只是蘑菇,而且是毒蘑菇,这真让人受不了。
至于言情剧就更别说了,看了开头就知道结尾,功力好的话还能知道从开头到结尾到底有多少跌宕多少曲折。最恶心的就是那些学琼阿姨学失败的,就和人类的胞兄一样,进化了,但是进化失败,所以消失。
回头再看一年一度的春晚。85年开始的宇宙香烟一直是我童年的期待,但是不知道从什么时候开始(我也忘了是从倪萍出现开始还是倪萍消失开始,总之和她有关),春晚就完全成了个形式,一个实在没选择时的选择。姜伯伯(看过“姜胡同话”就知道是谁了)说得好:没有人看春晚是去看歌舞的,都是去看相声小品的。说到这个插播一句:今年春晚某人一定会很兴奋的,因为TWINS出现了。不过她可能也很郁闷,因为歌没唱全。这也是许多STAR不去春晚的原因:到那里唱歌只能唱成个太监——没有下文。当然了,也有当太监当到极品的,比如2005春节的时候上海的林海等人每首歌只唱一句给拼成的一首歌,那真叫一个“太监开会”,但楞就是比别的节目好。
小说方面也是这样。貌似自从《达·芬奇密码》出现以后,悬疑类小说就开始走俏,而《非人》则给惊悚类打了针强心剂。为什么以前就没有如此大行其道呢?
嗨,现在这年头,人人都想有个性,结果发现自己有的只是共性。反倒是那些只求共性的人,反而让人看到了他的个性。
还有一个特点,就是这年头男人越来越像女人,而女人越来越像太监。其中典型人物可以参考“妻管严”和李宇春(或者,看看超女进入决赛的人也可以)。我一直在想,如果中国末代太监出现在现代,是不是反而应该更像一个男人呢?
这年头另外一个特色,就是经典。一般经典都是诞生在草莽中的,然后其一般历史旅途是:草莽出生,市场卖座,然后专家开始说这个经典其实是如何如何的空虚无意义缺乏社会主义特色的爱国主义教育意义对人生对社会对世界对地球对宇宙是如何如何的毫无用处,接着开始出续集,继续卖座,然后专家开始说其实这个经典在其大俗的外表下掩藏着大雅完全可以成为这个时代同类作品的典范如果一个人活在这个世界上不读不看不听一下这个经典那完全就等于出生不接受九年义务教育那是对不起祖国对不起人民对不起党破坏社会的安定团结破坏地球的生态平衡破坏宇宙的能量守恒,紧接着就进入经典的续集时代和同类产品对经典的抄袭模仿时代非同类产品的自说周边时代,接着经典进入坟墓,上述产品靠着惯性维持生计,然后专家又出来说自己早在这个经典诞生的时刻就看透了它批着大雅的大衣其实包藏了大俗的本质先前N年公众不停自己的完全证明了“不停老人言吃亏在眼前”这句古老的谚语。虽然,从开始到结束,那些专家其实就是同一批专家,只不过刚开始的时候A在北京台B在上海台C在卫星电视,中间的时候B在北京台C在上海台A在卫星电视,最后总结陈辞的时候C在北京台A在上海台B在卫星电视。由此可见,那些专家和电视台的人都是数学家,排列组合和统筹学融会贯通举一反三把理论应用到实践是多么地娴熟啊。经典案例可以看中央电视台一次节目中某专家对《HARRY POTTER》的评论。大体的意思是说HP这样的小说完全不能和科幻小说比它的畅销仅仅代表了读者的空虚和对童年的怀念从而推论为现代的小说读者其实都有了幼稚化的趋势理由是不然像HP这样的成人童话怎么可能畅销最后总结为看HP不如看科幻小说进一部推论为看科幻小说不如看科普小说再进一步总结为看科普小说不如听我的科普报告。到这里我本来以为他会继续推论为听我的科普报告不如看我的学术论文,谁知他到这里就打住了。后来一揣测,顿时恍然大悟:他的学识根本不能去做学术研究只能把别人的研究提取自己看得懂的部分写一片批评文章(绝对不是评论文学,是批评文章)然后花一个月进行对着辞典的语言修饰同时加入大量生硬的引经据典最终成为科普报告。其实,这样的专家暗地里都对古龙和金庸崇拜得要死要活但由于看不懂洋文所以完全看不明白《HARRY POTTER》。
我突然,觉得天下最可爱的人不是士兵,是那些专家。
又突然,觉得天下最辛苦的人不是工人,是那些专家。
还突然,觉得天下最伟大的人不是教师,是那些专家。
因为,能那么厚颜无耻地把那些根本就是屎的东西说成奶油蛋糕还说得那么诚恳那么真挚那么正直,是一件多么不容易的事情啊。
当专家难啊,当抛头露面的专家更难,而要当一个常上电视说事的专家,那真叫一个“相当”难啊!
当然了,说到底,还是经典的问题,因为那些专家在当年,那就是“经典”啊~~
 
PS:不明白最后加引号的“相当”所表达含义的朋友,快去BT今年春晚吧。

欢迎到我的留言板来就本帖说两句!
王天信发于20060212 22:57

Posted February 12, 2006 by LostAbaddon in 思维测地线

乐趣扫雷2.0   Leave a comment

在1.0中,仔细看CODE的朋友能发现,我引入了“生命值”这个个概念。这个概念在该款游戏的2.0中得到更加彻底的应用。因为,2.0的游戏已经不再单单是个“扫雷”游戏了。
在2.0中,如果你遇到了地雷,你不一定会失去你的HP。事实上,在这里遇到“地雷”意味着的是你要与这枚“地雷”进行战斗!对,这就是2.0游戏一大特点:引入了战斗系统。事实上,在2.0中还引入了“宝物”和“陷阱”两大系统。而这两个系统的引入点,就是在1.0中用以区分地雷和非地雷GRID的判定值。这个值现在被拓宽到了宝物和陷阱中。
2.0中的宝物包括了“金刚罩”、“冲击波”和“HP”。其分别作用是标出左右一圈中所有的地雷士兵、扫除某一个方向上指定GRID的地雷士兵(由游戏的难度等级LEVEL决定)和得到一点HP。
陷阱包括了“触发”、“迷惑”和“魔王”。其作用分别是触发周围一圈所有的地雷士兵、一个用以迷惑的无法消除的GRID和一个HP、AP、DP都是正常士兵指定倍的魔王(由游戏难度等级决定)。基本上,碰上了魔王你也就等于注定要失去一个HP了。
此外,2.0中还引入了积分这么一个概念。积分和许多东西都有关联,大家玩了就知道了。
 
FRMMAIN.FRM:
Dim Win As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then
    If Num = 0 Then
        MnuStart_Click
    Else
        MnuRestart_Click
    End If
End If
If KeyCode = 112 Then MnuStart_Click
End Sub
Private Sub Form_Load()
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
GridsOn(0).Height = GridsOn(0).Width
GridsOff(0).Height = GridsOn(0).Width
GridsOff(0).Width = GridsOn(0).Width
WNum = GetSetting("乐趣扫雷游戏II", "游戏设置", "WNum", 10)
HNum = GetSetting("乐趣扫雷游戏II", "游戏设置", "HNum", 10)
BombRate = GetSetting("乐趣扫雷游戏II", "游戏设置", "Hard", 16)
Level = GetSetting("乐趣扫雷游戏II", "游戏设置", "Level", 1)
ShowBomb = False
FirstGame = True
Win = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
SaveSetting "乐趣扫雷游戏II", "游戏设置", "WNum", WNum
SaveSetting "乐趣扫雷游戏II", "游戏设置", "HNum", HNum
SaveSetting "乐趣扫雷游戏II", "游戏设置", "Hard", BombRate
SaveSetting "乐趣扫雷游戏II", "游戏设置", "Level", Level
End Sub
Private Sub GridsOff_DblClick(Index As Integer)
Dim TmpA, TmpB As Integer
TmpA = GetSurround(Index)
TmpB = GetOut(Index)
If Grids(Index).Environment = TmpA Then
    If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 1, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 1, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 1, 1, 1, 1)
End If
If Grids(Index).Environment = TmpA + TmpB Then
    If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 2, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 2, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 2, 1, 1, 1)
End If
End Sub
Private Sub GridsOff_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
    If Grids(Index).Checked = 1 Then
        GridsOn(Index).Visible = True
        GridsOff(Index).Visible = False
        GridsOff(Index).BackColor = &H8000000F
        Bombs = Bombs + 1
        Grids(Index).Checked = 0
        If Grids(Index).IsBomb Then BombsLeft = BombsLeft + 1
    End If
    MnuBombLeft.Caption = "炸弹:" & Bombs
End If
End Sub
Private Sub GridsOn_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then MnuRestart_Click
If KeyCode = 112 Then MnuStart_Click
End Sub
Private Sub GridsOn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
    LeftClick Index
ElseIf Button = 2 Then
    RightClick Index
End If
MnuBombLeft.Caption = "炸弹:" & Bombs
If Life = 0 And Not ShowBomb Then
    MsgBox "抱歉,你已经死了。", vbOKOnly, "乐趣扫雷游戏II"
End If
End Sub
Private Sub MnuClear_Click()
If MsgBox("您确定要清除乐趣扫雷游戏II积分榜上的所有积分记录?", vbYesNo, "乐趣扫雷游戏II") = vbYes Then
    For I = 1 To 5
        SaveSetting "乐趣扫雷游戏II", "游戏记录", "No" & I & "Name", "乐趣扫雷游戏II"
        SaveSetting "乐趣扫雷游戏II", "游戏记录", "No" & I & "Size", "30*30:21"
        SaveSetting "乐趣扫雷游戏II", "游戏记录", "No" & I & "Point", 100
    Next I
End If
End Sub
Private Sub MnuExit_Click()
Form_Unload True
End
End Sub
Private Sub MnuHelp_Click()
MsgBox "在界面中,凸起的格子为尚为探明的区域,凹下的格子为已经探索或者已经标号的区域。" & Chr(10) & _
"在凸起的格子上点击左键来探索该区域,点击右键来为该区域标号。" & Chr(10) & _
"若所探索的格子中存在地雷,则格子凹下同时显示红色,表示该处地雷已炸,同时玩家丧失一条性命。" & Chr(10) & _
"标号的格子会凹下显示蓝色。若时候认为该处不应标号,可通过在该处再次点击右键来消除标号。" & Chr(10) & _
"一个区域已经探索,并且周围已经具有了如其显示的标号数以后,可以通过双击该处进行自动探索。" & Chr(10) & _
"同时,若在某已探索区域周围剩下的未探索区域就是其所显示的雷数,则对这些区域自动标号。" & Chr(10) & _
"游戏以往家的性命全部丧失或者地图上所有地雷被标号作为结束。" & Chr(10) & _
"如果胜利结束,则显示玩家积分和排行榜。" & Chr(10) & Chr(10) & _
"特殊颜色的格子具有不同意义:" & Chr(10) & _
"白色:气劲保护罩" & Chr(10) & _
"湖蓝:触动周围所有机关" & Chr(10) & _
"黑色:遇到恶魔" & Chr(10) & _
"黄色:得到一条命" & Chr(10) & _
"粉红:得到一个冲击波" & Chr(10) & _
"绿色:1000点加分" & Chr(10) & _
"土黄:丢失大量分数" & Chr(10) & Chr(10) & _
"II代中还引入了阻碍玩家视线的“云雾”系统,希望能给大家带来推理上的新体验!" & Chr(10) & Chr(10) & _
"感谢您对梦幻工作室游戏的支持,谢谢!", vbOKOnly, "乐趣扫雷游戏II"
End Sub
Private Sub MnuPoint_Click()
MsgBox Goal + Gift + Points * (1 + Int(Level / 3) * (Life / 10) ^ 0.2), vbOKOnly, "乐趣扫雷游戏II"
End Sub
Private Sub MnuQR_Click()
If Bombs = 0 And BombsLeft = 0 Then
    MnuLifeLeft.Caption = "生命:" & Life
    Points = Int(Num * BombRate / (1 + ((Num * BombRate / Num – 0.25) * 10) ^ 2) / Time * (Life / (Level * 2 + 3) * 10) * 1000 * Num ^ 0.55 * BombRate ^ 0.75)
    TmrTime.Enabled = False
    Goal = Goal + Points * (1 + Int(Level / 3) * (Life / 10) ^ 0.2) + Gift
    MsgBox "您的级别:" & Level & Chr(13) & Chr(10) & "您的积分:" & Points & Chr(13) & Chr(10) & "您得到的额外点数:" & Gift & Chr(13) & Chr(10) & "您现在的总点数:" & Goal, vbOKOnly
    LblInfo.Caption = "您现在的点数为:" & Goal & "点"
    CheckRecord
    Tmp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0)
    Tmp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0)
    Tmp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0)
    Tmp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0)
    Tmp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0)
    Smp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
    Smp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
    Smp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
    Smp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
    Smp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Size", 0)
    strTmp = "乐趣扫雷积分榜" & Chr(10)
    strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
    strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
    strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
    strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
    strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
    MsgBox strTmp, vbOKOnly, "乐趣扫雷排行榜"
    LblInfo.Caption = "您现在的点数为:" & Goal
    Win = True
    FirstGame = False
Else
    MsgBox "抱歉,游戏还没有结束呢!", vbOKOnly, "乐趣扫雷游戏II"
End If
End Sub
Private Sub MnuRestart_Click()
Dim Tmp As Long
If Win Then
    Level = Level + 1
    If Int(Level / 3) * 3 = Level Then
        HNum = HNum + 1
        WNum = WNum + 1
        Num = HNum * WNum
    End If
    If Int(Level / 4) * 4 = Level Then
        BombRate = BombRate + 1
    End If
End If
If Not Win Then Tmp = MsgBox("您确定您要重新开始游戏吗?这会让您损失一半以上的点数。", vbYesNo, "乐趣扫雷游戏II")
If Win Or Tmp = vbYes Then
ShowBomb = False
For I = 1 To GridsOn().Count – 1
    Unload GridsOn(I)
    Unload GridsOff(I)
Next I
ReDim Grids(Num)
For I = 1 To Num
    Load GridsOn(I)
    Load GridsOff(I)
    Grids(I).IsBomb = False
    Grids(I).Checked = 0
    GridsOff(I).BackColor = &H8000000F
Next I
Bombs = Int(Num * (BombRate + Rnd() * 10 – 5) / 100)
If Bombs = 0 Then Bombs = Int(Num * BombRate / 100)
BombsLeft = Bombs
Time = 0
Life = Life + Level * 2 + 3
TmrTime.Enabled = True
MnuLifeLeft.Caption = "生命:" & Life
Grids(0).Checked = -1
FrmShow.Height = MnuBombLeft.Height + LblInfo.Height + 150
FrmShow.Left = 0
Me.Height = WNum * GridsOn(0).Width
FrmShow.Width = WNum * GridsOn(0).Width
FrmShow.Top = WNum * GridsOn(0).Width + 100
Me.Height = 2 * Me.Height – Me.ScaleHeight + 200 + FrmShow.Height
Me.Width = HNum * GridsOn(0).Width
Me.Width = 2 * Me.Width – Me.ScaleWidth
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
PutGrids HNum, WNum
PutBomb
PutGift
If Not Win Then Goal = Goal / 2 – 100
If Goal < 0 Then Goal = 0
Points = 0
End If
End Sub
Private Sub MnuShow_Click()
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5 As Integer
Dim Smp1, Smp2, Smp3, Smp4, Smp5 As String
Dim strTmp As String
Tmp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0)
Tmp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0)
Tmp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0)
Tmp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0)
Tmp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0)
Smp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
Smp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
Smp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
Smp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
Smp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Size", 0)
strTmp = "乐趣扫雷积分榜" & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
MsgBox strTmp, vbOKOnly, "乐趣扫雷排行榜"
End Sub
Private Sub MnuShowBomb_Click()
Dim I As Integer
ShowBomb = True
For I = 1 To Num
    LeftClick I
Next I
End Sub
Private Sub MnuStart_Click()
On Error Resume Next
Dim I, J As Integer
ShowBomb = False
For I = 1 To GridsOn().Count
    Unload GridsOn(I)
    Unload GridsOff(I)
Next I
FrmLogin.Show vbModal
Life = Level * 2 + 3
If BombRate > 80 Then
    MsgBox "炸弹比例设置太高,考虑到您的智慧,我们不推荐您这么做。我们将帮您设置为80。", vbOKOnly, "乐趣扫雷游戏II"
    BombRate = 80
End If
If BombRate < 10 Then
    MsgBox "炸弹比例设置太低,考虑到您的智慧,我们不推荐您这么做。我们将帮您设置为10。", vbOKOnly, "乐趣扫雷游戏II"
    BombRate = 10
End If
If WNum = 0 Then WNum = 10
If HNum = 0 Then HNum = 10
Num = WNum * HNum
ReDim Grids(Num)
For I = 1 To Num
    Load GridsOn(I)
    Load GridsOff(I)
Next I
Grids(0).Checked = -1
MnuTimeUsed.Left = 0
MnuTimeUsed.Top = 50
LblInfo.Left = MnuTimeUsed.Width + 100
LblInfo.Top = 50
MnuBombLeft.Left = 0
MnuBombLeft.Top = LblInfo.Height + 100
MnuLifeLeft.Left = MnuBombLeft.Width + 50
MnuLifeLeft.Top = LblInfo.Height + 100
FrmShow.Height = MnuBombLeft.Height + LblInfo.Height + 150
FrmShow.Left = 0
Me.Height = WNum * GridsOn(0).Width
FrmShow.Width = WNum * GridsOn(0).Width
FrmShow.Top = WNum * GridsOn(0).Width + 100
Me.Height = 2 * Me.Height – Me.ScaleHeight + 200 + FrmShow.Height
Me.Width = HNum * GridsOn(0).Width
Me.Width = 2 * Me.Width – Me.ScaleWidth
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
PutGrids HNum, WNum
Randomize
Bombs = Int((BombRate + Rnd() * 10 – 5) / 100)
If Bombs = 0 Then Bombs = Int(Num * BombRate / 100)
BombsLeft = Bombs
PutBomb
PutGift
Time = 0
Goal = 0
TmrTime.Enabled = True
MnuLifeLeft.Caption = "生命:" & Life
Win = False
End Sub
Private Sub TmrTime_Timer()
MnuTimeUsed.Caption = "时间:" & Time
Time = Time + 1
End Sub
Private Sub PutGrids(ByVal HNum As Integer, ByVal WNum As Integer)
Dim I, J, TmpNum As Integer
On Error Resume Next
For I = 1 To HNum
    For J = 1 To WNum
        TmpNum = (I – 1) * WNum + J
        Grids(TmpNum).X = I
        Grids(TmpNum).Y = J
        Grids(TmpNum).Checked = 0
        Grids(TmpNum).Sort = 0
        GridsOn(TmpNum).Left = (I – 1) * GridsOn(0).Width
        GridsOn(TmpNum).Top = (J – 1) * GridsOn(0).Width
        GridsOff(TmpNum).Left = (I – 1) * GridsOn(0).Width
        GridsOff(TmpNum).Top = (J – 1) * GridsOn(0).Width
        GridsOn(TmpNum).Visible = True
        GridsOff(TmpNum).Visible = False
    Next J
Next I
End Sub
Private Sub PutBomb()
Dim I, J As Integer
J = Bombs
BOMBSETTINGSTART:
Randomize
I = Int(Rnd() * Num)
If I = 0 Then I = 1
If Grids(I).IsBomb = False Then
    Grids(I).IsBomb = True
    J = J – 1
End If
If J > 0 Then GoTo BOMBSETTINGSTART
MnuBombLeft.Caption = "炸弹:" & Bombs
For I = 1 To Num
    Grids(I).Environment = GetEnvironment(I)
Next I
End Sub
Private Sub PutGift()
‘Checked:-1:边界;0:还没有被探索;1:已经被标记;2:已经爆炸;3:已经按下的格子
‘Sort:1:四周气劲;2:四周陷阱;3:恶魔;4:奖一条命;5:直线标号器;6:加点数1000;7:点数大灾难
Dim Edge, RoundSave, RoundKill, SuperBomb, LifeUp, LineCleaner, PointUp, Killer As Integer
Dim IntTmp As Integer
Randomize
Edge = Int(Level * 5 * Rnd() * Sqr(Num) / 30)
If Edge > Num * 0.3 Then Edge = Num * 0.3
RoundSave = Int((Level – 1) * 1.3)
RoundKill = Int((Level – 1) * 1.3)
SuperBomb = Int((Level – 1) * 1.1)
LifeUp = Int(Level * 1.2) – 1
LineCleaner = Int(Level * 1.3) – 1
PointUp = (Level – 1) * 2
Killer = Int((Level – 1) * 1.1)
CHECKS:
If RoundSave + RoundKill + SuperBomb + LifeUp + LineCleaner + PointUp > Num * 0.7 Then
    RoundSave = IIf(RoundSave – 1 > 0, RoundSave – 1, 0)
    RoundKill = IIf(RoundKill – 1 > 0, RoundKill – 1, 0)
    SuperBomb = IIf(SuperBomb – 1 > 0, SuperBomb – 1, 0)
    LifeUp = IIf(LifeUp – 1 > 0, LifeUp – 1, 0)
    LineCleaner = IIf(LineCleaner – 1 > 0, LineCleaner – 1, 0)
    PointUp = IIf(PointUp – 1 > 0, PointUp – 1, 0)
    Killer = IIf(Killer – 1 > 0, Killer – 1, 0)
    GoTo CHECKS
End If
‘Set Items
SETS:
‘Set Edge
If Edge > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Not (Grids(IntTmp).IsBomb) And Grids(IntTmp).Checked = 0 Then Grids(IntTmp).Checked = -1: Edge = Edge – 1
End If
‘Set RoundSave
If RoundSave > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 1: RoundSave = RoundSave – 1
End If
‘Set RoundKill
If RoundKill > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 2: RoundKill = RoundKill – 1
End If
‘Set BEelzebub
If SuperBomb > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 3: SuperBomb = SuperBomb – 1
End If
‘Set LifeUp
If LifeUp > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 4: LifeUp = LifeUp – 1
End If
‘Set LineCleaner
If LineCleaner > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 5: LineCleaner = LineCleaner – 1
End If
‘Set PointUp
If PointUp > 0 Then
    IntTmp = Int(Rnd() * Num)
    If Grids(IntTmp).Sort = 0 Then Grids(IntTmp).Sort = 6: PointUp = PointUp – 1
End If
If Edge > 0 Or RoundSave > 0 Or RoundKill > 0 Or SuperBomb > 0 Or LifeUp > 0 Or LineCleaner > 0 Or PointUp > 0 Then GoTo SETS
End Sub
Private Function GetNum(ByVal A As Integer, ByVal B As Integer) As Integer
If A <= 0 Or B <= 0 Or A >= HNum + 1 Or B >= WNum + 1 Then
    GetNum = 0
Else
    GetNum = (A – 1) * WNum + B
End If
End Function
Private Function GetEnvironment(ByVal Num As Integer) As Integer ‘察看给定格子周围有多少炸弹
GetEnvironment = 0
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
End Function
Private Function GetSurround(ByVal Num As Integer) As Integer ‘察看给定格子周围已经有多少格子被察看过
GetSurround = 0
‘察看有多少是标上雷的
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
‘察看有多少雷已经炸开
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
End Function
Private Function GetOut(ByVal Num As Integer) As Integer ‘察看给定格子周围有多少格子没有察看
GetOut = 0
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
End Function
Private Sub CheckRecord()
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5, Tmp As Integer
Dim strTmp As String
Tmp1 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0))
Tmp2 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0))
Tmp3 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0))
Tmp4 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0))
Tmp5 = Val(GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0))
If Points >= Tmp1 Then
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
   
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Tmp3
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
   
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Point", Tmp2
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Size", strTmp
   
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Point", Tmp1
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Size", strTmp
   
    strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No1Name", strTmp
    strTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No1Size", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No1Point", Points
    GoTo ENDS
End If
If Points >= Tmp2 Then
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
   
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Tmp3
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
   
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Point", Tmp2
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Size", strTmp
   
    strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Name", strTmp
    strTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Size", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No2Point", Points
    GoTo ENDS
End If
If Points >= Tmp3 Then
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
   
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Tmp3
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
   
    strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Name", strTmp
    strTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Size", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No3Point", Points
    GoTo ENDS
End If
If Points >= Tmp4 Then
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Tmp4
    strTmp = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
   
    strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Name", strTmp
    strTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Size", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No4Point", Points
    GoTo ENDS
End If
If Points >= Tmp5 Then
    strTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏II", "乐趣扫雷游戏II")
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Name", strTmp
    strTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Size", strTmp
    SaveSetting "乐趣扫雷游戏II", "游戏记录", "No5Point", Points
End If
ENDS:
End Sub
Private Sub LeftClick(ByVal Index As Integer)
Dim IntTmp As Integer
If (Life <= 0 And Not ShowBomb) Or Grids(Index).Checked = -1 Then GoTo OUT
GridsOn(Index).Visible = False
GridsOff(Index).Visible = True
Grids(Index).Checked = 3
If Grids(Index).IsBomb Then
    GridsOff(Index).BackColor = vbRed
    Opp = 1
    If Not ShowBomb Then FrmFight.Show vbModal
    If FightResult = False Then
        Life = Life – 1
        MnuLifeLeft.Caption = "生命:" & Life
    End If
    Bombs = Bombs – 1
    Grids(Index).Checked = 2
    BombsLeft = BombsLeft – 1
Else
    GridsOff(Index).Caption = Grids(Index).Environment
    If Grids(Index).Environment = 0 Then
        IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X, Grids(Index).Y – 1)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X, Grids(Index).Y + 1)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
        IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)
        If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
    End If
End If
Dim strTmp As String
Select Case Grids(Index).Sort
    Case 1
        LblInfo.Caption = "您得到了气劲保护罩!"
        GridsOff(Index).BackColor = vbWhite
        FunRoundSave Index
    Case 2
        LblInfo.Caption = "您触动了周围所有的机关!"
        GridsOff(Index).BackColor = vbCyan
        FunRoundKill Index
    Case 3
        LblInfo.Caption = "您遇到了恶魔!"
        Opp = 2 + Int((Level – 1) * 0.25)
        GridsOff(Index).BackColor = vbBlack
        If Not ShowBomb Then FrmFight.Show vbModal
        If FightResult = False Then
            Life = Life – 1
            MnuLifeLeft.Caption = "生命:" & Life
        End If
    Case 4
        LblInfo.Caption = "您得到了一条奖励生命!"
        GridsOff(Index).BackColor = vbYellow
        Life = Life + 1
        MnuLifeLeft.Caption = "生命:" & Life
    Case 5
        LblInfo.Caption = "您得到了一个冲击波!"
        GridsOff(Index).BackColor = &HFF00FF
INPUTSET:
        strTmp = LCase(InputBox("请输入您要释放冲击波的方向(上u下d左l右r):", "乐趣扫雷游戏II", "n"))
        If strTmp = "n" Then GoTo INPUTSET
        If Not ShowBomb Then FunLineCleaner Index, strTmp
    Case 6
        LblInfo.Caption = "您得到了1000点的加分!"
        GridsOff(Index).BackColor = vbGreen
        On Error Resume Next
        Gift = Gift + 1000
    Case 7
        LblInfo.Caption = "您遇到了点数大灾难!"
        GridsOff(Index).BackColor = &H80C0FF
        Gift = (0 – Abs(Gift)) * 10
        Goal = Goal / 3
End Select
OUT:
End Sub
Private Sub RightClick(ByVal Index As Integer)
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5 As Integer
Dim Smp1, Smp2, Smp3, Smp4, Smp5 As String
Dim strTmp As String
If Life <= 0 And Not ShowBomb Then GoTo OUT
If Grids(Index).Checked = 0 Then
    GridsOn(Index).Visible = False
    GridsOff(Index).Visible = True
    GridsOff(Index).BackColor = vbBlue
    Bombs = Bombs – 1
    Grids(Index).Checked = 1
    If Grids(Index).IsBomb Then BombsLeft = BombsLeft – 1
    If Bombs = 0 Then
        If BombsLeft = 0 Then
            MsgBox "恭喜您获得胜利!", vbOKOnly, "乐趣扫雷游戏II"
        Else
            MsgBox "抱歉,您把一些不是地雷的地方给扫了。作为补偿,您陪上了您的生命!", vbOKOnly, "乐趣扫雷游戏II"
            Life = Life – BombsLeft
            If Life < 0 Then Life = 0
        End If
        MnuLifeLeft.Caption = "生命:" & Life
        Points = Int(Num * BombRate / (1 + ((Num * BombRate / Num – 0.25) * 10) ^ 2) / Time * Life * 1000 * Num ^ 0.55 * BombRate ^ 0.75)
        TmrTime.Enabled = False
        Goal = Goal + Points * (1 + Int(Level / 3) * (Life / 10) ^ 0.2) + Gift
        MsgBox "您的级别:" & Level & Chr(13) & Chr(10) & "您的积分:" & Points & Chr(13) & Chr(10) & "您得到的额外点数:" & Gift & Chr(13) & Chr(10) & "您现在的总点数:" & Goal, vbOKOnly
        LblInfo.Caption = "您现在的点数为:" & Goal & "点"
        CheckRecord
        Tmp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Point", 0)
        Tmp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Point", 0)
        Tmp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Point", 0)
        Tmp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Point", 0)
        Tmp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Point", 0)
        Smp1 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Size", 0)
        Smp2 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Size", 0)
        Smp3 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Size", 0)
        Smp4 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Size", 0)
        Smp5 = GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Size", 0)
        strTmp = "乐趣扫雷积分榜" & Chr(10)
        strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
        strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
        strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
        strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
        strTmp = strTmp & GetSetting("乐趣扫雷游戏II", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
        MsgBox strTmp, vbOKOnly, "乐趣扫雷排行榜"
        LblInfo.Caption = "您现在的点数为:" & Goal
        Win = True
        FirstGame = False
    End If
End If
OUT:
End Sub
Private Sub FunRoundSave(ByVal Index As Integer)
Dim IntTmp As Integer
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then
    Grids(IntTmp).Sort = 0
    If Grids(IntTmp).IsBomb Then
        RightClick IntTmp
    Else
        LeftClick IntTmp
    End If
End If
End Sub
Private Sub FunRoundKill(ByVal Index As Integer)
Dim IntTmp As Integer
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
IntTmp = GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)
If IntTmp > 0 And Grids(IntTmp).Checked = 0 Then LeftClick IntTmp
End Sub
Private Sub FunLineCleaner(ByVal Index As Integer, ByVal Direct As String)
Dim I As Integer
Dim Tmp As Integer
Dim A, B As Integer
Select Case Direct
    Case "u"
        A = 0
        B = 1
    Case "d"
        A = 0
        B = -1
    Case "r"
        A = -1
        B = 0
    Case "l"
        A = 1
        B = 0
End Select
For I = 1 To 10
    Tmp = GetNum(Grids(Index).X – I * A, Grids(Index).Y – I * B)
    If Tmp > 0 And Grids(Tmp).Checked = 0 Then
        Grids(Tmp).Sort = 0
        If Grids(Tmp).IsBomb Then
            RightClick Tmp
        Else
            LeftClick Tmp
        End If
    End If
Next I
End Sub
FRMLOGIN.FRM:
Private Sub CmdOK_Click()
HNum = Val(TxtH.Text)
WNum = Val(TxtW.Text)
BombRate = Val(TxtRate.Text)
Level = Val(TxtLevel.Text)
Unload Me
End Sub
Private Sub Form_Load()
TxtH.Text = HNum
TxtW.Text = WNum
TxtRate.Text = BombRate
If FirstGame Then
    TxtLevel.Text = Level
Else
    TxtLevel.Text = Level + 1
    TxtLevel.Enabled = False
End If
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
End Sub
FRMFIGHT.FRM:
Dim YL, YD, YA, OL, OD, OA As Integer
Dim TT As Integer
Private Sub CmdCQ_Click(Index As Integer)
Dim YC, OC As Integer
YC = Index
Randomize
CC:
OC = Int(Rnd() * 3)
If OC = 3 Then GoTo CC
Fight YC, OC
If YL < 0 Then
    MsgBox "您已经被恶魔派出的小楼楼干掉了。回去准备后事吧!哈哈哈哈哈哈哈哈哈哈……", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
    Gift = Gift + (YL – OL) / 4 / Opp ^ 2
    Unload Me
End If
On Error Resume Next
If OL < 0 Then
    If Opp >= 2 Then
        MsgBox "你……你竟然把恶魔开路掉了!你果然传说中的圣骑士,黄金骑士……那个你叫什么?", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
        Life = Life + 1
        Gift = Gift + 1000
    Else
        MsgBox "您竟然将恶魔派出的小楼楼干掉了。不愧是白银骑士,伟大的……那个谁?", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
    End If
    FightResult = True
    Gift = Gift + (YL – OL) / 4 * Opp
    Unload Me
End If
End Sub
Private Sub CmdQGP_Click()
If TT > 0 Then
    OL = OL – Goal / 5
    Goal = Goal / 5 * 2
    MsgBox "看招:" & Chr(13) & Chr(10) & "耶稣神拳——" & Chr(13) & Chr(10) & "…酥神拳——" & Chr(13) & Chr(10) & "……神拳——" & Chr(13) & Chr(10) & "………拳——" & Chr(13) & Chr(10) & "………拳——" & Chr(13) & Chr(10) & "………拳!!!!", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
    TxtSaying.Text = "哇(吐血中)~~~~~你竟然还有这么强大的招数,果然厉害,佩服佩服!" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
    ShowInfo 3
    TT = TT – 1
Else
    MsgBox "糟糕!没有能量了!", vbOKOnly, "乐趣扫雷游戏II之对战竞技场"
End If
End Sub
Private Sub Form_Load()
YL = 1000
YD = 100
YA = 100
OL = 1000 * Opp
OD = 51 * (Opp + 1)
OA = 51 * (Opp + 1)
YourLife.Text = YL
YourDef.Text = YD
YourAtt.Text = YA
OppLife.Text = OL
OppDef.Text = OD
OppAtt.Text = OA
FightResult = False
If Opp = 2 Then
    Label1(0).Caption = "恶魔出:"
End If
TT = Opp * 3 – 3
End Sub
Private Sub Fight(ByVal Yours As Integer, ByVal Opp As Integer)
Dim Result As Integer
If Yours = Opp Then
    Result = 0
    GoTo RR
End If
If Yours = 0 And Opp = 2 Then
    Result = 1
    GoTo RR
End If
If Yours = 2 And Opp = 0 Then
    Result = -1
    GoTo RR
End If
If Yours > Opp Then
    Result = 1
Else
    Result = -1
End If
RR:
Randomize
Select Case Result
    Case 0
        YL = YL – FF(OA * Rnd(), YD * Rnd())
        OL = OL – FF(YA * Rnd(), OD * Rnd())
        TxtSaying.Text = "我们接着打!" & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
    Case -1
        YL = YL – FF(OA * 2 * Rnd(), YD * 2 * Rnd())
        TxtSaying.Text = ShowSaying(False) & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
    Case 1
        OL = OL – FF(YA * 2 * Rnd(), OD * 2 * Rnd())
        TxtSaying.Text = ShowSaying(True) & Chr(13) & Chr(10) & Chr(13) & Chr(10) & TxtSaying.Text
End Select
ShowInfo Opp
End Sub
Private Function FF(ByVal ATT As Integer, ByVal DEF As Integer) As Integer
If ATT > DEF + 10 Then
    FF = ATT – DEF
Else
    FF = 10
End If
End Function
Private Sub ShowInfo(ByVal OC As Integer)
YourLife.Text = YL
YourDef.Text = YD
YourAtt.Text = YA
OppLife.Text = OL
OppDef.Text = OD
OppAtt.Text = OA
Select Case OC
    Case 0
        OppCQ.Text = "剪刀脚"
    Case 1
        OppCQ.Text = "石头拳"
    Case 2
        OppCQ.Text = "铁布掌"
    Case Else
        OppCQ.Text = "发呆中"
End Select
End Sub
Private Function ShowSaying(ByVal Result As Boolean) As String
Dim IntTmp As Integer
Randomize
IntTmp = Int(Rnd() * 5)
If IntTmp = 5 Then IntTmp = 0
If Result Then
    Select Case IntTmp
        Case 0
            ShowSaying = "可恶,我怎么可能会输给这个小样呢!郁闷啊啊啊啊啊啊啊啊……………………"
        Case 1
            ShowSaying = "今天早上起来碰到一个人,姓“彭”,叫“德实”。嗨~~~~~~~~~~~"
        Case 2
            ShowSaying = "难道今天是玄天吉日?难怪我的魔力衰减得这么厉害。"
        Case 3
            ShowSaying = "不好,今天我肚子痛,让你钻空子了……"
        Case 4
            ShowSaying = "哼,你别误会,我是故意让你的。"
    End Select
Else
    Select Case IntTmp
        Case 0
            ShowSaying = "哈哈哈哈哈哈哈哈哈哈!现在知道我的厉害了吧!哇哈哈哈哈哈哈哈哈哈哈……呃~~(一个气没有接上来,送医院ing)"
        Case 1
            ShowSaying = "你别误会,我才用了一成功力。现在知道我的厉害了吧~"
        Case 2
            ShowSaying = "看看,看看,这就是传说中的正义朋友,这么不经打。"
        Case 3
            ShowSaying = "哟,输啦?别溜,让我接着揍你!"
        Case 4
            ShowSaying = "看我的绝招!天下无敌宇宙第一超级威力霹雳奶油蛋糕!"
    End Select
End If
End Function
MDMAIN.BAS:
Public Type Grid
    X As Integer
    Y As Integer
    Checked As Integer
    Environment As Integer
    IsBomb As Boolean
    Sort As Integer
End Type
Public Grids() As Grid
Public Num, HNum, WNum, BombRate, Life, Time, Bombs, BombsLeft, Points, Goal, Level, Gift As Integer
Public ShowBomb, FirstGame, FightResult As Boolean
Public Opp As Integer
最后的介绍:战斗系统取自我的另一个小游戏:《问天大战玄天邪帝》。

欢迎到我的留言板来就本帖说两句!
王天信发于Tue Feb 7 14:57:27 UTC+0800 2006

Posted February 7, 2006 by LostAbaddon in 赛伯铁客

乐趣扫雷1.0   Leave a comment

WINDOWS下的经典游戏之一,扫雷,相信给大家留下了深刻的影响。下面这个程序,就是根据WINDOWS的扫雷写的扫雷游戏。当然,和WINDOWS下的区别是:还没有图象化。不过增加了双击自动标雷(已可确定的那种,不是任意情况),并用双击取代了原本的左右同击。
需要的控件:一个LABEL,一个COMMANDBUTTON和一个TIMER。名字分别是GRIDSOFF、GRIDSON和TMRTIME。
 
Private Type Grid
    X As Integer
    Y As Integer
    Checked As Integer
    Environment As Integer
    IsBomb As Boolean
End Type
Dim Grids() As Grid
Dim Num, HNum, WNum, BombRate, Life, Time, Bombs, BombsLeft, Points As Integer
Dim ShowBomb As Boolean
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then
    If Num = 0 Then
        MnuStart_Click
    Else
        MnuRestart_Click
    End If
End If
If KeyCode = 112 Then MnuStart_Click
End Sub
Private Sub Form_Load()
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
GridsOn(0).Height = GridsOn(0).Width
GridsOff(0).Height = GridsOn(0).Width
GridsOff(0).Width = GridsOn(0).Width
WNum = GetSetting("乐趣扫雷游戏", "游戏设置", "WNum", 10)
HNum = GetSetting("乐趣扫雷游戏", "游戏设置", "HNum", 10)
BombRate = GetSetting("乐趣扫雷游戏", "游戏设置", "Hard", 16)
ShowBomb = False
End Sub
Private Sub Form_Unload(Cancel As Integer)
SaveSetting "乐趣扫雷游戏", "游戏设置", "WNum", WNum
SaveSetting "乐趣扫雷游戏", "游戏设置", "HNum", HNum
SaveSetting "乐趣扫雷游戏", "游戏设置", "Hard", BombRate
End Sub
Private Sub GridsOff_DblClick(Index As Integer)
Dim TmpA, TmpB As Integer
TmpA = GetSurround(Index)
TmpB = GetOut(Index)
If Grids(Index).Environment = TmpA Then
    If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 1, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 1, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 1, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 1, 1, 1, 1)
End If
If Grids(Index).Environment = TmpA + TmpB Then
    If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 2, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 2, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 2, 1, 1, 1)
    If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked = 0 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 2, 1, 1, 1)
End If
End Sub
Private Sub GridsOff_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
    If Grids(Index).Checked = 1 Then
        GridsOn(Index).Visible = True
        GridsOff(Index).Visible = False
        GridsOff(Index).BackColor = &H8000000F
        Bombs = Bombs + 1
        Grids(Index).Checked = 0
        If Grids(Index).IsBomb Then BombsLeft = BombsLeft + 1
    End If
    MnuBombLeft.Caption = "炸弹:" & Bombs
End If
End Sub
Private Sub GridsOn_KeyDown(Index As Integer, KeyCode As Integer, Shift As Integer)
If KeyCode = 113 Then MnuRestart_Click
If KeyCode = 112 Then MnuStart_Click
End Sub
Private Sub GridsOn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5 As Integer
Dim Smp1, Smp2, Smp3, Smp4, Smp5 As String
Dim StrTmp As String
If Life = 0 And Not ShowBomb Then GoTo OUT
If Button = 1 Then
    GridsOn(Index).Visible = False
    GridsOff(Index).Visible = True
    Grids(Index).Checked = 3
    If Grids(Index).IsBomb Then
        GridsOff(Index).BackColor = vbRed
        Life = Life – 1
        MnuLifeLeft.Caption = "生命:" & Life
        Bombs = Bombs – 1
        Grids(Index).Checked = 2
        BombsLeft = BombsLeft – 1
    Else
        GridsOff(Index).Caption = Grids(Index).Environment
        If Grids(Index).Environment = 0 Then
            If GetNum(Grids(Index).X – 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y), 1, 1, 1, 1)
            If GetNum(Grids(Index).X – 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y – 1), 1, 1, 1, 1)
            If GetNum(Grids(Index).X – 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X – 1, Grids(Index).Y + 1), 1, 1, 1, 1)
            If GetNum(Grids(Index).X, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y – 1)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y – 1), 1, 1, 1, 1)
            If GetNum(Grids(Index).X, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X, Grids(Index).Y + 1)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X, Grids(Index).Y + 1), 1, 1, 1, 1)
            If GetNum(Grids(Index).X + 1, Grids(Index).Y – 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y – 1), 1, 1, 1, 1)
            If GetNum(Grids(Index).X + 1, Grids(Index).Y) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y), 1, 1, 1, 1)
            If GetNum(Grids(Index).X + 1, Grids(Index).Y + 1) > 0 And Grids(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1)).Checked < 3 Then Call GridsOn_MouseDown(GetNum(Grids(Index).X + 1, Grids(Index).Y + 1), 1, 1, 1, 1)
        End If
End If
ElseIf Button = 2 Then
    If Grids(Index).Checked = 0 Then
        GridsOn(Index).Visible = False
        GridsOff(Index).Visible = True
        GridsOff(Index).BackColor = vbBlue
        Bombs = Bombs – 1
        Grids(Index).Checked = 1
        If Grids(Index).IsBomb Then BombsLeft = BombsLeft – 1
        If Bombs = 0 Then
            If BombsLeft = 0 Then
                MsgBox "恭喜您获得胜利!", vbOKOnly, "乐趣扫雷游戏"
            Else
                MsgBox "抱歉,您把一些不是地雷的地方给扫了。作为补偿,您陪上了您的生命!", vbOKOnly, "乐趣扫雷游戏"
                Life = Life – BombsLeft
                If Life < 0 Then Life = 0
            End If
            MnuLifeLeft.Caption = "生命:" & Life
            Points = Num * BombRate / (1 + ((Num * BombRate / Num – 0.25) * 10) ^ 2) / Time * Life * 1000 * Num ^ 0.55 * BombRate ^ 0.75
            TmrTime.Enabled = False
            MsgBox "您的积分:" & Points, vbOKOnly
            CheckRecord
            Tmp1 = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Point", 0)
            Tmp2 = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Point", 0)
            Tmp3 = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Point", 0)
            Tmp4 = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Point", 0)
            Tmp5 = GetSetting("乐趣扫雷游戏", "游戏记录", "No5Point", 0)
            Smp1 = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Size", 0)
            Smp2 = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Size", 0)
            Smp3 = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Size", 0)
            Smp4 = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Size", 0)
            Smp5 = GetSetting("乐趣扫雷游戏", "游戏记录", "No5Size", 0)
            StrTmp = "乐趣扫雷积分榜" & Chr(10)
            StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
            StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
            StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
            StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
            StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
            MsgBox StrTmp, vbOKOnly, "乐趣扫雷排行榜"
        End If
    End If
End If
MnuBombLeft.Caption = "炸弹:" & Bombs
If Life = 0 And Not ShowBomb Then
    MsgBox "抱歉,你已经死了。", vbOKOnly, "乐趣扫雷游戏"
End If
OUT:
End Sub
Private Sub MnuClear_Click()
If MsgBox("您确定要清除乐趣扫雷游戏积分榜上的所有积分记录?", vbYesNo, "乐趣扫雷游戏") = vbYes Then
    For I = 1 To 5
        SaveSetting "乐趣扫雷游戏", "游戏记录", "No" & I & "Name", "乐趣扫雷游戏"
        SaveSetting "乐趣扫雷游戏", "游戏记录", "No" & I & "Size", "30*30:21"
        SaveSetting "乐趣扫雷游戏", "游戏记录", "No" & I & "Point", 100
    Next I
End If
End Sub
Private Sub MnuExit_Click()
End
End Sub
Private Sub MnuHelp_Click()
MsgBox "在界面中,凸起的格子为尚为探明的区域,凹下的格子为已经探索或者已经标号的区域。" & Chr(10) & "在凸起的格子上点击左键来探索该区域,点击右键来为该区域标号。" & Chr(10) & "若所探索的格子中存在地雷,则格子凹下同时显示红色,表示该处地雷已炸,同时玩家丧失一条性命。" & Chr(10) & "标号的格子会凹下显示蓝色。若时候认为该处不应标号,可通过在该处再次点击右键来消除标号。" & Chr(10) & "一个区域已经探索,并且周围已经具有了如其显示的标号数以后,可以通过双击该处进行自动探索。" & Chr(10) & "同时,若在某已探索区域周围剩下的未探索区域就是其所显示的雷数,则对这些区域自动标号。" & Chr(10) & "游戏以往家的性命全部丧失或者地图上所有地雷被标号作为结束。" & Chr(10) & "如果胜利结束,则显示玩家积分和排行榜。" & Chr(10) & Chr(10) & "感谢您对梦幻工作室游戏的支持,谢谢!", vbOKOnly, "乐趣扫雷游戏"
End Sub
Private Sub MnuRestart_Click()
ShowBomb = False
For I = 1 To Num
    Grids(I).IsBomb = False
    Grids(I).Checked = 0
    GridsOff(I).BackColor = &H8000000F
Next I
Bombs = Int(Num * (BombRate + Rnd() * 10 – 5) / 100)
If Bombs = 0 Then Bombs = Int(Num * BombRate / 100)
BombsLeft = Bombs
Time = 0
Life = 10
TmrTime.Enabled = True
MnuLifeLeft.Caption = "生命:" & Life
Grids(0).Checked = 5
PutGrids HNum, WNum
PutBomb
End Sub
Private Sub MnuShow_Click()
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5 As Integer
Dim Smp1, Smp2, Smp3, Smp4, Smp5 As String
Dim StrTmp As String
Tmp1 = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Point", 0)
Tmp2 = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Point", 0)
Tmp3 = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Point", 0)
Tmp4 = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Point", 0)
Tmp5 = GetSetting("乐趣扫雷游戏", "游戏记录", "No5Point", 0)
Smp1 = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Size", 0)
Smp2 = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Size", 0)
Smp3 = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Size", 0)
Smp4 = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Size", 0)
Smp5 = GetSetting("乐趣扫雷游戏", "游戏记录", "No5Size", 0)
StrTmp = "乐趣扫雷积分榜" & Chr(10)
StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No1Name", "") & ":" & Tmp1 & "@" & Smp1 & Chr(10)
StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No2Name", "") & ":" & Tmp2 & "@" & Smp2 & Chr(10)
StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No3Name", "") & ":" & Tmp3 & "@" & Smp3 & Chr(10)
StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No4Name", "") & ":" & Tmp4 & "@" & Smp4 & Chr(10)
StrTmp = StrTmp & GetSetting("乐趣扫雷游戏", "游戏记录", "No5Name", "") & ":" & Tmp5 & "@" & Smp5 & Chr(10)
MsgBox StrTmp, vbOKOnly, "乐趣扫雷排行榜"
End Sub
Private Sub MnuShowBomb_Click()
Dim I As Integer
ShowBomb = True
For I = 1 To Num
    Call GridsOn_MouseDown(I, 1, 1, 1, 1)
Next I
End Sub
Private Sub MnuStart_Click()
On Error Resume Next
Dim I, J As Integer
ShowBomb = False
For I = 1 To GridsOn().Count
    Unload GridsOn(I)
    Unload GridsOff(I)
Next I
WNum = Val(InputBox("请输入横向格子数:", "乐趣扫雷游戏", WNum))
HNum = Val(InputBox("请输入纵向格子数:", "乐趣扫雷游戏", HNum))
BombRate = Val(InputBox("请输入炸弹比例期望值(百分比):", "乐趣扫雷游戏", BombRate))
If BombRate > 80 Then
    MsgBox "炸弹比例设置太高,考虑到您的智慧,我们不推荐您这么做。我们将帮您设置为80。", vbOKOnly, "乐趣扫雷游戏"
    BombRate = 80
End If
If BombRate < 10 Then
    MsgBox "炸弹比例设置太低,考虑到您的智慧,我们不推荐您这么做。我们将帮您设置为10。", vbOKOnly, "乐趣扫雷游戏"
    BombRate = 10
End If
If WNum = 0 Then WNum = 10
If HNum = 0 Then HNum = 10
Num = WNum * HNum
ReDim Grids(Num)
For I = 1 To Num
    Load GridsOn(I)
    Load GridsOff(I)
Next I
Grids(0).Checked = 5
Me.Height = WNum * GridsOn(0).Width + 1100
Me.Width = HNum * GridsOn(0).Width + 125
Me.Top = (Screen.Height – Me.Height) / 2
Me.Left = (Screen.Width – Me.Width) / 2
PutGrids HNum, WNum
Randomize
Bombs = Int((BombRate + Rnd() * 10 – 5) / 100)
If Bombs = 0 Then Bombs = Int(Num * BombRate / 100)
BombsLeft = Bombs
PutBomb
Time = 0
Life = 10
TmrTime.Enabled = True
MnuLifeLeft.Caption = "生命:" & Life
End Sub
Private Sub PutGrids(ByVal HNum As Integer, ByVal WNum As Integer)
Dim I, J, TmpNum As Integer
On Error Resume Next
For I = 1 To HNum
    For J = 1 To WNum
        TmpNum = (I – 1) * WNum + J
        Grids(TmpNum).X = I
        Grids(TmpNum).Y = J
        Grids(TmpNum).Checked = 0
        GridsOn(TmpNum).Left = (I – 1) * GridsOn(0).Width
        GridsOn(TmpNum).Top = (J – 1) * GridsOn(0).Width
        GridsOff(TmpNum).Left = (I – 1) * GridsOn(0).Width
        GridsOff(TmpNum).Top = (J – 1) * GridsOn(0).Width
        GridsOn(TmpNum).Visible = True
        GridsOff(TmpNum).Visible = False
    Next J
Next I
End Sub
Private Sub PutBomb()
Dim I, J As Integer
J = Bombs
BOMBSETTINGSTART:
Randomize
I = Int(Rnd() * Num)
If I = 0 Then I = 1
If Grids(I).IsBomb = False Then
    Grids(I).IsBomb = True
    J = J – 1
End If
If J > 0 Then GoTo BOMBSETTINGSTART
MnuBombLeft.Caption = "炸弹:" & Bombs
For I = 1 To Num
    Grids(I).Environment = GetEnvironment(I)
Next I
End Sub
Private Sub TmrTime_Timer()
MnuTimeUsed.Caption = "时间:" & Time
Time = Time + 1
End Sub
Private Function GetNum(ByVal A As Integer, ByVal B As Integer) As Integer
If A <= 0 Or B <= 0 Or A >= HNum + 1 Or B >= WNum + 1 Then
    GetNum = 0
Else
    GetNum = (A – 1) * WNum + B
End If
End Function
Private Function GetEnvironment(ByVal Num As Integer) As Integer ‘察看给定格子周围有多少炸弹
GetEnvironment = 0
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).IsBomb Then GetEnvironment = GetEnvironment + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).IsBomb Then GetEnvironment = GetEnvironment + 1
End Function
Private Function GetSurround(ByVal Num As Integer) As Integer ‘察看给定格子周围已经有多少格子被察看过
GetSurround = 0
‘察看有多少是标上雷的
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 1 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 1 Then GetSurround = GetSurround + 1
‘察看有多少雷已经炸开
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 2 Then GetSurround = GetSurround + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 2 Then GetSurround = GetSurround + 1
End Function
Private Function GetOut(ByVal Num As Integer) As Integer ‘察看给定格子周围有多少格子没有察看
GetOut = 0
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X – 1, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y – 1)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y)).Checked = 0 Then GetOut = GetOut + 1
If Grids(GetNum(Grids(Num).X + 1, Grids(Num).Y + 1)).Checked = 0 Then GetOut = GetOut + 1
End Function
Private Sub CheckRecord()
Dim Tmp1, Tmp2, Tmp3, Tmp4, Tmp5, Tmp As Integer
Dim StrTmp As String
Tmp1 = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Point", 0)
Tmp2 = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Point", 0)
Tmp3 = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Point", 0)
Tmp4 = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Point", 0)
Tmp5 = GetSetting("乐趣扫雷游戏", "游戏记录", "No5Point", 0)
If Points >= Tmp1 Then
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Point", Tmp4
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Size", StrTmp
   
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Point", Tmp3
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Size", StrTmp
   
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Point", Tmp2
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Size", StrTmp
   
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No2Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No2Point", Tmp1
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No1Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No2Size", StrTmp
   
    StrTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏", "乐趣扫雷游戏")
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No1Name", StrTmp
    StrTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No1Size", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No1Point", Points
    GoTo ENDS
End If
If Points >= Tmp2 Then
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Point", Tmp4
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Size", StrTmp
   
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Point", Tmp3
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Size", StrTmp
   
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Point", Tmp2
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No2Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Size", StrTmp
   
    StrTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏", "乐趣扫雷游戏")
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No2Name", StrTmp
    StrTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No2Size", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No2Point", Points
    GoTo ENDS
End If
If Points >= Tmp3 Then
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Point", Tmp4
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Size", StrTmp
   
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Point", Tmp3
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No3Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Size", StrTmp
   
    StrTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏", "乐趣扫雷游戏")
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Name", StrTmp
    StrTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Size", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No3Point", Points
    GoTo ENDS
End If
If Points >= Tmp4 Then
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Name", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Name", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Point", Tmp4
    StrTmp = GetSetting("乐趣扫雷游戏", "游戏记录", "No4Size", 0)
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Size", StrTmp
   
    StrTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏", "乐趣扫雷游戏")
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Name", StrTmp
    StrTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Size", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No4Point", Points
    GoTo ENDS
End If
If Points >= Tmp5 Then
    StrTmp = InputBox("请输入您的名字:", "乐趣扫雷游戏", "乐趣扫雷游戏")
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Name", StrTmp
    StrTmp = HNum & "*" & WNum & ":" & BombRate
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Size", StrTmp
    SaveSetting "乐趣扫雷游戏", "游戏记录", "No5Point", Points
End If
ENDS:
End Sub

欢迎到我的留言板来就本帖说两句!
王天信发于Tue Feb 7 14:34:49 UTC+0800 2006

Posted February 7, 2006 by LostAbaddon in 赛伯铁客

用VB辅助ASP   6 comments

Posted February 7, 2006 by LostAbaddon in 赛伯铁客

最近几天   Leave a comment

最近几天一直没来更新SPACE,感到很过意不去。
自从春节开始,每天几乎都有新奇的事发生。
年初一,我意外地发现原来《酷狗宝贝》就是《掌门狗》,这还让我兴奋了半天呢。
自从《阿凡体》以后已经许久没有看过木偶剧了,当然,《掌门狗》是橡皮泥的,不是木偶的。原本以为就是给小孩子看的橡皮泥剧,结果才看了它的《魔兔诅咒》(后来知道内容和题目不对的,应该是《牧羊狗》),就发觉它还真能吸引人。喜欢吃CHEESE的发明家WALLANCE,以及超级聪明的小狗狗GROMIT,实在是让人看了还想看。于是就下了它的最新一集《人兔的诅咒》(这才是《魔兔诅咒》)继续过瘾~~
此外,那天我还下了VS.NET的2005版,看来学习新语言的时刻又到了。
初二,下了星爷的《功夫》和《食神》重温故梦,发觉星爷的片子还是很经典的。然后看了张国荣的《花田喜事》,很有过年的味道。晚上又看了几部以前下的片子,巨怀旧的说~~
初三家里请客,亲朋好友一箩筐,我就忙着把人从车站接过来和继续看电影(陆续地看,因为人是陆续地来的)。晚上玩了会游戏,看了发哥和张国荣的《纵横四海》,爆经典的~~
初四去我妈的表妹家吃饭,一共4家人家12个人。她家在南京路旁的北京路,很热闹也很拥挤的说。吃完了爆丰盛的午餐后出去逛南京路,结果发觉原来是被我二哥骗了——他是出来买衣服的,而我们三个(我,我大哥和我妈表妹的女儿——很漂亮的上师大表妹)出来完全是来感受人潮的。结果在人民广场下的地下商城中的一家冷冰店里吃了两大盘的冷冰。这是我才发笑我表妹有很强的破坏欲……汗中……
晚上吃晚饭的时候遇到了一个比较远的亲戚。好象是我妈这边的,又好象是我爸这边的。不过我外公和我奶奶据我所知本来就是很远的亲戚,所以中间过程就比较复杂了。总之,他就是我亲戚了。姓郭,和我们沈家是世交(我当然不姓沈了,但是我外公和我奶奶是姓沈的……传说以前还是地主级呢……我爷爷还是解放军的干活,只可惜后来在一次关键战役中逃了,不然,当年和他一起的当时没死的,现在都是政府要员哪~~)。他当年高考差了几分(十分以内)落选,便参军,结果到现在当上了副团长。在军队,现在据说营长年薪都有十万……然后每大一级就能多拿5万的年薪。后来退役了,到了环保局当干部,国家公务员,一个月六千。自己还开了家厂,年利润用万做单位的话都要上三位数。于是乎,当我知道我还有这样一个亲戚存在的时候,不由地楞了一下:没想到我家还是个大家族啊……去年过年的时候碰到一个是教育局做高官的,今年就碰到一个副团长。明年是不是要见主席呢? 他的女儿比我小了5岁,现读高一,也很漂亮。他哥,也是我舅舅,N年前见过一次,在做国家的干部的同时还是搞私营的,现在在他弟弟也就是我前面说的那个舅舅那做技术总监,一个月5000不算自己的厂。
晚上走的时候,我们又神奇地得到了一份“天山雪莲”……据说治病强身很有效,而且种的时候只要给低脂牛奶就行了。这让我突然感觉自己在拍武侠片……
由于初四晚饭见到了这位亲戚,于是他邀请我们初五去他家玩。他家在我学校旁边的一个小区里,四室两厅两卫,一个月电费就几百,因为家里装了个小型锅炉……还自己买了辆宝马和一辆面包车(也是名牌,跑业务用的)。晚上吃饭的时候遇到了N年没见的小姑妈,激动了N就。晚上那顿饭吃了1700,还是用军官证和环保局的证件打了天晓得多离谱的折扣以后的。上好的黄酒和红酒开了三瓶,就连我说不再酗酒的,当场还被服务小姐倒了六七杯,不算自己和我哥给我倒的。饭后老爸直说我酒量好象很好嘛~~也不想想当年喝酒闹事的主要人物不就是我么~~晚上我爸妈一辈的开了桌麻将打,我就和我大哥、上师大的表妹和曹杨的表妹(就是副团长舅舅的女儿)一起打牌到晚上2点半。晚上最离谱的是,我舅妈和我上师大的表妹睡我那舅舅家的客房,而我和我大哥睡我曹杨表妹的房间……长这么大了还是第一次睡小姑娘的床,而且还是个漂亮姑娘的床,弄得我还很不好意思的……
初六醒来后就去了二姨妈家,辅导我二哥英语(就我这水平也能去辅导,嗨……),结果玩了一天。
初七二姨妈家请客大伙吃饭,这次两个很远的舅舅没来,不过初三也到我家来的一位姨妈来了。她是我妈一家以前在上海的老家的邻居,不过由于他们家和我们家也是世交(好象是她的妈妈和我的外婆是亲戚),所以关系一直很不错。特别是这为姨妈和我妈还是我二姨妈的关系,更是好到了一个境界,所以节日的时候一直相互串门的。整个下午我都在玩《傲视三国》和《街头篮球》,后来猛然发现我大哥也在玩《街头篮球》,而且和我一样是后卫LV7。那次晚饭又喝了个够……
初八在家疗养一天,因为是我生日(农历),初九,就是今天,去了我前面说的第二个舅舅的儿子那。他在闵行消防中队做卫生员,能做的理由是我那舅舅和上海消防局长是姻亲……我知道了自己都感到可怕……这次去给他补课是因为三月有个军官学校入学考,关系再强不及格总不好办。后来还得到个意外的消息:如果我以后找不到工作,凭着大学文凭和本人电脑方面的专业技能,一样能被弄进消防局,一年后转正,年薪10万,4年后15万……
突然感到,我家好恐怖啊……

欢迎到我的留言板来就本帖说两句!
王天信发于Tue Feb 7 11:24:26 UTC+0800 2006

Posted February 7, 2006 by LostAbaddon in 世界叶