灵感来自Raymond Chen的帖子,假设你有一个4x4二维数组,写一个旋转90度的函数.Raymond链接到伪代码的解决方案,但我希望看到一些现实世界的东西.
[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
Run Code Online (Sandbox Code Playgroud)
变为:
[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]
Run Code Online (Sandbox Code Playgroud)
更新:尼克的答案是最直接的,但有没有办法比n ^ 2做得更好?如果矩阵是10000x10000怎么办?
您正在用Java编写俄罗斯方块程序.您将如何根据以下方面设置课程设计?
Piece类,内部数组决定了作品的形状,而不是七个Piece类,每个作品一个.它们都是一个通用Piece类的子类.Block,代表一个方块的一个,每个Block包含它在Board上的位置(在图形坐标中)而不是具有4x4数组,这null意味着那里没有块,并且确定了位置通过阵列的形状.Block中的每个位置都存储其位置,并且知道构成它们的位置.PieceBoardPieceBoardBlocksgetRandomPiece,或者PieceFactory你在其中创建一个实例的genRandomPiece方法.Proxy模式,以便需要访问它的所有内容只使用代理,或者getCurrentPiece在Board类上有一个方法,并在您想要使用当前部分执行某些操作时调用它.这不是功课.我只是对我的大学里介绍CS课程的内容不和,我想看看人们普遍认为的是什么.什么被认为是"好"的OOP设计?忽略这是一个介绍课程的事实 - 你会怎么做?
我正在尝试设计我自己的俄罗斯方块克隆,但是在形状旋转方面遇到了一些问题.我有一个二维数组,表示一个10 x 20的游戏网格和各个形状对象,初始化时包含网格上的位置坐标,形状将从中开始下降.因此,例如,当用户向下移动形状时,每个坐标的y值会减小,并且此更改会反映在网格上.
我似乎无法弄清楚是使用此实现处理形状旋转的有效方法.有没有办法在指定的枢轴周围使用矩阵这些坐标?
任何建议将不胜感激,
谢谢.