21张扑克牌魔术原理杰克有什么高手21技术

纸牌黑杰克21点_Java_ThinkSAAS
纸牌黑杰克21点
纸牌黑杰克21点
代码仅供参考,这里只列出基本框架!
1.Card 扑克牌
class Card{
/**表示所有纸牌面值的数组*/
public static final String[] FACES={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
/**表示所有类型值的数组*/
public static final String[] SUITS={"黑桃","梅花","方块","红心"};
/**纸牌总数,使用的是常量*/
public static final int MAX_CARDS=FACES.length*SUITS.
/**这张牌的点值*/
public Card(){
value=0; /**用0点创建一个默认纸牌*/
/**创建第n张牌,非法n值将使程序终止。*/
public Card(int n){
if(n&0 || N&MAX_CARDS){
System.out.println("错误:非法牌索引,程序退出");
System.exit(0);
public String getFace(){ /**返回表示纸牌面值的字符串*/
return FACES[value%FACES.length];
public String getSuit(){ /**返回表示纸牌类型的String*/
return SUITS[value%SUITS.length];
public String toString(){
return getSuit()+getFace();
2.Player 玩家
/**玩家类*/
class Card{
private int winN //记录胜利次数
private int loseN //记录失败次数
//玩家手中的现金
private CardInH
/**初始化玩家的相关参数
*胜利次数:0
*失败次数:0
*纸牌数:0
*现金数:10000
public Player(){
winNumder=0;
loseNumder=0;
hand=new CardInHand();
setCash(10000);
public int getWin(){ /** 获得胜利次数 */
return winN
public int getLose(){ /** 获得失败次数 */
return loseN
public int getHandList(){ /** 获得玩家手中牌的列表 */
return hand.toString();
public int getSize(){ /** 获得玩家手中牌的张数 */
return hand.getSize();
public void setHand(Card c){ /** 接受发来的牌 */
return hand.setCard(c);
public List getHand(){ /** 返回玩家手中牌列表 类型:List */
return hand.getCards();
public void youWin(){ /** 赢了一局 */
winNumber++;
public void playAgain(){ /** 清空玩家手中的牌 */
hand.clear();
public void youLose(){ /** 输了一局 */
loseNumber++;
public int getCash(){ /** 得到当前现金 */
public void setCash(int cash){ /** 重新设置当前现金 */
this.cash=
3.Dealer 荷官
/** 发牌者 */
class Dealer{
public static final int MAX_SIZE=52; /** Card对象的最大值 */
protected S /** Card对象的栈 */
protected List drawnC /** 所有已取出牌的集合 */
protected R /** 在上面的列表中允许随即获取 */
/** 创建一个含52张牌的Deck */
public Dealer(){
cards=new Stack(); /** 把给定数目的牌压入栈中*/
for(int i=1 ;i&=MAX_SIZE; i++){
cards.push(new Card(i));
/** 为已取出的牌创建一个池,并创建数字产生器 */
drawnCards=new ArrayList();
random=new Random();
shuffle();
public int getSize(){ /** 返回这副牌剩余的数量 */
return cards.size()+drawnCards.size();
private void shuffle(){ /** 随机洗牌 */
while(! cards.isEmpty()){ /** 清空栈 */
drawnCards.add(cards.pop());
/** 把取出的牌随机放回栈中 */
Object card=
while( ! drawnCards.isEmpty()){
card= drawnCards.remove(Math.abs(random.nextInt()%drawnCards.size()));
cards.push(card);
/** 发牌 */
public Card getCard(){
if( getSize() == 0 ){
//牌已经发完了
/** 重新生成一副牌 */
for(int i=1; i&=MAX_SIZE; i++){
cards.push(new Card(i));
shuffle(); /** 重新洗牌 */
return (Card)cards.pop();
4.CardInHand 一手好牌
/** 玩家持牌*/
class CardInHand{
private ArrayL
public CardsInHand(){
cards=new ArrayList(); /** 创建放牌的list */
public void setCard(Object c){ /** 接受一张发牌 */
cards.add(c);
public void clear(){ /** 清空玩家手中的牌 */
cards.clear();
public int getSize(){ /** 返回玩家手中的牌张数 */
return cards.size();
public String toString(){ /** 显示玩家手中的牌列表 */
String hand ="";
hand = cards.toString();
public ArrayList getCards(){ /** 取得玩家手上的牌 */
5.BlackJack 游戏开始
/**21点(BlackJack)游戏*/ /***/
public class BlackJack{
private Player player, //玩家和电脑
private D //一副牌
BufferedR //读取命令行输入输出流
/** 输出菜单
* 完成所有功能调用 */
public BlackJack(){
/** 入口方法*/
public static void main(String[] args)){
new BlackJack();
/** 游戏开始,在这里完成第一把的投注与发出第一张牌
* 然后由用户选择是投注加倍金额、发下一张牌,还是PASS,或者开牌面 */
private void start(){
/**查看玩家成绩*/
private void checkScore(){
/**玩家投注加倍*/
private void youDouble(int money){
/**玩家投注加倍*/
private int computerPoint(Player player){
/**选择PASS后判断输赢*/
private void youPass(int money){ //PASS
/**再发一张*/
private void getCardAgain(int money){
/**选择开牌面后判断输赢*/
private void winOrLose(int money){
/**实现电脑玩家的控制*/
private int comPlayer(int money){
(2)核心方法之构造方法
/** 打印菜单
* 完成所有功能调用 */
public BlackJack(){
/**初始化玩家的牌*/
player=new Player();
com=new Player();
deck=new Dealer();
String str=
br= new BufferedReader(new InputStreamReader(System.in));
/**打印菜单*/
while(true){
player.playAgain();
com.playAgain();
System.put.printIn("ttt黑 杰 克n");
System.put.printIn("tt 1.开始游戏n");
System.put.printIn("tt 2.查看比分n");
System.put.printIn("tt 3.结束游戏n");
System.put.printIn("t请输入:");
str=br.readLine();
}catch(IOException e){
e.printStackTrace();
switch(Integer.parseInt(str)){
checkScore();
System.exit(0);
System.put.printIn("输入有误,请重新输入!");
(3)核心方法之start()
/** 游戏开始,完成初始金额的投注及发第一张牌
* 然后由用户选择是投注加倍金额、发下一张牌,还是PASS,或者开牌面 */
private void start(){
/**初始化金额为20货币单位*/
int money=20; //投注金额
System.put.printIn("请选择你要投注的金额(最低20货币单位)");
/**用户输入下注金额*/
money=Integer.parseInt(br.readLine());
if(money&20){
}catch(Exception e){
System.put.printIn("你的输入金额不正确,计算机自动将你的投注金额定为20货币单位");
System.put.printIn("下面开始发牌……");
player.setHand(deck.getCard());
com.setHand(deck.getCard());
/**用循环处理发牌的互动*/
System.out.printIn("你得到的牌是:"+player.getHandList());
System.out.printIn("你的选择:1.加倍;2.PASS;3.再要一张;4.开牌;5.退回上级菜单");
yourChoice=Integer.parseInt(br.readLine());
}catch(NumberFormatException ex){
System.out.printIn("输入错误,请重新输入");}
}catch(IOException ex){
System.out.printIn("输入错误,请重新输入");}
}while(true);
switch(yourChoice){
yourDouble(money);
yourPass(money);
getCardAgain(money);
winOrLose(money);
yourChioce=5;
System.put.printIn("你的输入有误,请输入1—5!");
}while(yourChoice!=5);
(4)核心方法之点数计算 computerPoint(Player player)
/**点数计算*/
private int computePoint(Player player){
int playerPoint=0; //玩家的牌点
int numberOfA=0; //A点拿到的张数
/**A点以外的分数累加*/
for(int i=0;i&player.getHand().size();i++){
Card c=(Card)player.getHand().get(i);
if(c.getFace().charAt(0)&='2' && c.getFace().charAt(0)&='9'){
playerPoint+=Ingeter.parseInt(c.getFace()); //牌点在2~9之间累加
}else if(c.getFace().equals("J")||
c.getFace().equals("Q")||
c.getFace().equals("k")||c.getFace().equals("10")){
playerPoint+=10; //牌点在 J Q K 则累加10
}else if(c.getFace().charAt(0)=='A'){
numberOfA++;
/**A点的分数累加*/
if(numberOfA==0){
/**A点的加分比较特殊,在A计分为11分爆分时,A就计为1*/
if(playerPoint+(11*numberOfA)&21){
playerPoint+=numberOfA;
playerPoint+=11;
if(playerPoint&=21){
return playerP
return 0; //超过21点(爆分)
PHP开发框架
开发工具/编程工具
服务器环境
ThinkSAAS商业授权:
ThinkSAAS为用户提供有偿个性定制开发服务
ThinkSAAS将为商业授权用户提供二次开发指导和技术支持
让ThinkSAAS更好,把建议拿来。
开发客服微信页面没有找到百分百源码网 官方QQ群:最新动态
^程序名称: dede5.7织梦大气 工商代理公司模板 企业网站源码 公司注册模板 程序内核: dede5.7 官方最新版 UTF-8 演示地址: .cn/739/ 源码大小: 16MB 源码简介: dede5.7织梦大气 工商代理公司模板适合做工商注册代理 商标代理公司 商务服务
^destoon6.0蓝色仿企汇网模板 destoon宽屏大气B2B网站模板带数据,整站打包 网站截图:
DEDE织梦模板
商业模板 /
/ 免费提供技术支持
分类:destoon模板193
分类:destoon模板85
分类:destoon模板217
分类:destoon模板99
分类:商业模版175
分类:dedecms模板147
分类:ECSHOP模板123
分类:ECSHOP模板65
分类:ECSHOP模板69
分类:ECSHOP模板175
分类:destoon模板166
分类:destoon模板90
分类:destoon模板159
分类:商业模版101
分类:destoon模板120
终身&VIP模板 /
/ 免费提供技术支持
下载权限:VIP模板131
下载权限:VIP模板201
下载权限:VIP模板120
下载权限:VIP模板146
下载权限:VIP模板200
下载权限:VIP模板107
下载权限:VIP模板147
下载权限:VIP模板75
下载权限:终身VIP模板146
下载权限:终身VIP模板108
下载权限:终身VIP模板154
下载权限:终身VIP模板79
下载权限:终身VIP模板170
下载权限:终身VIP模板60
下载权限:终身VIP模板134
下载权限:终身VIP模板118
下载权限:终身VIP模板163
下载权限:终身VIP模板158
下载权限:终身VIP模板67
下载权限:终身VIP模板144
免费模板 / /
/ 免费提供技术支持
下载权限:免费模板132
下载权限:免费模板111
下载权限:免费模板207
下载权限:免费模板130
下载权限:免费模板91
下载权限:免费模板102
下载权限:免费模板151
下载权限:免费模板124
下载权限:免费模板120
下载权限:免费模板55
下载权限:免费模板195
下载权限:免费模板182
下载权限:免费模板66
下载权限:免费模板158
下载权限:免费模板96
下载权限:免费模板147
下载权限:免费模板133
下载权限:免费模板118
下载权限:免费模板107
下载权限:免费模板201
织梦CMS教程
destoon教程
友情链接(请联系QQ:):

我要回帖

更多关于 扑克牌杰克 的文章

 

随机推荐