论坛首页 Java企业应用论坛

假期没事,写了个90行的俄罗斯方块,Java实现,史上最小巧

浏览 23819 次
精华帖 (0) :: 良好帖 (2) :: 新手帖 (6) :: 隐藏帖 (1)
作者 正文
   发表时间:2010-02-20  
n年前学编程1个月的时候就写了俄罗斯方块。没bug。
楼主不错,快赶上我学编程1个月的功力了,哈哈。。。
0 请登录后投票
   发表时间:2010-02-21  
tntxia 写道
图片的大小是什么??



是lz上传他截图的大小
0 请登录后投票
   发表时间:2010-02-21  
wandou 写道
n年前学编程1个月的时候就写了俄罗斯方块。没bug。
楼主不错,快赶上我学编程1个月的功力了,哈哈。。。



LS牛B
0 请登录后投票
   发表时间:2010-02-21  
wandou 写道
n年前学编程1个月的时候就写了俄罗斯方块。没bug。
楼主不错,快赶上我学编程1个月的功力了,哈哈。。。

哈哈 见笑了 目的不是写俄罗斯 是看只用100行代码能写出什么东西 挑战一下


图片是15*15
0 请登录后投票
   发表时间:2010-02-21   最后修改:2010-02-21
兄弟当年写了个俄罗斯方块,可以单人,双人热座,4人热座,1-4人联机,单机对电脑. 电脑智能还很强,轻易很难赢. 代码写的整洁无比,模块划分很清晰.应用了若干设计模式.
可是去面试悲剧了. 因为有个兄弟在网上搞了个俄罗斯方块,只要600行. 哥的代码有1500行. 最关键的是哥当年没有U盘,代码没show一下.
0 请登录后投票
   发表时间:2010-02-22  
QQ游戏上就有俄罗斯方块,不用手写的说
0 请登录后投票
   发表时间:2010-02-22  
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at main.Terris.paint(Terris.java:70)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
我游戏运行正常,但是会报上面的错误,不太懂Swing编程。楼主麻烦看下是什么错误。
我再仔细看下楼主的源代码。
0 请登录后投票
   发表时间:2010-02-22  

研究了一下午……,给楼主提个简化的地方

第65,66行可以稍微简化一下

     for(int j=yOffSet+i;j>0;j--)                                 
           System.arraycopy(matrix[j-1],0,matrix[j],0,10);

 

变成     System.arraycopy(matrix, 0, matrix, 1, yOffSet+i); 

 

还有我上面说的bug 还是没找到原因,时有时无的。我用的Linux下的jdk ,不会跟平台有关吧……

 

0 请登录后投票
   发表时间:2010-02-22  
vividemon 写道
研究了一下午……,给楼主提个简化的地方

第65,66行可以稍微简化一下

     for(int j=yOffSet+i;j>0;j--)                                  <br>           System.arraycopy(matrix[j-1],0,matrix[j],0,10);

 

变成     System.arraycopy(matrix, 0, matrix, 1, yOffSet+i); 

 

还有我上面说的bug 还是没找到原因,时有时无的。我用的Linux下的jdk ,不会跟平台有关吧……

 

呵呵 多谢提醒啊.. arraycopy还能这么用啊 还有地方可以简化 估计还能缩个5行左右

这个bug我也没研究明白原因 可能是双缓冲的地方 研究下 这个问题解决了就没有bug了应该
0 请登录后投票
   发表时间:2010-02-23  
wangshu3000 写道
vividemon 写道
研究了一下午……,给楼主提个简化的地方

第65,66行可以稍微简化一下

     for(int j=yOffSet+i;j>0;j--)                                  <br>           System.arraycopy(matrix[j-1],0,matrix[j],0,10);

 

变成     System.arraycopy(matrix, 0, matrix, 1, yOffSet+i); 

 

还有我上面说的bug 还是没找到原因,时有时无的。我用的Linux下的jdk ,不会跟平台有关吧……

 

呵呵 多谢提醒啊.. arraycopy还能这么用啊 还有地方可以简化 估计还能缩个5行左右

这个bug我也没研究明白原因 可能是双缓冲的地方 研究下 这个问题解决了就没有bug了应该

代码加上注释的话会更好些, 注释是习惯,读者可一目了然啊!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics