免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4037 | 回复: 0
打印 上一主题 下一主题

优酷(gameloft)软件面试题:tetris(类俄罗斯方块) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-29 17:26 |只看该作者 |倒序浏览


文件:
tetris2007112701src.zip
大小:
47KB
下载:
下载
很久没有写博克了,最近比较闲,也正好有一个面试题,想共享一下自己的开发过程。

游戏规则是:
1。一对球(强调2个)从高处以一定速度掉下,玩家可以旋转改变图形;
2。球有四个颜色:红、蓝、绿、黄;
3。与一般玩的俄罗斯方块不同的是,这里要求满4个颜色一样的球在一起就可以消掉,横竖都可以,并且消掉后,上面的球继续往下掉,还可以再消,如此往复;
4。游戏窗口可以是任意大小,推荐6×12;(这个似乎可以钻空子,因为你可以设计4×8 ^_^)
5。两个球掉落过程中,如果一个碰到障碍停留,另一个继续往下掉,因此不是连着的。

花了几个晚上,实现了其中的大部分功能,当然还有一些bug,不过觉得还是挺有意思的,平时想做点东西玩玩,就是想不出什么点子,优酷的这个题倒是不错。

完成后的界面和程序目录结构如图:

黑色背景就是酷,优酷的是白色的,被我改了,字体也是verdana,非常好看^_^

层次结构分得比较细

简单介绍一下自己的开发过程和遇到的问题:
1。界面使用AWT/Swing,JDK5.0;
2。右边界面主要显示当前信息,上面的数字没什么,几JLabel和JTextField就搞定,下面的“下一图片”必须每次产生以后刷新,并且下落时从这里取,处理时注意的问题多是如何不重复生成对象的问题。
3。曾经作项目时碰到Swing图片转SWT图片的问题,这次又碰到了2个图片合成一个图片的问题,采用BufferedImage对象象素合并,也基本解决了;
4。下落过程中,2球固定后不是一个图,而是两个,所以固定时也要拆开;
5。键盘响应,这个自己找到了一个方法,不是是不是最好的,首先重写JFrame的isFocusTraversable方法,返回true,然后对应InputMap和ActionMap事件,InputMap对应键和对象(随便字符串就可以)之间的映射,ActionMap用于对象和Action事件的映射,目录结构中actions包就是这些事件,具体可以参看我的代码;
6。球体存储结构,原先想使用整型数组,但是这样界面上的已经存在的球图片如果消掉,怎么获取,相当于没有引用,我采用了自定义类用于存储图片和对应整型数字,这样图片引用存在,判断时也可以使用数字,不知道是不是好方法,看客路过给点意见。
7。最后就是算法,如果只是像一般玩的俄罗斯方块就简单多了,但是这里要求6格,满4个就可以消,还是横竖都可以,真是有一定难度,自己想了一个粗糙的方法先应付一下,更好的办法还在思考中。。。

有想法的都来讨论一下。




本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/7211/showart_432935.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP