21点游戏(java源代码)复制粘贴就可以运行

import java.util.ArrayList;

import java.util.Random;
import java.util.Scanner;

/**
 * 21点游戏。
 * 1、洗牌
 * 2、发牌
 * 3、计算点数
 * 4、 是否要牌
 * 5、计算机发牌
 * 6、计算结果
 */
public class TPoint{
private int[] pai = new int[52]; //52张牌
private String[] huase= {"黑","红","梅","方"};
private String[] paiM = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//牌面显示
private ArrayList<Integer> al = new ArrayList<Integer>(); //存储玩家手中的牌
private int currentPoint;
private int computerPoint = 0;

private int currentPage=0;

public TPoint() {
super();
xipai();// 洗牌
fapai();//发牌
needPai();//是否要牌
computerPai();//电脑发牌
result(); //计算结果
}
private void xipai() {
for(int i = 0; i < 52 ;i++ ){
pai[i]=i; //52张牌赋值
}
for(int j = 0;j<26;j++){ //打乱26次
Random r = new Random();
int i1 = Math.abs(r.nextInt()%52); //在52张中牌中找到第一张
int i2 =Math.abs(r.nextInt()%52);//在52张中牌中找到第二张

int temp = pai[i2];
pai[i2] = pai[i1];
pai[i1] = temp;
}
}




private void fapai() {
/* for(int i = 0;i<52;i++){
System.out.print(pai[i]+"\t");
}*/

//先发两张给玩家
al.add(pai[0]);
al.add(pai[1]);
currentPoint += calPoint(pai[0]);
currentPoint+= calPoint(pai[1]);
currentPage= 2;
}
private int calPoint(int i) {//计算牌的点数
int temp = 0;
if(i%13+1>10){ //JQK都是10
temp = 10;
}
else{
temp = (i+1)%13;
}
return temp;
}




private void needPai() {

while(true){
xianshi(); //显示牌面

if(currentPoint>=21){ //玩家点数大于21则不能再要牌
break;
}
System.out.println("是否还要牌,输入N不要!");
Scanner sc = new Scanner(System.in);
if(sc.next().equalsIgnoreCase("N")){
break; //输入N则结束
}else {
al.add(pai[currentPage]); //继续添加牌
currentPoint+=calPoint(pai[currentPage]); //牌点数+
currentPage++;
}

}

}
private void xianshi() {
for(Integer in:al){ //显示玩家手中的牌
System.out.print(huase[in/13]+" "+paiM[in%13]+"\t"); //显示花色 和牌面
}
System.out.println("当前总分:"+currentPoint);

}
private void computerPai() {
Random r = new Random();
computerPoint = Math.abs(r.nextInt())%10+16; //电脑的点数在16点到26点
System.out.println("\n电脑 的牌面:"+computerPoint);
}

private void result() {
if(currentPoint>21){ //玩家点数大于21则不能再要牌
System.out.println("you lost!");
}else if(currentPoint==computerPoint){
System.out.println("you lost!");
}else if(computerPoint>21){
System.out.println("you Win!");

}else if(currentPoint>computerPoint){
System.out.println("you Win!");
}else{
System.out.println("you Lost!");
}

}
public static void main(String[] args){
new TPoint();
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值