1. 与运动场的细胞一起工作
很高兴我们可以将运动场划分为单元格。但是我们能用细胞本身做什么呢?
对于运动场的每个单元格,我们可以设置:
- 单元格颜色(单元格的背景颜色);
- 文本(可以是文本或数字);
- 文字颜色;
- 文本大小占单元格大小的百分比。
让我们考虑使用运动场单元格的方法:
void setCellColor(int x, int y, Color color)(x, y)设置坐标等于 的单元格的颜色color。
例子:
setCellColor(0, 0, Color.RED);
setCellColor(3, 6, Color.BLACK);
setCellColor(6, 8, Color.NONE);
Color getCellColor(int x, int y)返回坐标为 的单元格的颜色(x, y)。
例子:
Color myColor = getCellColor(2, 0);
void setCellValue(int x, int y, String value)将文本分配String value给坐标为 的单元格(x, y)。
例子:
setCellValue(3, 3, "text");
setCellValue(0, 8, "W");
setCellValue(4, 1, "2222");
setCellValue(6, 6, "");
String getCellValue(int x, int y)返回坐标为 的单元格中包含的文本(x, y)。
例子:
String s = getCellValue(3, 3);
System.out.println(getCellValue(4, 1));
void setCellTextSize(int x, int y, int size)使用坐标设置单元格中文本的大小(x, y),其中size文本高度占单元格高度的百分比。
例子:
setCellTextSize(2, 0, 70); // 70% of the cell height
int getCellTextSize(int x, int y)返回坐标为 的单元格中内容的大小(x, y)。
例子:
int size = getCellTextSize(2 , 0);
void setCellNumber(int x, int y, int value)将数字分配int value给坐标为 的单元格(x, y)。
例子:
setCellNumber(3, 3, 40);
setCellNumber(0, 8, -8);
setCellNumber(4, 1, 2222);
setCellNumber(6, 6, 0);
int getCellNumber(int x, int y)返回坐标为 的单元格中包含的数字(x, y)。如果单元格不包含数字,则返回 0。
例子:
int i = getCellNumber(3, 3);
System.out.println(getCellNumber(4, 1));
void setCellTextColor(int x, int y, Color color)设置坐标为 的单元格内容(文本)的颜色(x, y)。
例子:
setCellTextColor(2, 1, Color.GREEN);
setCellTextColor(0, 1, Color.NONE);
Color getCellTextColor(int x, int y)返回坐标为 的单元格内容(文本)的颜色(x, y)。
例子:
Color textColor = getCellTextColor(1, 3);
为了您的方便,有多种setCellValueEx()具有不同参数集的方法:
void setCellValueEx(int x, int y, Color cellColor, String value)分别设置坐标(x, y)等于cellColor和 的单元格的背景颜色和文本value。
例子:
setCellValueEx(0, 2, Color.BLUE, "56");
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor)分别设置坐标(x, y)等于cellColor、value和 的单元格的背景颜色、文本和文本颜色textColor。
例子:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN);
void setCellValueEx(int x, int y, Color cellColor, String value, Color textColor, int textSize);分别设置坐标(x, y)为cellColor、 、和 的单元格的背景颜色、value文本、文本颜色和文本大小。textColortextSize
例子:
setCellValueEx(0, 2, Color.BLACK, "56", Color.GREEN, 70);
2. 使用颜色
CodeGym 游戏引擎有一个特殊Color类型,其中包含 148 种颜色的唯一值。它还具有NONE表示没有颜色的特殊值。
使用颜色的示例
Color myColor = Color.WHITE; // The color white is assigned to the myColor variable.
Color redColor = Color.RED; // The color red is assigned to the redColor variable.
Color blueColor = Color.BLUE; // The color blue is assigned to the blueColor variable.
您可以使用以下命令将单元格着色为红色:
setCellColor(0, 2, Color.RED);
您可以使用如下命令检查单元格是否为特定颜色:
if (getCellColor(0,2) == Color.GREEN)
{
}
有时您可能需要获取包含每种可能颜色的数组。为此,请使用该values()方法。
例子:
// An array containing every available color is assigned to the colors variable.
Color[] colors = Color.values();
在调色板中获取颜色的索引非常容易——只需使用以下ordinal()方法:
Color color = Color.RED;
int redIndex = color.ordinal(); // Index of the color red
int blueIndex = Color.BLUE.ordinal(); // Index of the color blue
您还可以通过其索引轻松获取颜色:
// The color whose index is 10 in the Color enum is assigned to the color variable.
Color color = Color.values()[10];
3.对话框
在游戏结束时,我们需要让玩家知道他或她是赢了还是输了。对于这种情况和其他情况,CodeGym 游戏引擎有一种特殊的void showMessageDialog(Color cellColor, String message, Color textColor, int textSize)方法,它会显示一个带有消息的对话框message。
这个方法的参数是:
cellColor是对话框的背景颜色message是消息的文本textColor是消息文本的颜色textSize是消息文本的大小
如果用户按下空格键或用鼠标单击对话框,对话框将自行关闭。
调用此方法的示例:
// Display a dialog box with a message
showMessageDialog(Color.BLACK, "EPIC FAIL", Color.RED, 80);
4.实用方法
在编写游戏时,您会经常使用随机数。为了更容易获得随机数,您可以使用游戏引擎的实用方法:
int getRandomNumber(int max)0返回一个从到包含的随机数(max–1)。
int getRandomNumber(int min, int max)min返回一个从到包含的随机数(max–1)。
5. JDK 11+
从 IntelliJ IDEA 运行程序时,继承 Game 类的类可能会产生以下错误:
Error: JavaFX runtime components are missing, and are required to run this application
在这种情况下,对于每个此类,您需要执行一次这些步骤:
- 打开运行→编辑配置
- 对于VM options的值,输入以下内容:
--module-path ./lib/javafx-sdk-16/lib --add-modules=javafx.controls,javafx.fxml,javafx.base
注意力:
在最新版本的 IntelliJ IDEA 中,默认情况下不显示“VM 选项”字段。要显示它,请按ALT+V
- 按:应用→确定
- 运行游戏。
GO TO FULL VERSION