我正在制作一个Connect Four游戏,我需要为游戏设置我的棋子,它们将是Black
或Red
,以获得检测胜利的算法的int值它使用2D Array
。 ConnectFourPieces
构造函数接受一个Color,然后像这样存储:
public ConnectFourPieces(Color color)
{
pieceColor = color;
}
目标是让Red
件的值1
和Black
件的值为2
。为了解决这个问题,我和pieceColor.toString()
一起玩,但意识到输出不是我想要的。所以我找到了getRGB()
方法,它返回了RGB code
的颜色。当我用这样测试时:
Color col = Color.RED;//also was Color.BLACK
System.out.println(col.getRGB());
RGB value
Black
为-16777216
而Red
为-65536
。Color
为int
。我的问题是:1)这个输出是否正确? 2)这个输出在所有系统上是否都是恒定的,我希望它是,但我不确定? 3)有没有更好的方法来检查作品的using System;
using System.Web.Security;
public partial class Login : System.Web.UI.Page
{
protected void btnSubmit_Click( object sender, EventArgs e )
{
// Note: Add code to validate user name, password. This code is for illustrative purpose only.
// Do not use it in production environment.
FormsAuthentication.RedirectFromLoginPage( txtUserName.Text, false );
}
}
是否为其分配xslt:text
值?
答案 0 :(得分:2)
你这样做是错误的。你应该从它的类型中推断出它的颜色,而不是从它的颜色中推断出它的颜色。
为片段类型定义枚举:
public enum PieceType {
BLACK, RED
}
然后定义你的Piece类,它应该有一个基于其类型的颜色:
public class Piece {
private PieceType type;
public Piece(PieceType type) {
if (type == null) {
throw new NullPointerException("the piece type is mandatory");
}
this.type = type;
}
public PieceType getType() {
return type;
}
public Color getColor() {
if (type == PieceType.BLACK) {
return Color.BLACK;
}
else {
return Color.RED;
}
}
}
请注意,这使得无法创建绿色或蓝色部分,这是一件好事,因为它们没有意义。
答案 1 :(得分:0)
颜色实现等于,所以为什么不int myColor=Color.RED.equals(color)?1:2
。 (或者如果你想在第三种颜色传递时引发错误,可以使用两个三元运算符?
答案 2 :(得分:0)
Color.RED (or) Color.BLACK
实际上会在内部创建sRGB值。
sRGB值与R,G,B值不同。如果要定义预定义颜色常量以外的颜色,请使用Color(int, int, int)
构造函数。每个int分别用于R,G,B,范围为0到255.
I got an RGB value for Black as -16777216 and Red as -65536
这些是sRGB值,而不是RGB。如果要打印出给定Color
对象的实际R,G,B值,则在其上调用toString()
方法。
答案 3 :(得分:0)
听起来你想要做的就是使用Enum
。这样的事情怎么样:
public enum ConnectFourColor {
RED (1), BLACK(2);
private final int colorCode;
public ConnectFourColor(int colorCode) {
this.colorCode = colorCode;
}
public int getColorCode() {
return this.colorCode;
}
}
你会像这样使用它:
ConnectFourColor redColor = ConnectFourColor.RED;
System.out.println(redColor.getColorCode()); //prints 1
答案 4 :(得分:-1)
我同意JP:
Color color = Color.black; // Black RGB (0,0,0)
System.out.println(color.getRed()); // 0
color = Color.red; // Red RGB (255,0,0)
System.out.println(color.getRed()); // 255
相同的方法,根据颜色有不同的结果。