21点牌标准代码

合集下载

21点源代码

21点源代码

package trys;

public class Card {

/**

*

目标:获取和设置牌得类型和面值

*

@param type,value

*

@author Lee

*/

private int value=0; //代表纸牌的面值private int type=0; //代表纸牌的花色public Card(int type,int value){ //构造方法,给面值和花色赋值

this.value=value;

this.type=type;

}

//定义方法获取类型

public int getType(){

return type;

}

//定义方法获取面值

public int getValue(){

return value;

}

//定义方法设置纸牌的类型

public void setType(int type){ this.type=type;

}

//定义方法设置纸牌的面值

public void setValue(int value){ this.value=value;

}

}

package trys;

import java.awt.Container;

import javax.swing.ImageIcon;

import javax.swing.JLabel;

public class CardManager {

/**

*

目的:初始化牌,生成,和发牌

*

@version Lee

*/

public Card[] cards=new Card[52]; //定义数组存放纸牌

/*初始化纸牌*/

public void initCards(){

21点源代码

21点源代码

public class run extends javax.swing.JFrame {

public run() {

initComponents(); // 从A - K的扑克牌,用来计算扑克牌点数

String faces[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11","12", "13"};String color[] = {"Spades", "Heart", "Clubs", "Diamond"}; // 扑克牌的"?黑桃"、"?红桃"、"?梅花"、"?方块"

deck=new Card[52]; // 一共52张扑克牌

for(int i=0;i

deck[i]= new Card(faces[i%13],color[i/13]); // 扑克牌点数及花色shuffle(); // 洗牌代码

// Gamedh.setVisible(false);

Gamepn.setVisible(false); // 设置在没有下注的前,其他按钮是不可点击的

Naskcard.setEnabled(false);

Nnoaskcard.setEnabled(false);

Ndoublemoney.setEnabled(false);

Ndecreasemoney.setEnabled(false);

Giveup.setEnabled(false);}

/****相关按钮等对象的创建*****/

@SuppressWarnings("unchecked")

Python扑克牌21点游戏实例代码

Python扑克牌21点游戏实例代码

Python扑克牌21点游戏实例代码废话还是说太多了直接上代码

import random

import sys

# 牌⾯列表

card_code = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']

# 花⾊列表

card_symbol = ['♦', '♣', '♥', '♠']

# 游戏初始化

def init(player_count):

# 根据玩家数来⽣成玩家记牌器

player_group = [[] for _ in range(player_count)]

# 根据玩家数来⽣成玩家是否要牌

player_isWant = [True for _ in range(player_count)]

# ⽣成元素1~52的列表 (去掉⼤⼩⿁的扑克牌[52张])

poker = list(range(1, 53))

# ⽤random的shuffle函数对列表打乱顺序 (洗牌)

random.shuffle(poker)

# 返回玩家组玩家是否要牌乱序52张扑克

return player_group, player_isWant, poker

# 打印玩家点数

def print_player_point(player_group):

# 存放玩家点数

player_point = []

# 遍历每⼀位玩家

for index in range(len(player_group)):

# 打印每位玩家的牌和点数

print("-------玩家"+str(index+1)+"------")

c++21点游戏的代码和报告

c++21点游戏的代码和报告

数学与计算机学院

课程设计说明书

课程名称: 面向对象程序设计-课程设计

课程代码: 8404101

题目: 21点的扑克牌游戏

年级/专业/班: 09/软件工程/1班

学生姓名:

学号: 312009*********

开始时间:2011 年06 月13日

完成时间:2011 年06月21 日

课程设计成绩:

指导教师签名:年月日

目录

1 引言 (1)

1.1问题的提出 (1)

1.2任务与分析 (1)

2 程序的主要功能 (2)

2.1新建用户功能 (2)

2.2判断密码功能 (2)

2.3判断进程功能 (2)

2.4显示功能 (2)

2.5获得牌的功能 (2)

2.6初始化功能 (2)

3 程序运行平台 (3)

4 总体设计 (4)

5 程序类的说明 (5)

6 模块分析 (6)

6.1新建用户模块 (6)

6.2显示模块 (6)

6.3判断密码模块 (8)

6.4判断游戏进程模块 (10)

6.5获得一张牌模块 (11)

6.6初始化模块 (12)

7 系统测试 (13)

8 结论 (16)

参考文献 (17)

摘要

随着计算机的普及,计算机游戏逐渐进入了这个时代,本次利用学到的c++编写了一个21点的扑克牌游戏,该游戏具有新建用户,判断牌等功能关键词:21点的扑克牌游戏;计算机;

1 引言

1.1 问题的提出

设计一个21点的扑克牌游戏,玩家一共可以要5张牌,但如果牌的点数超过21,则暴了,自动出局;在不超过21点的情况下,玩家与庄家比牌的点数大小,大者为赢。

1.2任务与分析

(1) 将所有的函数与相应的数据封装到类中。

(2) 程序中一共有13张扑克牌可以随机抽取,大于10的点数全部为半点:只需设计随机取下一张牌的成员函数时使用if语句判定牌的点数是否大于10,大于10的牌对其重新赋值为0.5即可。

C语言21点纸牌游戏系统详细设计

C语言21点纸牌游戏系统详细设计

C语言21点纸牌游戏系统详细设计

主函数

键盘输

产生随机

键盘输输入H 输出

统计

选择是否

图2.1 进入游戏后的游戏说明及规则

2.2开始游戏

图2.2 选择下注数目,然后随机发牌,只能见庄家一张牌,可以选择查看庄家隐藏的牌,此为游戏高级模式,开启后可选择想要的牌2.3作弊模式

图2.4在作弊模式下取胜,可以接着要牌,但玩家的牌最多不能超过5张,取胜后会统计结果,询问是否继续游戏2.5非作弊模式

图2.5 此情况为非作弊模式,不能见庄家的牌,只能知道结果,输掉游戏后统计结果,询问是否继续

2.6退出游戏

图2.6此为退出游戏,输入后自动关闭窗口

3.源程序:

#include

#include

#include

#include

void Wait_f(int);

void Pause_f();/*暂停,按任意键继续*/

int Random_f(long ,long );/*返回两个参数之间的随机数*/ void Replay_f(char *);/*询问是否重开一局*/

void Hit_f(int *);/*发一张牌*/

void Deal_f(int *,int *,int *,int *);/*双方各发两张牌*/

nCpuTurns=0,nMoney=0,nBet;

/* nPlayer--玩家手中全部牌的点数和,nPlayerTurns--玩家手中牌的数量 char chAnswer;

char mmm;

int a;

system("cls");/* 执行系统命令"清屏" */

Rules_f();

printf("确认是否开始游戏:");

C++课程设计---21点纸牌游戏程序

C++课程设计---21点纸牌游戏程序

#include

#include

#include

#include

#include

#include

class Game

{

public:

Game()

{

win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0;

player=0,cpu=0;

char answer1[]="123456";

strcpy(answer,answer1);

char answer2[]="654321";

strcpy(daan,answer2);

};

void rules();//显示规则

void BET(); //下注

void deal();//交易

void run(Game &);//进行异常处理

void hit1();//拿下一牌

void hit2();//确保庄家不会爆庄并且点数大于16

void print();//打印出最后结果

void results();//最后的胜利结果

void check();//检查是否爆庄

Game operator=(Game &d);//运算符重载

void replay(char &ans);//是否进行新一轮的游戏

void clean();//清屏

void wait(int);

void pause();

int GetInt(int,int);

int random(long,long);

private:

int playerturns,cputurns,money;

int win,lose,draw,bet;

float player,cpu;

二十一点规则

二十一点规则

二十一点规则

引言:

二十一点(Blackjack),也被称为“21点”,是一种非常流行的

纸牌游戏,通常由一至六副扑克牌进行。在这个游戏中,玩家的目

标是尽可能接近但不超过21点,同时要打败庄家。二十一点规则

虽然简单易学,但是需要玩家掌握一定的策略和技巧,才能提高胜算。

一、基本规则:

1. 二十一点的牌面点数规则如下:Ace(A)的点数可以是1点或

11点;2-10的点数按牌面上的数值计算;J、Q、K的点数都为10点。

2. 游戏开始时,玩家和庄家将分别发两张牌。玩家所有的牌都是面

向上的,而庄家的一张牌则是面向上的,另一张牌是面向下的。

3. 玩家可以选择“要牌”(Hit),即向庄家要求发一张额外的牌,以增加自己的牌面点数。玩家可以任意次数的要牌,直到决定停止。

4. 玩家也可以选择“停牌”(Stand),即停止要牌,并进入庄家的回合。

5. 当玩家的牌面点数超过21点时,即为“爆牌”(Bust),玩家将直接判负。

6. 庄家的回合:庄家会根据规定的策略继续要牌或停牌。通常情况下,庄家在手中的牌面点数低于17点时会要牌,超过17点时则停牌。

7. 当玩家停牌后,庄家会将自己未亮出的牌翻开,进行点数比较。点数更接近21点的一方获胜,如果点数相同,则判定为平局。

二、特殊情况:

1. “黑杰克”(Blackjack):当玩家拿到一张A和一张10点牌(包括J、Q、K)时,即为“黑杰克”或“天才”,此时玩家直接获胜。

2. “分牌”(Split):当玩家手中的两张牌点数相同时,可以选择将其分为两个独立的手牌,并继续游戏。这需要玩家再下注一次,并将每张牌的点数作为新手牌的起始点数。

数学建模纸牌游戏21点(蒙特卡罗法)

数学建模纸牌游戏21点(蒙特卡罗法)

• 第10步 判断y2的值是否为1,若等于1将 其值改为11,重新计算SUM2,并判断 SUM2是否大于21,若大于21则将y2改为1, 并重新计算SUM2,若没有大于21则继续第 12步;若y2不为1,直接进行第12步. • 第11步 玩家判断SUM1是否大于等于18 或大于庄家第一张牌y1的两倍,若是则玩家 停止取牌,跳到第14步;若没有则继续取 牌,得到[1,13]内的随机数xi,进行第13步.
• • • • • • • •
else if 21>totw && totw==totz SCORE=0; end end end end end SUM=SUM+SCORE;%fprintf('玩家得分 SCORE=%d\n',SCORE); • end • fprintf('玩家得分平均值SCORE=%d\n',SUM/n); • 保存为dian21.m
• totw=totw+pw(numw); • end • end • while 1 • if (totz>=17)&(totz<=21) • break; • end • if totz<17 • [numz,pz,a]=choose(numz,pz,a); • totz=totz+pz(numz); • else • b=0; • for i=1:numz

21点源代码

21点源代码

#include

#include

#include

#include

#include

//二维数组:第一行存储牌的点数,第二行存储牌的符号

int cpu_card[2][5]={0},cpu_count=0,cpu_trun; //cpu_count表示电脑牌数,cpu_turn表示电脑是否要牌的状态

int play_card[2][5]={0},play_count=0,play_trun; //play_count表示玩家牌数,play_turn表示玩家是否要牌的状态

int win=0,lose=0,draw=0; //win表示赢的局数,lose表示输的局数,draw表示平的局数

int cpuds(); //计算电脑总点数

int playerds(); //计算玩家总点数

void rule() //游戏规则

{

printf("*********欢迎进入21点游戏世界!*********\n");

printf("* 基本游戏规则:*\n");

printf("* 游戏纸牌不包含大小鬼*\n");

printf("* 开始游戏每人发一张牌*\n");

printf("* 玩家最多可以要五张牌*\n");

printf("* 谁先到21点或最接近21点算谁赢*\n");

printf("* 点数相同或都超过21点时算平局*\n");

printf("* 祝您好运!*\n");

printf("**************************CJY作*********\n");

printf("(1)新游戏\n");

21点游戏源代码

21点游戏源代码

#include#include#include#includevoid rule(){ printf(" ********************欢迎来到21点游戏界面********************\n");printf(" ******************以下是一些简单的游戏规则******************\n");printf(" ***********************你最多有五张牌***********************\n");printf(" ******************如果你超出21点你自然输了******************\n");printf(" ***********如果你赢了可以获得两倍的你下注的资金*************\n");printf(" ****************牌数总和在16点以后就不再发牌****************\n");}void pause()// 暂停函数{ printf("任意键继续");getchar();}void delay(int a)// 延迟函数 { int b,c;for(b=0;b<2000*a;b++)for(c=0;c<1000;c++);}int random(long max,long min) // 产生一个随机数在最大数和最小数之间的整数{ int a;srand((unsigned)time(NULL));a=rand()%(max-min+1)+min;return(a);}void replay(char *answer){printf("\n 您还继续玩吗?");scanf("%c",answer);}void print(int draw,int win,int lose,int money){printf("\n");printf("\n ********************");printf("\n * 您总共赢了 %d 局 *",win);printf("\n * 您总共输了 %d 局 *",lose);printf("\n * 您总共平了 %d 局 *",draw);printf("\n * 您还剩 %d 赌资 *",money);printf("\n ********************");printf("\t\n");}void bet(int *money,int *bet){ printf("您拥有资金为%d元\n",*money);printf("请输入您要下注的资金(不能超多您的总资金):\n");scanf("%d",bet);while((*bet<0)||(*bet>*money)){ printf("您输入有误,请输入您要下注的资金(不能超多您的总资金):\n");scanf("%d",bet);}}void fapai(int *player,int *cpu,int *pturns,int *cturns){int playercard1,playercard2,cpucard1,cpucard2;*pturns=2;*cturns=2;playercard1=random(13,1);delay(150);cpucard1=random(13,1);delay(150);playercard2=random(13,1);delay(150);cpucard2=random(13,1);delay(150);if(playercard1>10){playercard1=10;//(playercard1)/2;}if(playercard2>10){playercard2=10;//(playercard2)/2;}if(cpucard1>10){cpucard1=10;//(cpucard1)/2;}if(cpucard2>10){cpucard2=10;//(cpucard2)/2;}*player=playercard1+playercard2;*cpu=cpucard1+cpucard2;printf("\n 您的两张牌的点数是:%d,%d\n",playercard1,playercard2);printf(" 您当前的总点数为:%d\n",*player); printf(" 庄家的两张牌的点数是:%d,%d\n",cpucard1,cpucard2);printf(" 庄家当前的总点数为:%d\n\t",*cpu); //getchar();}int pfapai(int *player){int card;card=random(13,1);if(card>=10){card=10;}

C++课程设计---21点纸牌游戏程序

C++课程设计---21点纸牌游戏程序

#include<iostream.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<iostream.h>

#include<string.h>

class Game

{

public:

Game()

{

win=0,lose=0,draw=0,playerturns=0,cputurns=0,money=100,bet=0;

player=0,cpu=0;

char answer1[]="123456";

strcpy(answer,answer1);

char answer2[]="654321";

strcpy(daan,answer2);

};

void rules();//显示规则

void BET(); //下注

void deal();//交易

void run(Game &);//进行异常处理

void hit1();//拿下一张牌

void hit2();//确保庄家不会爆庄并且点数大于16

void print();//打印出最后结果

void results();//最后的胜利结果

void check();//检查是否爆庄

Game operator=(Game &d);//运算符重载

void replay(char &ans);//是否进行新一轮的游戏

void clean();//清屏

void wait(int);

void pause();

int GetInt(int,int);

21点游戏

21点游戏

import java.awt.BorderLayout;import java.awt.Color;import ponent;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.IOException;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.SwingConstants;import javax.swing.border.LineBorder;public class game extends JFrame { private int number;private int number1;private int sum;//玩家点数 private int sum1;//庄家点数protected int winNumber;//赢的次数protected int loseNumber;//失败的次数protected int pingju;//平局的次数protected int cash=20000;//玩家手中当前的现金private JLabel label_2; private JLabel label_3; final JLabel label = new JLabel(); final JLabel label1 = new JLabel();final JLabel label_1 = new JLabel(); final JLabel label2 = new JLabel(); JLabel label3 = new JLabel(); JLabel label4 = new JLabel(); JLabel label5 = new JLabel(); JLabel label6 = new JLabel(); //"平局的次数"标签public static void main(String[] args) { new game(); new ReadFileWindow();} public game() { super("欢迎进入! 21点扑克小游戏"); getContentPane().setLayout(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JButton button = new JButton(); final JButton button2 = new JButton();final JButton button3 = new JButton();final JButton button5 = new JButton();final JButton button8 = new JButton("游戏帮助");button.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { onClick(); } }); //出牌按钮button2.addActionListener(new ActionListener() { private Object cash;public void actionPerformed(final ActionEvent arg0) { //onClick1();onClick11();} });//加陪按钮 button3.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { onClick2(); }private void onClick2() {// TODO Auto-generated method stub} });//成绩排行榜按钮/*button4.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { onClick3(); }private void onClick3() {// TODO Auto-generated method stub} }); //成就按钮*/button8.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent arg0) { new ReadFileWindow(); }class ReadFileWindow extends JFrame implements ItemListener{JComboBox list;JTextArea showText;ReadFileWindow(){showText=new JTextArea(12,12);list=new JCo

21点游戏代码

21点游戏代码

DATA SEGMENTBUFF1 DB '****************************************'DB ' 'DB ' Welcome you to run this game! 'DB ' 'DB '****************************************','$'N DB ?JIFEN DB ?DIPAI DB ?PAIDIAN DB ?QH1 DB ?QH2 DB ?SH DB '10','$'JK DB 'PEI LV(10 OR 5)?','$'MESSAGE0 DB 'DOU YOU WANT TO MORE?','$'MESSAGE1 DB '************YOU WIN!************','$'MESSAGE2 DB '************YOU LOSE!***********','$'MESSAGE3 DB 'Go on or not?','$'MESSAGE4 DB 'This is dipai:','$'MESSAGE5 DB ' This is JIFEN:','$'MESSAGE6 DB '******THE GAME IS OVER !******','$'MESSAGE7 DB 0AH, 0DH,'This is your PAIDIAN:','$'DATA ENDSSTACK SEGMENT DW 256 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DS ;将ds寄存器压入栈MOV AX,0 ;将0传入ax寄存器PUSH AX ;将ax压入栈MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXBEGIN: CALL XX0 ;h240输出字符xx0A1: MOV JIFEN,50 ;定义积分A2: CALL RAND ;调用函数h124MOV DIPAI,BL ;产生随机数为底牌 CALL CHULI ;调用函数h315,判断牌点是否大于在10MOV QH1,BL ;产生电脑底牌JB1: CALL XX ;h233,输出字符串 MOV AH,0 ;从键盘读取字符,ah/al=扫描码INT 16H ;中断CMP AL,59H ; 相减,只影响标志位zf,59h表示字母yJE JI ; 若是y则跳转h58CALL XX21 ;函数调用h339MOV N,5JMP A3 ;无条件跳转 JI: MOV N,10CALL XX20 ;h344,输出字母yA3: CALL RAND ;h124,产生一个随机数CALL XX19 ;h324,;输出message7MOV PAIDIAN,BL ;再发一张牌 CALL DISP0 ;h154 判断牌点具体数值 CALL CHULI ;307判断牌点是否大于10MOV QH2,BL ;产生底牌 CALL XX4 ;h252输出message0A4: MOV AH,0 ;从键盘读字符,ah/al=扫描码 INT 16H CMP AL,4EH JE HC ;4e表示字母n,相等跳转 CMP AL,59H JE A4 ;59h表示y,是y就跳转A5: CALL RAND ;h129产生一个牌点CALL XX19 ;输出字符串message7MOV PAIDIAN,BL ;牌点CALL DISP0 ;判断具体牌点

21点程序源代码

21点程序源代码

#include#include#include "utility.h"#include "wait.h"#include#include#include#define N '\r'//fuctions.class CCard {private:float player; //玩家点数float cpu; //电脑点数int win; //赢的次数int lose; //输的次数int draw; //平的次数int playerturns; //玩家牌数int cputurns; //电脑牌数int money; //有多少钱int bet; //下注的钱public:void setmoney(int a); //给玩家本钱void rules(); //游戏规则void replay(char &ans); //询问是否继续玩void print(int wins,int lose,int draw,int money); //输出最后结果void deal(float &player,float &cpu,int &playerturns,int &cputurns); //为计算机和玩家个发两张牌void hit(float &total); //普通玩家要一张牌void hit2(float &total); //高级玩家要一张牌void hit3(float &total); //超级玩家要一张牌void BET(int &bet,int &money); //下注void results(float player,float cpu,int bet,int &money,int &draw,int &win,int &lose); //判断输赢void reBET(int &bet,int &money);int common(); //普通玩家int advanced(); //高级玩家int super(); //超级玩家}game;int main(int &money){void rules();float player=0,cpu=0;int win=0,lose=0,draw=0,playerturns=0,cputurns=0;char ans;int ch;system("cls"); //执行系统命令 clsgame.rules();cout<<"\t\t\t你想玩吗?y/n:";cin>>ans;if((ans == 'y')||(ans=='Y')){cout<<"\t\t\t给你100美元初始钱数">ch;switch(ch){case 1:mon(); break;case 2:game.advanced(); break;case 3:game.super(); break;default:cout<<"选择错误,程序退出!"<}return(0);}void CCard::setmoney(int a){money=a;}//--------------------------------------------------------------------------------int CCard::common(){char ans;do{system("cls");if(money<0) //看是否无赌本{cout<<"你破产了!"

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#include
#include
#include
#include"string.h"
#include
using namespace std;
///////////////////////
////////////////////////////////////
class Card
{
private:
char m_type;
int m_num;
public:
void card(char a,int b){m_type=a,m_num=b;}
int outnum(){return m_num;}
int GetText();
};
class Poker
{
private:
int count;
Card card[54];
public:
Poker();
void Xipai();
int Fapai();
int sum(int,int,int);
Card *getcard();
};

///////////////////////////////////////////////////
Card *h;
int get(int max,int min);
// TODO: reference additional headers your program requires here
///////////////////////////////////////////
class Player
{
public:
Card *card[20];
int count;
char name[10];
int score;
Player(){
count=score=0;
for(int i=0;i<20;i++)
card[i]=NULL;
}
int showpoint();
void showpoker();
void reset();
};
class Newgame
{
private:
Poker *poker;
Player *player[5];
int num,n;
char boss[10],a[10];
public:
Newgame();
void login();
void begin();
char *victory();
bool callpoker(Player &);
void show();
};
////////////////////////
void Newgame::show()
{
for(int f=0;f<54;f++)
poker->Fapai();
}
/////////////////////////////////
int get(int max,int min)
{

int n=rand();
n=n%(max-min+1)+min;
return n;
}

int Card::GetText()
{
if((1==m_num)&&(m_type=='K')){ printf("大王 ");return 1;}
if((0==m_num)&&(m_type=='K')){ printf("小王 ");return 1;}
int k=m_num%13;
switch(k)
{
case 1:{if(m_type=='H') cout<<"红桃A ";
if(m_type=='C') cout<<"梅花A ";
if(m_type=='D') cout<<"方块A ";
if(m_type=='S') cout<<"黑桃A ";
return 1;}
case 11:{
if(m_type=='H'){ cout<<"红桃J "; return 1;}
if(m_type=='C'){ cout<<"梅花J "; return 1;}
if(m_type=='D'){ cout<<"方块J "; return 1;}
if(m_type=='S'){ cout<<"黑桃J "; return 1;}
}
case 12:
{
if(m_type=='H'){ cout<<"红桃Q "; return 1;}
if(m_type=='C'){ cout<<"梅花Q "; return 1;}
if(m_type=='D'){ cout<<"方块Q "; return 1;}
if(m_type=='S'){ cout<<"黑桃Q "; return 1;}
}
case 0:{if(m_type='H'){ cout<<"红桃K "; return 1;}
if(m_type=='C'){ cout<<"梅花K "; return 1;}
if(m_type=='D'){ cout<<"方块K "; return 1;}
if(m_type=='S'){ cout<<"黑桃K "; return 1;}
}
return 1;
}
if(m_num<=10&&m_num>=2)
{
if(m_type=='H'){ cout<<"红桃"<if(m_type=='C'){ cout<<"梅花"<if(m_type=='D'){ cout<<"方块"<if(m_type=='S'){ cout<<"黑桃"<}
return 1;
}
Poker::Poker(){
count=54;
for(int i=0;i<13;i++)
card[i].card('H',(i+1));
for(i=13;i<26;i++)
card[i].card('C',((i%13)+1));
for(i=26;i<39;i++)
card[i].card('D',((i%13)+1));
for(i=39;i<52;i++)
card[i].card('S',(i%13)+1);
card[52].card('K',1);
card[53].card('K',0);
}

void Poker::Xipai()


{
count=54;
for(int k=0;k<54;k++)
{
int m=get(54,1)%54;
Card r;
r=card[k];
card[k]=card[m];
card[m]=r;
}
}
int Poker::Fapai()
{
if(count<=54&&count>=1){
card[54-count].GetText();
count--;
}
else
cout<<"牌已经发完!"<return count;
}
Card *Poker::getcard(void)
{
if(count<=54&&count>0)
{
h=&card[54-count];
count--;
return h;
}
else
cout<<"牌已经发完!"<return NULL;
}
int Poker::sum(int a,int b,int c)
{
return card[a].outnum()+card[b].outnum()+card[c].outnum();
}
///////////////////////////////////////////////////
Newgame::Newgame()
{
poker=new Poker;
login();
num=n+1;
player[0]=new Player;
strcpy(player[0]->name,a);
for(int i=1;i<=n;i++)
{
player[i]=new Player;
sprintf(player[i]->name,"Computer%d",i);
}
for(i=num;i<5;i++)
player[i]=NULL;
}
void Newgame::login()
{
system("COLOR 1D");
cout<<"21点游戏...."<cout<<"请输入你的名字:"<cin>>a;
cout<<"你想同多少个电脑一起游戏?(1~4个)"<cin>>n;
while(n<1||n>4)
{
cout<<"输入出错!请你输入一个1~4的数字,以便开始游戏!"<cin>>n;
}
}
bool Newgame::callpoker(Player &t)
{
if(strcmp(,player[0]->name)!=0)
{
if(t.showpoint()<11||
(t.showpoint()>10&&get(15,1)<=(21-(t.showpoint() ))&&t.showpoint()<=21))
{
t.card[t.count]=poker->getcard();
cout<<<<"抓了一个牌!"<t.count++;
return 1;
}
else return 0;
}
else
{if(t.showpoint()>=21) return 0;
else{
cout<<"你想继续抓牌吗?你现在的点数为:"<char a;
cin>>a;
while(a!='y'&&a!='Y'&&a!='N'&&a!='n')
{
cout<<"请你再次确认输入是否出错?(N or Y)"<cin>>a;
}
if(a=='Y'||a=='y')
{
t.card[t.count]=poker->getcard();
cout<<"你抓到了一张 ";
t.card[t.count]->GetText();
cout<t.count++;
return 1;
}
else
return 0;
}
}
}
int Player::showpoint()
{
int j=0,sum=0;
while(card[j]!=NULL)
{
if(card[j]->outnum()>10||card[j]->outnum()==0) sum+=1;
else sum+=card[j]->outnum();
j++;
}
return sum;
}
void Player::showpoker()
{
int j=0;
while(card[j]!=NULL)
{
card[j]->GetText();
j++;
}
cout<}
void Player::reset()
{
for(int i=0;i<20;i++)
card[i]=NULL;
count=0;
}
char *Newgame::victory()
{
int k=1;Player *r=player[0];
while(k{
if(r->showpoint()==player[k]->showpoint())
{
if(!strcmp(player[k]->name,boss))
{ r=player[k]; k++;continue;}
else
{ k++;continue;}
}
if(r->showpoint()<=21&&player[k]->showpoint()<=21)
{ if(r->showpoint()showpoint())
r=player[k];
}
else
{
if(r->showpoint()<=21) r=r;
else r=player[k];
}
k++;
}
r->score++;
return r->name;
}
void Newgame::begin()
{
cout<<"现在你将开始游戏!"<poker->Xipai();
int w=0;
bool end=true;
while(1)
{
strc

py(boss,player[w]->name);
cout<<"现在是"<name<<"作庄!"<while(1)
{
for(int l=w;l{
if(callpoker(*player[l%num]))
end=false;
}
if(end)
break;
else end=true;
}
cout<<"赢家是:"<cout<<"各自的点数及牌为:"<for(int k=0;k{
cout<name<<": "<showpoint()<<" ";
player[k]->showpoker();
}
for(int u=0;u{
cout<name<<"的积分为:"<score<player[u]->reset();
}
cout<<"是否继续游戏(Y or N)?"<char h;
cin>>h;
while(h!='y'&&h!='Y'&&h!='n'&&h!='N')
{
cout<<"请确认输入是否正确:(Y or N)?"<cin>>h;
}
if(h=='Y'||h=='y')
{
w=(w+1)%num;
end=true;
poker->Xipai();
system("cls");
}
else
{
cout<<"谢谢使用!"<break;
}
}
}

void main()
{
srand((unsigned)time(NULL));
Newgame game;
game.begin();
}

相关文档
最新文档