所以我有一个我创建的程序,它是一个基于建筑物中的地板和房间的游戏。 2D阵列的行和列的大小可以基于用户输入而改变。我想要做的是有一个方法,在用户输入的每个猜测时打印出2D数组,类似于玩战舰。
请注意图像的左下角是[0] [0],因此阵列的打印需要从上到下下降。任何帮助将不胜感激。
PS:我已经有一个方法用空格填充数组,并且当用户1或2猜测它用#填充数组的元素39; 1'或者' 2'。
到目前为止我尝试过的(这是我的toString打印方法的一部分。必须返回一个字符串。
public String toString() {
String returnStr = "";
for (int i = 0; i < this.myHidingPlaces.length; ++i) {
if (i == this.myHidingPlaces.length - 1) {
returnStr += this.myHidingPlaces[i][0] + "\n ";
for (int j = 0; j < this.myHidingPlaces[i].length; ++j) {
returnStr += this.myHidingPlaces[i][j] + " ";
}
}
else {
returnStr += this.myHidingPlaces[i][0];
}
}
return returnStr;
}
答案 0 :(得分:1)
以相反的顺序运行高度循环:
public String toString() {
String returnStr = "";
for (int i = this.myHidingPlaces.length - 1; i >= 0; i--) {
for (int j = 0; j < this.myHidingPlaces[i].length; j++) {
returnStr += this.myHidingPlaces[i][j] + " ";
}
returnStr += "\n";
}
return returnStr;
}
答案 1 :(得分:1)
首先,您可以创建char[][]
来存储电路板。电路板的高度为1(顶行)+ 2 *行数。电路板宽度为1(此侧线)+ 4 *列数。
int boardHeight = 1 + 2*myHidingPlaces.length;
int boardWidth = 1 + 4*myHidingPlaces[0].length;
char[][] board = new char[boardHeight][boardWidth];
让我们以干净的状态启动电路板;将每个char
' '
空格字符设为每个for(int i = 0; i < boardHeight; i++) {
for(int j = 0; j < boardWidth; j++) {
board[i][j] = ' ';
}
}
。
'_'
除了第一个和最后一个字符
之外,每隔一行都是for(int i = 0; i < boardHeight; i += 2) {
for(int j = 1; j < boardWidth - 1; j++) {
board[i][j] = '_';
}
}
个字符
'|'
除第一行外,每第四列都是for(int i = 1; i < boardHeight; i++) {
for(int j = 0; j < boardWidth; j += 4) {
board[i][j] = '|';
}
}
个字符
myHidingPlaces
然后您需要将y = height - y - 1
中的所有元素填入主板。必须进行从逻辑数据到视图数据的转换。首先翻转行值(for(int y = 0; y < myHidingPlaces.length; y++) {
for(int x = 0; x < myHidingPlaces[0].length; x++) {
if (myHidingPlaces[y][x] == 0) {
continue;
}
int i = myHidingPlaces.length - y - 1;
i = 1 + 2*i;
int j = 2 + 4*x;
// translate int to char;
char val = (char) (myHidingPlaces[y][x] + '0');
board[i][j] = val;
}
}
),然后将x和y分量缩放到正方形的中间位置:
for(int i = 0; i < boardHeight; i++) {
System.out.println(String.valueOf(board[i]));
}
最后将电路板逐行打印到屏幕上;
int[][] myHidingPlaces = new int[][] {
{2,0,0},
{0,0,0},
{0,0,0},
{0,0,1},
{0,0,0},
};
样板:
___________
| | | |
|___|___|___|
| | | 1 |
|___|___|___|
| | | |
|___|___|___|
| | | |
|___|___|___|
| 2 | | |
|___|___|___|
示例输出:
$qb = Item::newQuery();
if (!empty($mode))
{
$qb->whereIn('mode_id', $mode);
}
if (!empty($type))
{
$qb->whereIn('type_id', $type);
}
if (!empty($group))
{
$qb->whereIn('group_id', $group);
}
$results = $qb->paginate(10);