数学建模社区-数学中国
标题:
2006年百度之星程序设计大赛总决赛题目
[打印本页]
作者:
厚积薄发
时间:
2010-5-6 19:14
标题:
2006年百度之星程序设计大赛总决赛题目
俄罗斯方块
4 x: `) \9 q& k! S$ Y( O9 N
俄罗斯游戏禁用词语有七种方块,每种方块都由四个方格组成,如下图所示,七种方块分别编号为1~7。
_: D6 [. F; y, b/ `" U
游戏中,每次落下一个方块,落到一个宽度为10格的槽中。方块的下部一旦碰到槽的底部,或槽中已有的方块,就不能再移动。方块落下不动后,如果有某些行因落下的方块而填满,这些行将被消去。方块下落前,你可以控制方块的左右移动和旋转,以将其放在合适的位置。你对方块的所有移动和旋转操作在下落前(槽外)就计算完毕,然后直接下落到底,下落过程中不能再做操作。如果方块刚刚落下后顶部高度大于17行,游戏结束--即使此时有些行可以消除。
$ e( e' Y& M6 L
交互方式
8 [6 d8 c0 X! M8 Y
你的程序应当包含tetris_lib.h,并连接相应的库文件。库中的两个重要函数是:
( Y: l/ M/ B3 o6 w/ q2 }: M1 J
void StartGame(int* t1, int* t2);
, [& |/ E; a- j* u+ e
int Step(int r, int l, int* next);
6 F4 h' Z4 z L M2 b& K- a5 P( K
你的程序应该首先调用StartGame,其中t1和t2表示前两个方块的编号(t2对应于传统游戏中的"下一个方块")。接下来,你的程序每次可以使用Step函数下落一个方块,返回消去的行数。r表示旋转方式(r=0, 1, 2, 3分别表示顺时针旋转0度、90度、180度、270度),l表示方块在旋转后的最左边一格的列编号(从左到右依次为1, 2, …, 10),而next表示方块落下后新的下一个方块编号(0代表没有下一个方块,下一次Step调用后库将自动终止你的程序)。你的程序不应自行终止。
$ m) O4 T2 [( K! R, ~7 d) o; l% {
关于自测的提示
1 [) ~$ {' e- ]+ t$ S4 ]: Z: K1 p& y8 i
调用StartGame函数时,库将从标准输入中读入若干行,每行包括一个整数,表示方块的编号。你可以利用这一点对你的程序进行测试。程序运行结束后,测试库将把结束原因和得分显示在标准输出中。
' t6 B0 \2 M9 z4 S" C% I9 _0 z
库中还有两个函数可以用于自测:
2 \+ y' n1 q2 ~. K
void SetLog(const char* filename);
4 \% M% b6 t' l' `. D
void Snapshot();
7 O1 D' H2 j6 n6 J$ E% V
如果需要测试库记录程序的行为,请在调用StartGame之前调用SetLog函数。
6 ]7 V+ u: {) x+ \( d8 e y3 Y
评分规则
0 u) l( _: z: Z- b
在与测试库交互的过程中,出现以下条件之一,则库将终止程序:
8 C; k# I5 p' w) U* k
1、调用参数非法
7 M( x( A# Q0 [# H* k
2、方块刚刚落下后,其顶部高度大于17行
2 |( x- J6 n1 u
3、所有方块均已落下
$ ^; F* D* T2 T7 N
4、本数据的运行总时间超过1秒钟
2 Q, W0 d6 Q2 V. k& T5 P6 |! u
程序终止后,假设一次消去1行、2行、3行、4行的次数分别为a, b, c, d,则该数据原始得分为2b+6c+10d。换句话说,消去单独的1行不得分。
% ?) C( O$ B0 l
对于每个数据,得分排名前八的程序分别得到10, 7, 6, 5, 4, 3, 2, 1分。如果原始得分相同,则消去行数多的排名在前;如果原始得分和消去行数都相同,则下落方块总数多的排名在前。如果三者都相同,则得分相同。消去行数为0的程序不得分,即使它排在前八。
# M/ Q- k& Q6 d/ L% j L2 d
最终成绩按照50个数据的总分从大到小排序,如果总分相同则按所有数据的原始得分之和排序;如果仍有相同,则按所有数据的消去的总行数排序;如果仍相同,则名次相同。
4 u4 v. h; V6 ~7 Q
作者:
huyongde
时间:
2010-5-6 19:52
有答案吗?~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
作者:
覃伎岩
时间:
2011-12-8 04:32
讲得不错哦,顶楼主
( k7 x0 R5 @- g! b% ]6 r
作者:
Millennium
时间:
2011-12-27 22:44
说的不错,顶一下
作者:
pxwgih
时间:
2011-12-31 13:24
我的妈呀,爱死你了
作者:
resile2010
时间:
2012-1-11 14:38
这个比赛什么时候开始啊?怎么报名?
作者:
xiaoscao
时间:
2012-1-17 09:57
这个是要看看的,没事逛逛啊
作者:
liupeng723911
时间:
2012-7-24 03:05
谢谢您的辛苦发帖
作者:
zqyzixin
时间:
2012-8-18 03:06
不错的。谢谢喽
作者:
nandehutugood
时间:
2012-11-9 12:11
感谢楼主,
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5