diff options
-rwxr-xr-x | ChangeLog | 23 | ||||
-rw-r--r-- | FAQ | 29 | ||||
-rw-r--r-- | FAQ.zh | 26 | ||||
-rw-r--r-- | Levels | 10 | ||||
-rw-r--r-- | Levels.zh | 254 | ||||
-rw-r--r-- | Readme | 35 | ||||
-rw-r--r-- | Readme.zh | 31 | ||||
-rwxr-xr-x | VERSION | 2 | ||||
-rw-r--r-- | global.h | 3 | ||||
-rw-r--r-- | main.cpp | 8 | ||||
-rw-r--r-- | menus.h | 30 | ||||
-rw-r--r-- | scorec.h | 2 | ||||
-rw-r--r-- | scoresystem.h | 23 | ||||
-rw-r--r-- | towernbullet.h | 2 |
14 files changed, 290 insertions, 188 deletions
@@ -5,7 +5,6 @@ Todo's: *Adjust difficulty!*//almost done? *Add multpo's.*//almost done? *Distribute CLRs.*//almost done? -Ranking rewrite. Bug fixes. Tests.*//done?... Wishlist? @@ -14,14 +13,30 @@ Known bugs: Blue bullets appearing in Vortex of leaves.//don't know why... Wishlist: -Add spawning effect for Multpo. -Make more data stored in .blrscore. -In-game music bring back. ~~Now Playing(Music Room)~~ ~~BLR script virtual machine~~(long long-term! probably the core of next BLR.) Pre-Released versions: +0.9.9-0 (r99) +Rev. 99! WTF? +THIS IS THE FINAL RELEASE CANDIDATE!!! +Everything is frozen, that means no more new features will be +added and no big changes will be made after this revision. Only +bug fixes will be provided. +//Again, "frozen" is a term borrowed from the Debian project and +//is completely unrelated to Cirno! + +Tweak bullet9, shrink its removal border. +Change Multpo texture, add spawning effect. +Fix stubbed rankings. +Update sprite sheet. +Store assessment total elapsed time in the score file. Score +files from older revisions shouldn't cause any errors but you may +get "Time elapsed 0.00" in highscore details. If you've got any +sort of OCD (Obsessive-compulsive disorder), just remove it. +Document!!! + 0.9.8-0 (r98) Dear Pre-Release Candidate version(RC-0). @@ -61,7 +61,7 @@ A: This might be a internal problem. Please make a bug report if this happened. Q: It crashed! -A: This program is *pretty unstable* and may crash at any time. +A: This program may crash at any time. If it crashed, you can post your problem with BLRLOG.txt attatched to google code issue tracker. I'll try to fix the problem if I can reproduce it. @@ -70,17 +70,16 @@ Q: "Cannot decompress resources!" (Windows only) A: I've compressed the resources of the game for Windows. As the game starts, it will create two folders and decompress the resources into them. If that failed, this problem will be reported. - Restarting the game may solve the problem. + Restarting the game may solve the problem. If it still fails, check + if expand.exe exists in your system(It's an essential system file!). Q: Your code cannot compile! A: I'm pretty sure that it CAN compile(on my machine). - Check if you have all required sdks. + Check if you have all required sdks installed and if you have + configured the project correctly. Additionally, if you checked out an older revision from svn, I cannot guarantee that it can compile! -Q: You included in-game music in your package, but they are not played! -A: The playing code is commented. You can figure it out yourself. - Q: What are BLRData.dtp and BLRMusic.dtp? A: As the name tells, these are archives containing the game data. You can decompress them with expand.exe (which may be found in @@ -142,6 +141,24 @@ A: If you can reach level 1~3... If you can pass level -1... --Tell me the reason why you come to Earth... +Q: Why can't I play all levels, it tells me "It Ends Here"! Do I have to pay + you for it? +A: Of course not! 'Cause You just restarted too many times or had too many + collisions. The detailed requirements is listed below. + Level Restarts allowed Collisions allowed + level 2 N/A N/A + level 3 1 10 + level 4 2 40 + level 5 3 75 + level 6 5 125 + level 7 8 200 + level -1 2 50 + + For example, to enter level 6 you can restart 5 times at most (classical + mode), or have 125 collisions at most (FreePlay Mode). + + Level -2 can only be accessed in assessment mode or "--start" option. + Q: Are there other awards? A: Sorry, no... You won't get anything but the ranking even you've passed level -1 without @@ -50,7 +50,7 @@ Q: 屏幕突然花了! A: 这应该是个内部问题。如果你遇到了请汇报这个bug. Q: 它崩溃了! -A: 这个程序还处于「非常不稳定的阶段」并且*随时*都可能崩溃。 +A: 这个程序*随时*都可能崩溃。 如果它崩溃了,你可以将你的问题附上BLRLOG.txt一起发到google code的问题 跟踪(大致就是一个类似bugzilla的东西?)上。如果我能重新制造出这个问题,我将会在以后 试着去修正它。 @@ -58,16 +58,14 @@ A: 这个程序还处于「非常不稳定的阶段」并且*随时*都可能崩 Q: "Cannot decompress resources!" (仅限Windows) A: 我将Windows版的游戏资源压缩了。当游戏启动时,它会建立两个文件夹并将数据 解压在其中。如果这失败了,将会弹出这个错误框。 - 重启游戏大概就能解决了。 + 重启游戏大概就能解决了。如果还不行,请检查你的系统中是否包含expand.exe(这是个重要的 + 系统文件!)。 Q: 你的代码没法编译! A: 我非常肯定它(在我的机器上)*能*编译。 - 检查你是不是已经获取了所有需要的SDK。 + 检查你是不是已经获取了所有需要的SDK,并且工程设置的是否正确。 另外,如果你使用的是一个从svn获取的较老的版本,我就不能保证它能编译了… -Q: 你的包中有一些音乐,但是他们根本没有被播放? -A: 播放的代码被注释掉了。你可以自己发现的。 - Q: BLRData.dtp和BLRMusic.dtp是什么? A: 正如名字说的,他们包含了游戏的数据。 你可以用expand.exe解压这两个文件,expand.exe可以从神秘的system32文件夹 @@ -120,6 +118,22 @@ A: 如果你能到Level 1~3... 如果你能通过Level -1... --告诉我你来地球的目的… +Q: 为什么我玩不了所有的关卡…它告诉我“It Ends Here!”(到此结束了!)。 + 我难道还需要付钱吗? +A: 当然不!还是因为技术太渣了。关于进入下一关的要求,见下表。 + 关卡 最多重开数 最多撞弹数 + level 2 N/A N/A + level 3 1 10 + level 4 2 40 + level 5 3 75 + level 6 5 125 + level 7 8 200 + level -1 2 50 + 举个例子,为了能够进入第6关你最多重开5次(“经典”模式中),或者最多撞弹 + 125次(自由模式中)。 + + Level -2只能通过评估模式或者"--start"选项玩到。 + Q: 有其他奖励吗? A: 对不起,没有… 即使你一个没有吃到一个子弹地通了Level -1你也不会得到任何东西。 @@ -75,6 +75,7 @@ Double spinner 60 Squash-2 60 -Enjoy it yourself. + I think it may make the situation worse. Circle-drawing 60 -Just draw the circle. @@ -125,7 +126,7 @@ Snow WHITE 30 Remark: They are accelerated! Photokeratitis 10+10+10+10+10 --This is sickly hard... +-This used to be sickly hard... Treat fast bullets and slow bullets separately. Remark: It looks like Wriggle Nightbug's spellcard... As of r94, it's not so hard as it was before. Fast bullets @@ -149,13 +150,10 @@ Hexagon loops 10+20+7+7+7+19 Hyperfluid 60 -Also known as Superfluid. - Designed to be a spellcard(?) of someone who has the ability - to manipulate ice... In fact, liquid helium is not cold enough. It's still several Kelvin's degrees. I can make it even colder. Remark: The white bullets are not accelerated, which are different from the blue ones. The blue bullets share the same direction: 45 deg. - This part was designed as 「my」 「spellcard」 at first... Also will become easier if horizonal movement is restricted... Level 7 12/930+ Mapped levels @@ -192,7 +190,7 @@ Rainbow effect - photon school 60 "particalization"! -Pretty hard. Use CLR if necessary. It may be easier if you stay near the edges. (I don't really know.) -Over the Rainbow - timeless challenge - great circles +Over the Rainbow - infinity challenge - great circles -Your goal is to reach the red block... And, this one is also pretty hard... If you're not well-skilled and you are working on FPM, try --suicide--, @@ -200,7 +198,7 @@ Over the Rainbow - timeless challenge - great circles Remark: This level will never end if you don't reach the red block... Trypophobia 120 another two classes: Tail & Pile --Very hard. You'll never know where they will go next. +-Very hard. You'll never know where they will go next(neither will they). However, they won't step on the same place twice. Will this cause trypophobia? Remark: This level almost burn my computer... @@ -7,14 +7,15 @@ BulletLabRemixII 强烈推荐在阅读本文档前先自己玩一下。 不适宜人群: -Anybody who isn't insterested in this topic -Liberal arts students(?...) +? + + 适宜人群: -Nobody(?) -Coders who want to modify this game, or import levels to your game... -Casual persons who won't care anything -Someone who is stuck at a part +? + + + @@ -24,235 +25,224 @@ Someone who is stuck at a part ======================警告:下面有好多好多字!====================== Level 1 2/180 River levels 120 --It's confusing... so much bullets for Level1? - However it's fairly easy. Do not seek for death(where those "+1" are - leading you to) +-为什么第一关就这么多子弹… + 其实非常简单,别作死就行。(而那些“+1”就是要你这么做。) Double-directed labyrinth 60 --Still very easy. +-还是非常简单。 Level 2 4/215 Polygon-red 60 --This is not hard... - Fake bullets aren't always annoying. +-这个也不难… + 外面那一圈没有看上去的那么麻烦。 Polygon-white 60 --Make good use of precise mode. +-利用好shift键(我的shift键已经卡在键盘里弹不出来了)。 Polygon-white locked 6 --You can't move vertically! - Find a good position, e.g. near by a line. +-你不能在竖直方向上移动了! + 找一个好的位置呆着。 Polygon-both 30 --This part doesn't make sense. +-这关毫无意义。 Level 3 4/150 Reflective 30 --Just meet them, do not make big movements. - They are pretty friendly aren't they? +-初次见面,它们看起来还挺友好的是吧? *4 30 --It's a little difficult... Keep away from the edges! +-稍微有点难…离边框远点! Rotate ???? 60 --Stay away from the rotating bullets. +-不要靠近那些旋转的子弹。 Wall of blues? 30 --Rather easy. Do not try to earn too may semi-collisions unless - you are really skilled. - Looks awesome? +-相当简单。别刷擦蛋,除非你是大触。 + 看起来很厉害? Level 4 5/243 Orange 30 --Don't make big movements and stay away from the edges. (why?) - Those fast bullets are really annoying. +-高速子弹非常烦人。 Orange trap 5+5+4+4+3+3+2+2+5 --Do NOT press shift! +-别按shift! Double spinner 60 --An easy part for level 4. +-对于第4关来说算是简单的部分。 Squash-2 60 --Enjoy it yourself. +-好好享受… + 我想这可能会让情况变得更坏。 Circle-drawing 60 --Just draw the circle. - If you have any problem, try BLR 1. +-画圈就行了。 + 如果你有任何问题,去试试BLR 1. Level 5 8/338 CChase 30+30 --Don't set player move speed to 1! - Remark: They are not really faster than you... +-不要把移动速度设置为1! + 说明:它们不是真的比你快… Vortex of leaves 60 --This is another annoying level, looks awesome and hard. - Keep away from those 'laser''s! - Remark: The lasers may have strange collision detection... - Be careful! +-另一个烦人的关卡,看着挺好看,但是也很难。 + 离那些“激光”远点! + 说明:激光的判定可能有点奇怪。 Upstream flow 60 --Rather easy. - Looks like something in level 3. +-相当简单了。 + 看起来有点像第3关。 High speed threaten 30 --It's JUST threaten! - Precision is important. - Practice makes perfect. - If you *can't* move horizonally may be it's easier... +-这只是吓唬人的! + 你需要精准的移动。 + 或许如果你不能水平移动的话这关会简单一点… Crossing threaten 30 --Appears very hard. - Choose the correct time to cross those bullets. +-看起来非常难。 + 选择正确的时机穿过它们。 Orange trap2 2+2+2+5 --Just another level from level 4. +-第4关? Fish in the barrel 60 --Seems to be faster and faster? NO... - Remark: Those bullets are comming directly towards you. +-好像越来越快了?不… + 说明:那些子弹是“自机狙”。 the Unbreakable jail 30 --This is fairly hard. Use CLR if you need it. - Remark: When the 'target' got red, it's about to update its - position. If you keep moving when it's updating its position, - it will stuck in update mode, or it will stop. +-相当难…如果感觉到了请使用CLR。 + 说明:当那个“轮子”变红的时候,它就要更新它的位置了。如果你在它更新位置 + 的时候一直移动,它将卡在更新模式,否则它会停下来。 Level 6 7/390 Snow WHITE 30 --Incredible fast. Do not treat your CLR as a - £100,000,000 cheque. - Remark: They are accelerated! +-太快了…多用CLR… + 说明:它们还被加速了! Photokeratitis 10+10+10+10+10 --This is sickly hard... - Treat fast bullets and slow bullets separately. - Remark: It looks like Wriggle Nightbug's spellcard... - As of r94, it's not so hard as it was before. Fast bullets - won't hit you *if you don't move*. +-这关曾经难的丧心病狂… + 区别对待快速弹和慢速弹。 + 说明:看着有点像谁的符卡… + 到r94以后,这关没有之前那么难了。如果你不动的话,快速弹根本打不到你。 Squash-4(?) 60 --Do not be trapped! You only need ONE CLR!... +-别被困在里面!你只需要一个CLR! Avalanche 60 --Do not stay at the screen bottom, it's very dangerous... +-不要呆在屏幕底端,那里非常危险… Dangerous target 60 --Keep moving! - It's a nightmare if you've choose a slow player... - Remark: The target follows you as a yellow bullet does, - but not in the same manner. +-别停下来! + 如果你的移动速度设置的很慢,那这将是一场噩梦… + 说明:“轮子”就像黄色子弹一样跟着你,但是姿势不同。 Hexagon loops 10+20+7+7+7+19 --Step well back and watch the show. - Remark: This level will misbehave if FPS dropped... +-找个角落停下来然后观看表演。 + 说明:如果FPS低于55,那么这关可能会变形… Hyperfluid 60 --Also known as Superfluid. - Designed to be a spellcard(?) of someone who has the ability - to manipulate ice... - In fact, liquid helium is not cold enough. It's still several - Kelvin's degrees. I can make it even colder. - Remark: The white bullets are not accelerated, which are different - from the blue ones. The blue bullets share the same direction: 45 deg. - This part was designed as 「my」 「spellcard」 at first... - Also will become easier if horizonal movement is restricted... +-超流体。 + 其实液氦还不够冷,本来这部分还可以更冷一些的… + 说明:蓝色子弹是加速的,而白色的没有。所有蓝色子弹的方向都是相同的。 + 如果限制水平移动的话会简单一些。 Level 7 12/930+ Mapped levels Spring thunder storm - panic? 60 Thunder storm... --Although it's based on something from level 6, they are completely - different! - And this one is really easy. - Remark: Try to get to the top of the screen... - Try restricting vertical movement this time... +-虽然代码是基于上一关写的(看着也很像),但是它们完全不同! + 这个真的很简单… + 说明:试着在屏幕顶端躲避… + 这次试着限制一下竖直方向的移动… Rainbow tower - color theory 90 rainbow tower --Basic level. - Remark: It's taken from the old testbed version of BLRII. +-基础的关卡。 + 说明:这关是从很老的试验版本的BLR2中拿出来的。 Rainbow bullets - nauty photon 60 Lazy level;) --Similar to one part in level1, but *much* harder. - Luck is really required. - Remark: The generation of bullets is really strange... If the last position - on the y axis is taken up... sorry that I started to talk about coding again. +-看着很像第一关的什么东西,但是难多了! + 很拼RP… + 说明:生成子弹的过程比较奇怪…… Rainbow effect - appearance 60 draw a rainbow (of bullet) --Random bullets. You will remember this part at once when you see the part. - If you feel it hard, go to assessment mode. - Remark: The bullets forming the rainbow are invincible. +-随机弹。你一看到这一关就会记住它的。 + 如果你感觉太难,试试评估模式吧。 + 说明:组成彩虹的子弹是不会被消掉的。 Rainbow effect - interference 120 as the name tells --This part is REALLY easy... but why? +-*真的*太简单了…但是为什么呢? Rainbow effect - diffraction 120 as the name tells --Pretty hard. Those piles of shit may crash straight into you. - The code is pretty ugly too. +-相当难。那一大坨有可能糊你一脸。 + 代码也很难看。 Rainbow effect - photon school 60 "particalization"! --Pretty hard. Use CLR if necessary. - It may be easier if you stay near the edges. (I don't really know.) +-仍然相当难(某人:这都第几关了你也不看看……) + 如果你靠近边缘的话可能会简单一点(其实我不知道)。 -Over the Rainbow - timeless challenge - great circles --Your goal is to reach the red block... - And, this one is also pretty hard... - If you're not well-skilled and you are working on FPM, try --suicide--, - it worthwhile to do so! - Remark: This level will never end if you don't reach the red block... +Over the Rainbow - infinity challenge - great circles +-你的目标是冲到红格子上… + 并且这个也很难…… + 如果你技术不过关,并且在玩自由模式,试试“自杀”(<-删除线),这比“好好玩”要经济得多! + 说明:如果你不去碰那个红格子,这关永远不会结束…… Trypophobia 120 another two classes: Tail & Pile --Very hard. You'll never know where they will go next. - However, they won't step on the same place twice. - Will this cause trypophobia? - Remark: This level almost burn my computer... - I seem to forget an important thing: Bullets with effects won't collide - for a short time after they are created... +-非常难。你永远不知道它们接下来会进入哪个格子(它们自己也不知道)。 + 但是它们不会踏上同一个格子两次。 + 这会引起密集恐惧症吗? + 说明:这关几乎要烧掉我的电脑了…… + 我好像忘了一件重要的事情:刚生成的带生成效果的子弹是没有碰撞判定的… Photon fission 90 Use a slightly modified tower8... --Directed bullets+random bullets. - Find a formula for it. +-自机狙+随机弹。 + 这是有公式的… Wave of Photon 60 class WOP+Lazy of particalization --Not very hard at the beginning... +-一开始一点也不难… Return to void 90 return (void)(...); --VERY HARD!!! - I don't know where this came from. - CLR is useless but it will give you a short period during which you are invincible. - Remark: There are "no solution" cases... +-非常难!!!(汉字不能大写真是太遗憾了。) + 我不知道这是从哪儿来的。 + CLR没什么用处,但是它会给你短暂的无敌时间… + 说明:有无解的情况… Level -1(Extreme) 7/1020 -unknown circles*2 60*2 --Pretty easy as they are only the beginning of nightmare... +unknown circles1 60 +-它们靠近边缘的时候会慢下来。*实在是太烦人了!!!* + +unknown circles2 60 +-它们直接堆积在边缘附近了!而且变得越来越厚!!…… Spiky 120 --Hard. Their behavior is not predictable. - Remark: Again, never try to approach lasers! They are harmful to your eyes... +-一个字:难!它们的行为是无法预测的。 + 说明:重复一遍,不要碰激光!会伤害眼睛的… Achromatopsia 120(90+30) --Or we should call this "deuteranopia vs protanopia"? - Remark: Color change may suddenly happen!! +-没有路了? + 好好看看这关的名字(色盲)…… + 或者我们可以把这关叫做"绿色盲 vs 红色盲"? + 说明:颜色变换是突然发生的! Quad thread 120 --Do you humans really support it? - Remark: I don't... +-人类大脑真的支持这个么? + 说明:我的不行… Gravity vortex 120 --It has nothing to do with gravity at all. +-跟引力什么的一点关系都没有,但是很难! + 看着挺好看。 Supernova(additive blending) 120 --After gathering enough power, they explode -- - Awesome supernova! - I enjoy coding(such easy parts)... +-积攒了足够的能量之后,它们爆炸了——超新星! + 我非常愿意写这种简单的关卡… + 说明:刚生成的子弹…我不能提示更多了。 yellow explosive 90 --There's nothing to code, so I came up with this... - Not deadly at all. +-没什么可写的关了,于是我就想到了这个。 + --一点也不致命。-- Sink over the horizon 90 --Strange. You might be trapped without noticing it. +-非常奇怪。经常莫名其妙的被封。 Incomplete Reflective 120 --Start in peace, end in mess. +-在平静中开始,一团糟中结束。 + 说明:有四分之一的子弹会在碰到墙时爆炸。 Remark: one in four bullets will explode when it hits the wall. Level -2(Assess) 10/? @@ -285,7 +275,7 @@ Crossing 1(L+R) Crossing 2(C) 交叉2 --直接来自泄矢诹访子的符卡。 +-直接来自泄矢 诹访子的符卡。 圆形的子弹有点令人晕头转向。 结局:你猜? @@ -306,7 +296,7 @@ Sine wave Density test 密度测试 -这个密度真的很高… - 卧×?没路了? + ××?!没路了? 结局: 玩家××× 死于一场可怕的车祸,每滴血都被*挤*到了左边的墙上。 @@ -1,9 +1,7 @@ This text is encoded in UTF-8. -NOTE: This is a pre-release version. That means: +NOTE: This is a Release Candidate version. That means: -The program may crash. It may even cause data loss. --The levels may be too hard. -There may be strange behavior. --The in-game music is included but won't be played. (See FAQ.txt) -The code may not even compile! BulletLabRemix II readme @@ -13,7 +11,6 @@ Content What's this? Story Generic Information -Menus Game Modes Command line options About the author @@ -120,8 +117,11 @@ MORE Recommends... -Achromatopsia(<-strikethrough) How to install&run it... +Windows: Just extract all files in the archive somewhere, then start the only executable file in it. +Linux: +See INSTALL. If, suddenly, you can't run it one day... Remove .blrrc then restart the game. @@ -140,9 +140,9 @@ This section has been moved to the built-in help. Select "help" in the main menu it. Menus ------------------------------------------------------------------------------------- -Main menu ----------------------------------------------------------------------- +Main menu + Start Select a mode and start the game. Highscores View highscores Options Settings and Options @@ -169,6 +169,24 @@ Go for the highest score! Free Play Mode You'll never die! Enjoy!... +Options +----------------------------------------------------------------------- +Fullscreen Toggles fullscreen. Requires restart. You can also try Alt+Enter. +VSync Toggles vsync. If your screen refresh rate is 60Hz, enable it. +Clear Range Key Select key for calling/charging CLR. +Resolution Select a resolution. Please note that the native reso. is 800x600. +Music Volume Change music volume. +SFX Volume Change SFX volume. +Player Preference See below. + +Player Preference +------------------------------------------------ +Moving Speed Speed when moving without holding shift. +Precise Moving Speed Speed when moving holding shift. +Clear Range Bonus Get more CLR's for each part. +Clear Range Mode Change CLR mode. +Ability Point If this value is greater than 10000, you can't save your settings. + Command line options ------------------------------------------------------------------------------------ Yes, it accept command line options! (And some of them may be very useful...) @@ -229,9 +247,12 @@ Brief History ------------------------------------------------------------------------------------ The file ChangeLog contains the full history of this project. Here's a list of released-to-public versions. +0.9.9-0 (r99) +The final Release Candidate. Complete the whole game system. +Fixing most of the bugs. 0.9.1-1_PR (r86) -Current public release. Comes with all levels that will appear in the final release. +Comes with all levels that will appear in the final release. Done menu rewrite. Make multiplier system functional. @@ -1,9 +1,7 @@ This text is encoded in UTF-8. 这是一个提前发布的版本,这意味着: -它可能会崩溃,甚至导致数据丢失。 --关卡太难。 -奇怪的行为。 --没有背景音乐(见FAQ.txt) -代码都可能编译不了! BulletLabRemix II Readme - 一个类似机翻的中文版 @@ -13,7 +11,6 @@ BulletLabRemix II Readme - 一个类似机翻的中文版 这是什么? 背景 概要 -菜单 模式 命令行选项 关于作者 @@ -119,7 +116,10 @@ GPU&VRAM: 非常快的渲染速度。 -全色盲(<-删除线) 如何安装/运行它… +Windows: 只需要把压缩包中的所有文件解压到某个地方,然后运行其中唯一的一个可执行程序就行了。 +Linux: +见INSTALL文件。 如果有一天你突然无法运行它了… 删掉.blrrc然后重新运行。它会重新进行初始化设定。 @@ -151,7 +151,7 @@ Exit ××来了! Classic 经典模式 一旦你碰到了任何有判定的东西就立刻结束游戏。不过你可以选择继续… -这种模式会默默地浪费时间… +这种模式非常浪费时间… Assessment Mode 评分/检测模式 温水煮青蛙实验:所有的关卡都会随着时间流逝而变难。 @@ -162,7 +162,25 @@ Assessment Mode 评分/检测模式 试着撑过最长的时间吧! Free Play Mode 自由模式 -永远不会死的模式~ +永远不会死的模式!… + +选项 +----------------------------------------------------------------------- +Fullscreen 是否全屏。重启程序后生效。你也可以试试Alt+回车。 +VSync 是否开启垂直同步。如果你的屏幕刷新率是60Hz就启用它。 +Clear Range Key 选择一个用于使用CLR或为CLR“蓄力”的键。 +Resolution 选择分辨率。默认分辨率是800x600。 +Music Volume 更改背景音乐的音量。 +SFX Volume 更改音效的音量。 +Player Preference 见下面。 + +Player Preference +------------------------------------------------ +Moving Speed 不按shift时的移动速度。 +Precise Moving Speed 按住shift时的移动速度。 +Clear Range Bonus 在每关开始时获得更多CLR。 +Clear Range Mode 更改CLR的模式。 +Ability Point 如果该数值超过10000,你无法保存此页的设置。 命令行选项 ------------------------------------------------------------------------------------ @@ -218,6 +236,9 @@ Free Play Mode 自由模式 ------------------------------------------------------------------------------------ ChangeLog包含了该工程的全部历史。 这里是一个「里程碑」的列表。 +0.9.9-0 (r99) +最终的候选版本。完成了整个游戏系统。 +修复了大部分的bug。 0.9.1-1_PR (r86) 当前的公开版本。已经包含了所有会出现在最终版本里的关卡。 @@ -1 +1 @@ -0.9.8-0 (r98)
\ No newline at end of file +0.9.9-0 (r99)
\ No newline at end of file @@ -58,6 +58,7 @@ Target 63,71,193,193 Laser Module 0,264,248,8 Ribbon Module 151,264,2,8 Multiplier"+1" 0,272,48,48 +MultPo spawn efct 48,272,48,48 Text:blnsns.png "Multiplier bonus!" 0,235,163,21 Menus and titles: menus.png @@ -272,7 +273,7 @@ DWORD DBGColor; int frameleft,infofade; int level,part,clrtime,clrbns; int coll,semicoll,mode,dsmc,restarts; -double clrrange,clrrad,clrmaxrange,clrind,assetime; +double clrrange,clrrad,clrmaxrange,clrind,assetime,asts; hgeSprite *clrcircle; bool Dis8ref,t8special; int frameskips=0,stepskips=0; @@ -302,7 +302,7 @@ void CallLevels() { //Use this to call level procedures. if((mode==1)&&coll!=0){deathMenu.Init(-200);return;} - if((mode==2)&&coll!=0){assetime=0;++part;coll=0;IfCallLevel=IfShowTip=true;return;} + if((mode==2)&&coll!=0){asts+=assetime;assetime=0;++part;coll=0;IfCallLevel=IfShowTip=true;return;} if(!IfCallLevel) return; if(mode==2)assetime+=hge->Timer_GetDelta(); //Check Complete here @@ -693,7 +693,7 @@ bool FrameFunc() case 1: playerpos.x=400,playerpos.y=400,playerrot=0; frameleft=ThirtySeconds;infofade=0xFF;Dis8ref=t8special=false; - level=-2,part=0;frms=0,averfps=0.0;bsscale=1;assetime=0; + level=-2,part=0;frms=0,averfps=0.0;bsscale=1;assetime=asts=0; if(bullet){free(bullet);bullet=NULL;} towcnt=bulcnt=0;whrcnt=12;skyactive=false;PlayerSplit=false; score=0;Mult_Init();Music_Init("./Resources/Music/CanonTechno.ogg"); @@ -1238,6 +1238,8 @@ int main(int argc,char *argv[]) snd=hge->Effect_Load("./Resources/tap.ogg"); menuin=hge->Effect_Load("./Resources/menuin.ogg"); menuout=hge->Effect_Load("./Resources/menuout.ogg"); + if(!quad.tex||!SprSheet||!TexTitle||!TexCredits) + Error("Error Loading Resources!",true); titlespr=new hgeSprite(TexTitle,0,0,640,320); playerspr=new hgeSprite(SprSheet,0,24,24,24); playerspr->SetHotSpot(12,12); @@ -1245,8 +1247,6 @@ int main(int argc,char *argv[]) ATarg.Init(-0.001,vector2d(400,300)); BTarg.Init(-0.001,vector2d(400,300)); BTarg.targspr->SetColor(0xFFC00000); - if(!quad.tex||!SprSheet||!TexTitle||!TexCredits) - Error("Error Loading Resources!",true); quad.blend=BLEND_ALPHABLEND | BLEND_COLORMUL | BLEND_NOZWRITE; DBGColor=0xFFFFFFFF; for(int i=0;i<4;i++) @@ -61,15 +61,22 @@ void Options_Writeback() char *getRank() { static char retval[256]; - //stub! //sprintf something to retval if(mode!=2) { - if(level<=3)sprintf(retval,"Try more..."); if(level<=6)sprintf(retval,"Still need more effort!"); + if(level<=3)sprintf(retval,"Try more..."); if(level==7)sprintf(retval,"You've done it!"); if(level==-1)sprintf(retval,"Why do you come to Earth?"); } + else + { + if(asts>900)sprintf(retval,"Contact me immediately!!"); + if(asts<=900)sprintf(retval,"Perfect player."); + if(asts<=600)sprintf(retval,"That's awesome."); + if(asts<=450)sprintf(retval,"Not so bad..."); + if(asts<=120)sprintf(retval,"Are you kidding?"); + } return retval; } static const char* MMStr[]={ @@ -1177,8 +1184,9 @@ public: MenuFont->printf(xoffset-100,280,HGETEXT_LEFT,"Your Ranking: %s",getRank()); if(mode==2) { - MenuFont->printf(xoffset-100,310,HGETEXT_LEFT,"Semi-collisions %d",semicoll); - MenuFont->printf(xoffset-100,340,HGETEXT_LEFT,"Average FPS: %.02f",averfps); + MenuFont->printf(xoffset-100,310,HGETEXT_LEFT,"Time elapsed: %.2fs",((int)(asts*100))/100.0); + MenuFont->printf(xoffset-100,340,HGETEXT_LEFT,"Semi-collisions %d",semicoll); + MenuFont->printf(xoffset-100,370,HGETEXT_LEFT,"Average FPS: %.2f",averfps); } else { @@ -1188,7 +1196,7 @@ public: MenuFont->printf(xoffset-100,310,HGETEXT_LEFT,"Collisions %d",coll); MenuFont->printf(xoffset-100,340,HGETEXT_LEFT,"Semi-collisions %d",semicoll); MenuFont->printf(xoffset-100,370,HGETEXT_LEFT,"CLR Usage %d",clrusg); - MenuFont->printf(xoffset-100,400,HGETEXT_LEFT,"Average FPS: %.02f",averfps); + MenuFont->printf(xoffset-100,400,HGETEXT_LEFT,"Average FPS: %.2f",averfps); } CompleteTitle->Render(xoffset-200,200); } @@ -1468,8 +1476,8 @@ public: ConfigureQuad(&UpperGradient,xoffset-140,290,600,100); ConfigureQuad(&LowerGradient,xoffset-140,440,600,130); if(hge->Input_GetKeyStateEx(HGEK_UP)==HGEKST_HIT&&selected>0)--selected,TriggerSound(0); - if(hge->Input_GetKeyStateEx(HGEK_DOWN)==HGEKST_HIT&&selected<(view==1?5:7)-1)++selected,TriggerSound(0); - if(hge->Input_GetKeyStateEx(HGEK_ESCAPE)==HGEKST_HIT)TriggerSound(0),selected=(view==1?5:7)-1; + if(hge->Input_GetKeyStateEx(HGEK_DOWN)==HGEKST_HIT&&selected<(view==1?6:7)-1)++selected,TriggerSound(0); + if(hge->Input_GetKeyStateEx(HGEK_ESCAPE)==HGEKST_HIT)TriggerSound(0),selected=(view==1?6:7)-1; yoffset=-selected*30; if(fabs(dyoffset-yoffset)<7)dyoffset=yoffset; if(dyoffset<yoffset)dyoffset+=hge->Timer_GetDelta()*400; @@ -1492,9 +1500,11 @@ public: if(dyoffset+430>289.9&&dyoffset+430<540.1) MenuFont->printf(xoffset,dyoffset+430,HGETEXT_LEFT,"Scored %lld by %s",WrapRec[no].score,WrapRec[no].name); if(dyoffset+460>289.9&&dyoffset+460<540.1) - MenuFont->printf(xoffset,dyoffset+460,HGETEXT_LEFT,"Semi-Collisions %d",WrapRec[no].scoll); + MenuFont->printf(xoffset,dyoffset+460,HGETEXT_LEFT,"Time elapsed %.2fs",WrapRec[no].rescol/100.0); if(dyoffset+490>289.9&&dyoffset+490<540.1) - MenuFont->printf(xoffset,dyoffset+490,HGETEXT_LEFT,"Average FPS %d.%d",WrapRec[no].af_int,WrapRec[no].af_fric); + MenuFont->printf(xoffset,dyoffset+490,HGETEXT_LEFT,"Semi-Collisions %d",WrapRec[no].scoll); + if(dyoffset+520>289.9&&dyoffset+520<540.1) + MenuFont->printf(xoffset,dyoffset+520,HGETEXT_LEFT,"Average FPS %d.%d",WrapRec[no].af_int,WrapRec[no].af_fric); } else { @@ -1514,7 +1524,7 @@ public: if(dyoffset+550>289.9&&dyoffset+550<540.1) MenuFont->printf(xoffset,dyoffset+550,HGETEXT_LEFT,"Average FPS %d.%d",WrapRec[no].af_int,WrapRec[no].af_fric); } - double calcy=(view==1?4:6)*30+dyoffset+400; + double calcy=(view==1?5:6)*30+dyoffset+400; if(calcy>289.9&&calcy<540.1) MenuFont->printf(xoffset,calcy,HGETEXT_LEFT,"back"); Ribb->RenderEx(xoffset-50,395,0,6,1); @@ -236,7 +236,7 @@ void InsertHighScore() ExRec[pos].len=newlen; memcpy(ExRec[pos].name,newname,sizeof(newname)); ExRec[pos].clrusg=clrusg; - ExRec[pos].rescol=restarts;ExRec[pos].scoll=semicoll; + ExRec[pos].rescol=asts*100;ExRec[pos].scoll=semicoll; ExRec[pos].af_int=(int)averfps; ExRec[pos].af_fric=(int)(averfps*10)%10*10+(int)(averfps*100)%10; break; diff --git a/scoresystem.h b/scoresystem.h index ff7e4b7..c8efc79 100644 --- a/scoresystem.h +++ b/scoresystem.h @@ -26,7 +26,7 @@ void ProcessMT() class MultPo { private: - hgeSprite *Mult; + hgeSprite *Mult,*SpwnEfx; double Lifetime,LifeLim,speed; vector2d position,direction; int blinkbrk; @@ -37,7 +37,8 @@ public: { Lifetime=0;LifeLim=_lt;speed=_speed;position=_pos;direction=_dir; Mult=new hgeSprite(SprSheet,0,272,48,48);Active=true;blinkbrk=0;blnkshow=true; - Mult->SetHotSpot(24,24);followplyr=false; + Mult->SetHotSpot(24,24);followplyr=false;SpwnEfx=new hgeSprite(SprSheet,48,272,48,48); + SpwnEfx->SetHotSpot(24,24); } void Process() { @@ -55,8 +56,22 @@ public: direction=ToUnitCircle(playerpos-position); speed=0.4; }else Lifetime+=hge->Timer_GetDelta(); - if(GetDist(playerpos,position)<=9)++mult,NewMT(),Active=false; - if(Lifetime>LifeLim)return (void)(Active=false); + if(GetDist(playerpos,position)<=9) + { + ++mult,NewMT(),Active=false; + delete Mult;delete SpwnEfx;return; + } + if(Lifetime>LifeLim) + { + delete Mult;delete SpwnEfx; + return (void)(Active=false); + } + if(Lifetime<LifeLim*0.03) + { + double siz=(LifeLim*0.03-Lifetime)/(LifeLim*0.03)*3; + SpwnEfx->SetColor(SETA(SpwnEfx->GetColor(),Lifetime/(LifeLim*0.03)*255)); + SpwnEfx->RenderEx(position.x,position.y,0,siz); + } if(Lifetime>LifeLim*0.8) { if (!LOWFPS)++blinkbrk;else blinkbrk+=17; diff --git a/towernbullet.h b/towernbullet.h index 87f3d05..8acf516 100644 --- a/towernbullet.h +++ b/towernbullet.h @@ -867,7 +867,7 @@ void ProcessBullet9(int i) } BulletEffect_Process(i); double dis=GetDist(bullet[i].bulletpos,playerpos); - if (dis<=6||bullet[i].bulletpos.x<=-10||bullet[i].bulletpos.x>=800||bullet[i].bulletpos.y<=-10||bullet[i].bulletpos.y>=600) + if (dis<=6||bullet[i].bulletpos.x<=-100||bullet[i].bulletpos.x>=900||bullet[i].bulletpos.y<=-100||bullet[i].bulletpos.y>=700) { if (dis<=6&&clrrange<1e-5&&clrrad-pi/2<1e-7)++coll,scminus+=10000,Mult_BatClear(); bullet[i].exist=false; |