相关疑难解决方法(0)

你如何旋转二维数组?

灵感来自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怎么办?

algorithm matrix multidimensional-array

295
推荐指数
16
解决办法
29万
查看次数

OOP-Tetris的哲学设计问题

您正在用Java编写俄罗斯方块程序.您将如何根据以下方面设置课程设计?

  • Piece class:有一个Piece类,内部数组决定了作品的形状,而不是七个Piece类,每个作品一个.它们都是一个通用Piece类的子类.
  • Piece类表示:有一个4个实例的数组Block,代表一个方块的一个,每个Block包含它在Board上的位置(在图形坐标中)而不是具有4x4数组,这null意味着那里没有块,并且确定了位置通过阵列的形状.
  • 位置:阵列中或阵列Block中的每个位置都存储其位置,并且知道构成它们的位置.PieceBoardPieceBoardBlocks
  • 生成一块:有一个Piece类的静态方法getRandomPiece,或者PieceFactory你在其中创建一个实例的genRandomPiece方法.
  • 操作当前部分:使用Proxy模式,以便需要访问它的所有内容只使用代理,或者getCurrentPiece在Board类上有一个方法,并在您想要使用当前部分执行某些操作时调用它.

这不是功课.我只是对我的大学里介绍CS课程的内容不和,我想看看人们普遍认为的是什么.什么被认为是"好"的OOP设计?忽略这是一个介绍课程的事实 - 你会怎么做?

oop

14
推荐指数
1
解决办法
4920
查看次数

旋转坐在枢轴周围?(俄罗斯方块)

我正在尝试设计我自己的俄罗斯方块克隆,但是在形状旋转方面遇到了一些问题.我有一个二维数组,表示一个10 x 20的游戏网格和各个形状对象,初始化时包含网格上的位置坐标,形状将从中开始下降.因此,例如,当用户向下移动形状时,每个坐标的y值会减小,并且此更改会反映在网格上.

我似乎无法弄清楚是使用此实现处理形状旋转的有效方法.有没有办法在指定的枢轴周围使用矩阵这些坐标?

任何建议将不胜感激,

谢谢.

rotation matrix tetris

4
推荐指数
2
解决办法
4026
查看次数