java题,在线等,挺急的 10
E4_4:用switch编写程序实现抽取扑克牌比大小的游戏,先提示是否要抽牌进行游戏(Y/N?),若用户选择“Y”或“y”进入游戏,否则直接退出程序;进入游戏后行生成一0...
E4_4:用switch编写程序实现抽取扑克牌比大小的游戏,先提示是否要抽牌进行游戏(Y/N?),若用户选择“Y”或“y”进入游戏,否则直接退出程序;进入游戏后行生成一0-51的随机整数作为用户的牌a,以a/13的值确定用户抽取的是梅花、方块、红桃、黑桃,以a%13+1的值确定是A、2、3、4、5、6、7、8、9、10、J、Q和K用户的牌点,并输出你抽取的是什么;再同样方式为机器生成一张牌b,并显示计算机抽取了什么;最后然按A最大2最小的方式比输赢,牌点相同时为平局,两牌完全相同时输出“恭喜你中了大奖!”。
E4_5:用死循环让以上程序反复运行,直到用户不选“Y”或“y”。
请用简单的知识做,谢谢 展开
E4_5:用死循环让以上程序反复运行,直到用户不选“Y”或“y”。
请用简单的知识做,谢谢 展开
展开全部
/*
* 创建Card类,具有卡牌类型与卡牌值属性
*/
public class Card {
private String cardType;
private String cardValue;
public Card(String cardType, String cardValue) {
this.cardType = cardType;
this.cardValue = cardValue;
}
public String getCardType() {
return cardType;
}
public void setCardType(String cardType) {
this.cardType = cardType;
}
public String getCardValue() {
return cardValue;
}
public void setCardValue(String cardValue) {
this.cardValue = cardValue;
}
// 测试方法
public static void main(String[] args) {
start();
}
// 游戏进行方法
public static void start() {
while (true) {
System.out.println("是否要抽牌进行游戏(Y/N)");
Scanner sc = new Scanner(System.in);
String start = sc.nextLine();
if ("Y".equals(start) || "y".equals(start)) {
// 进入游戏,调用产生随机数方法
int createRandom = createRandom();
// 获取卡牌类型
String cardType = cardType(createRandom);
// 获取卡牌值
String cardValue = cardValue(createRandom);
// 创建一个卡牌对象,存储上面的两个值
Card Player = new Card(cardType, cardValue);
// 在控制台打印输出你抽取的卡牌
System.out.println("你抽到的卡牌是:\t" + Player.getCardType() + "\t" + Player.getCardValue());
// 继续产生第二个随机数,第二次为机器抽到的卡牌
int RobotRandom = createRandom();
// 获取机器抽取的卡牌类型
String RobotType = cardType(RobotRandom);
// 获取机器抽取的卡牌值
String RobotValue = cardValue(RobotRandom);
// 创建一个卡牌对象,存储上面的两个值
Card Robot = new Card(RobotType, RobotValue);
// 在控制台打印输出机器抽取的卡牌
System.out.println("机器抽到的卡牌是:\t" + Robot.getCardType() + "\t" + Robot.getCardValue());
// 调用比较方法,进而输出结果
int compare = compare(Player, Robot);
switch (compare) {
case 1:
System.out.println("恭喜你赢了!!");
break;
case -1:
System.out.println("不好意思,你的值比较小,你输了");
break;
case 2:
System.out.println("哈哈,平局。。。");
break;
case 0:
System.out.println("恭喜你中了大奖");
break;
default:
break;
}
} else if ("N".equals(start) || "n".equals(start)) {
System.out.println("退出游戏,欢迎下次再来!");
break;
} else {
System.out.println("你输入的值有误,请重新输入");
}
}
}
// 产生随机数方法
public static int createRandom() {
// 随机生成0~52(不包括52)之间的整数
Random random = new Random();
int card = random.nextInt(52) + 1;
return card;
}
// 输入数字,获取卡牌类型
public static String cardType(int num) {
// 卡牌类型
String cardShape = "";
// 判断拿到的牌是什么类型的,方块|梅花|红桃|黑桃
switch ((num - 1) / 13) {
case 0:
cardShape = "方块";
break;
case 1:
cardShape = "梅花";
break;
case 2:
cardShape = "红桃";
break;
case 3:
cardShape = "黑桃";
break;
default:
break;
}
return cardShape;
}
// 输入数字,判断卡牌值
public static String cardValue(int num) {
// 卡牌数字
String cardValue = "";
// 判断卡牌数字
switch (num % 13) {
case 0:
cardValue = "K";
break;
case 1:
cardValue = "A";
break;
case 2:
cardValue = "2";
break;
case 3:
cardValue = "3";
break;
case 4:
cardValue = "4";
break;
case 5:
cardValue = "5";
break;
case 6:
cardValue = "6";
break;
case 7:
cardValue = "7";
break;
case 8:
cardValue = "8";
break;
case 9:
cardValue = "9";
break;
case 10:
cardValue = "10";
break;
case 11:
cardValue = "J";
break;
case 12:
cardValue = "Q";
break;
default:
break;
}
return cardValue;
}
// 比较卡牌值大小
public static int compare(Card c1, Card c2) {
String numbers = "2 3 4 5 6 7 8 9 10 J Q K A";
String type = "黑桃 红桃 梅花 方块";
// 通过获取牌的值在以上字符串中第一次出现的位置,与另一个牌值在以上字符串中第一次出现的位置索引进行比较,若相减值大于0则返回1
// 表示值大,若相减值小于0则返回-1,表示值小
// 等于则以同样的方法比较牌的类型,若相减值不为0,则表示值相同而类型不同,返回2.相同则返回0,表示值与类型都相同。
int result = numbers.indexOf(c1.getCardValue()) - numbers.indexOf(c2.getCardValue());
if (result < 0) {
return -1;
} else if (result > 0) {
return 1;
} else {
int result2 = type.indexOf(c1.getCardType()) - type.indexOf(c2.getCardType());
if (result2 != 0) {
return 2;
} else {
return 0;
}
}
}
}
}
今天晚上看了你发的问题,感觉有点意思,就做了下,其实我做了两个类的,不过放在这里用java格式好像只能放在一个类,否则格式很难看,代码里面都有相应的注释,你的两个要求E4_4和E4_5我都写在一起了,还有你要用switch来编程,我很多地方都用到了switch。
我测试的结果如下:
希望能帮助到你,祝你生活愉快。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |