扑克牌杰克高手有什么高手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更好,把建议拿来。
开发客服微信扑克牌的玩法有哪些 扑克牌有多少种玩法_知识频道_买购网
按模块条件查看
摘要:扑克牌起源于东方,它是由中国纸牌的启发影响而发展的,由商人、士兵传入欧洲。早期的扑克牌是手工制作的,只有王公贵族才能玩。那么,扑克牌的玩法有哪些?扑克牌有多少种玩法呢?
扑克牌的玩法有哪些 扑克牌有多少种玩法
“斗地主”是一种三人玩的争先型牌类游戏(四人也能玩),每局牌有一个玩家是“地主”,独自对抗另两个组成同盟的玩家。地主的目标是(以合法的出牌方式)先出完手里所有的牌,而农民的目标是在地主出完牌以前,农民中的任何一人先出完手里所有的牌。
斗地主起源于湖北十堰房县,据传是一位叫吴修全的年轻人根据当地流行的扑克玩法“跑的快”改编的,如今已风靡整个中国,并流行于互联网上。
大众流行玩法
一、接龙 二、拱猪 三、梭哈 四、十点半 五、二十一点 六、捡红点 七、大老二(锄大地) 八、坏杰克 九、死缠烂打 十、扑克王(PK王)
单人自娱玩法
一、倒梯形 二、被囚禁的皇后 三、金字塔之谜 四、含笑的玫瑰 五、盛会 六、蹉跎岁月 七、同花大顺 八、女皇接见 九、坎菲尔德 十、兵戎相见 十一、后方战场 十二、高尔夫 十三、月牙 十四、胜利之门 十五、四朵金花 十六、成双配对 十九、旋转的钟 二十、十四方阵 二十一、国宾进城 二十二、八龙归海 二十三、红与黑 二十四、四同连绘牌 二十五、王族婚典 二十六、傀儡皇后
双人对打玩法
一、扑克王(PK王)
多人共抗玩法
二、五十K
三、拖拉机
又名“双抠”,是一种在中国各地广为流传的扑克游戏,是由著名的扑克牌局 “升级”发展演化而来。 和“升级”一样,牌局采用四人结对竞赛,抢分升级的方式进行。基本规则也和“升级”相似。具有规则简明、对抗性强等特点。“拖拉机”在保留“升级”的上述优点的同时,增加了牌的张数(由54张变为108张〕,取消了对底牌压分的限制,使牌局的变化更为丰富。“对牌”、“拖拉机” (这也是“拖拉机”这一游戏名称的由来〕等出牌形式和“双抠翻倍”等规则的增加,使牌局更富有娱乐性和刺激性。
四、德州扑克
五、扑克王(PK王)
您可能关心的:
文章来源:
免责声明:
凡注明"来源:XXX"的知识/资讯/名人/访谈等文章,均由企业/经销商/用户自行通过本网站系统平台投稿编辑整理发布或转载自其它媒体,仅供学习与参考等非商业用途性质使用,并不代表本网站赞同其观点和对其真实性负责。
如有侵犯您的版权,请联系我们,我们将及时删除。
提交说明:
注册登录发布:
行业精彩推荐
月关注排行榜
最新加入文章
历史关注排行
9345人关注
3641人关注
2575人关注
1704人关注
1506人关注
1476人关注
1111人关注
1651人关注
16226人关注
9345人关注
3641人关注
3058人关注
按条件查看:
广东省通信管理局,

我要回帖

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

 

随机推荐