开发网页游戏过程记录4-玩家性别识别

本文介绍了一种使用枚举类存储多种玩家性别的方法,并通过getCode()方法简单获取具体性别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开发过程中会遇到获取玩家性别的功能,总所周知玩家性别是有很多种的,比如unkown(即不清楚具体性别),female,male,当然有些玩家还会以girl和boy来分别。那么这么多的性别(暂且统称为性别)如何来获取相应的一个呢?难道就在代码里使用<T>==player.is<T>来判断玩家的具体性别吗?这样会有很多的冗余代码,所以想到的是使用继承了enum类的类来存储各个不同的性别,可是问题又出现了,在此类中如何做才会很简单的获取具体的性别呢?这时想到了使用一个code来代表具体的性别,比如0代表unkown,1代表female等等,以后要获取性别时直接使用getCode()方法就会得到具体相应的性别。具体代码如下:

public final class Gender extends Enum
{

//构造方法
private Gender(String s, int i, String code, String english, String pinyin, String third)
{
super(s, i);
this.code = code;
this.english = english;
this.pinyin = pinyin;
this.third = third;
}


public String getCode()
{
return code;
}


public String getEnglish()
{
return english;
}


public String getPinyin()
{
return pinyin;
}


public String getThird()
{
return third;
}

//返回符合给定code的Gender
public static Gender of(String code)
{
if(code == null || code.trim().length() == 0)
return UNKNOWN;
Gender agender[];
int j = (agender = values()).length;
for(int i = 0; i < j; i++)
{
Gender g = agender[i];
if(g.code.equals(code))
return g;
}


return UNKNOWN;
}

//进行浅拷贝
public static Gender[] values()
{
Gender agender[];
int i;
Gender agender1[];
System.arraycopy(agender = ENUM$VALUES, 0, agender1 = new Gender[i = agender.length], 0, i);
return agender1;
}

//返回s指定的Gender实例,比如s为UNKNOWN,则此方法返回UNKNOWN对应的Gender实例,即下面的new Gender("UNKNOWN", 0, "N", "unknown", "TA", "\u4ED6\uFF08\u5979\uFF09");
public static Gender valueOf(String s)
{
return (Gender)Enum.valueOf(Gender, s);
}


public static final Gender UNKNOWN;
public static final Gender FEMALE;
public static final Gender MALE;
public static final Gender BOY;
public static final Gender GIRL;
private final String code;
private final String english;
private final String pinyin;
private final String third;
private static final Gender ENUM$VALUES[];


//使用静态代码块对各个性别进行加载类时就初始化
static
{
UNKNOWN = new Gender("UNKNOWN", 0, "N", "unknown", "TA", "\u4ED6\uFF08\u5979\uFF09");//\u4ED6\uFF08\u5979\uFF09这个unicode对应的字符为他(她)
FEMALE = new Gender("FEMALE", 1, "F", "Female", "nv", "\u5979");
MALE = new Gender("MALE", 2, "M", "Male", "nan", "\u4ED6");
BOY = new Gender("BOY", 3, "B", "Boy", "nan", "\u4ED6");
GIRL = new Gender("GIRL", 4, "G", "Girl", "nv", "\u5979");
ENUM$VALUES = (new Gender[] {
UNKNOWN, FEMALE, MALE, BOY, GIRL
});
}
}

这样的话,以后就可以Gender.UNKNOWN.getCode()方法来返回具体的性别了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值