public class Board
{
// instance variables - replace the example below with your own
public int SIZE = 3;
private char BLANK = 'N';
private char [][] board;
/**
* Constructor for objects of class Board, intializes all elements to BLANK,
* creates board with SIZE elements
*/
public Board()
{
// initialise instance variables
board = new char[SIZE][SIZE];
for(int i = 0; i < board.length; i++){
for(int j = 0; j < board.length; j++){
board[i][j] = BLANK;
}
}
}
/**
* this method returns the board
*/
public char [][] getBoard(){
return board;
}
/**
* prints the elements of the array board in a 3x3 grid
*/
public void display(){
for(int i = 0; i < board.length; i++){
for(int j = 0; j < board.length; j++){
System.out.print(board[i][j]);
}
}
}
/**
* This method assigns X to the appropriate index in board
*/
public void setX(int index){
index = index - 1;
for(int i = 0; i < board.length; i++){
for(int j = 0; j < board.length; j++){
if((BLANK <= index) && (index <= board[i][j])){
board[i][j] = 'X';
}
}
}
}
/**
* This method assigns O to the appropriate index in board
*/
public void setO(int index){
for(int i = 0; i < board.length; i++){
for(int j = 0; j < board.length; j++){
if((BLANK <= index) && (index <= board[i][j])){
board[i][j] = 'O';
}
}
}
}
/**
* This method returns true if the index is not occupied by an X or O
*/
public boolean isAvailable(int index){
boolean available = false;
for(int i = 0; i < board.length; i++){
for(int j = 0; j < board.length; j++){
board[i][j] = BLANK;
available = true;
}
}
return available;
}
}
首先,我想知道为什么你甚至需要一个二维数组。为什么不把板子表示为九元单阵呢?
除此之外,将1-9位置索引转换为适当的二维索引的方法是:
int i = (index - 1) / 3;
int j = (index - 1) % 3;
然后处理board[i][j]
只处理这一对索引。您的setx
和seto
方法不应循环。
我被我的tictactoe问题困住了。定义一个称为TicTacToe的calss。TicTacToe类型的对象是TicTacToe的单个游戏。将游戏板存储为一个具有三行三列的基类型char的单个2D数组。包括添加移动、显示棋盘、判断轮到谁、判断是否有胜者、判断谁是胜者以及重新开始游戏的方法。为类编写一个主方法,允许两个玩家在同一键盘上依次输入他们的动作。 我写了一些我的方法,并一直在测试我去。当我
我正在编写一个计算和绘制抛物线的小程序。但我在程序中有一小部分需要计算valuetable。 二次函数如下:
二维数组 #include <stdio.h> #include <stdlib.h> //01.二维数组: // 1.二维数组的内存存储原理: // 所有数组,无论一维数组,二维数组,多维数组,在内存当中的 // 存储实质都是采取的连续存储方式 // 2.二维数组的规律赋值方式: // 先进行行遍历,在进行列遍历,再逐个进行逐个数组元素的具体赋值操作 //
主要内容:创建二维数组,初始化二维数组,获取单个元素,获取全部元素,获取整行元素,获取整列元素为了方便组织各种信息,计算机常将信息以表的形式进行组织,然后再以行和列的形式呈现出来。二维数组的结构决定了其能非常方便地表示计算机中的表,以第一个下标表示元素所在的行,第二个下标表示元素所在的列。下面简单了解一下二维数组,包括数组的声明和初始化。 创建二维数组 在 Java 中二维数组被看作数组的数组,即二维数组为一个特殊的一维数组,其每个元素又是一个一维数组。Java 并不直接支持二维数组,但是
对于我的类分配,我们需要编写一个名为Matrix的类,其中包含一个名为“矩阵”的私有二维int数组,最多可以是10行乘10列。我们需要使用两个常量MAXROWS=10和MAXCOLS=10来构造“矩阵”。Matrix类还需要以下属性: 行和列将包含小于等于MAXROWS和MAXCOLS的值。编写一个默认的matrix类构造函数,用以下值构造“Matrix”数组: 构造函数还必须设置行和列变量以匹配
主要内容:指针数组和二维数组指针的区别二维数组在概念上是二维的,有行和列,但在内存中所有的数组元素都是连续排列的,它们之间没有“缝隙”。以下面的二维数组 a 为例: int a[3][4] = { {0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11} }; 从概念上理解,a 的分布像一个矩阵: 但在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存: C语言中的二维数组是按行排列的,也就是先存放