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点源代码
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点游戏实例代码废话还是说太多了直接上代码
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点游戏的代码和报告
数学与计算机学院
课程设计说明书
课程名称: 面向对象程序设计-课程设计
课程代码: 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点纸牌游戏系统详细设计
主函数
开
键盘输
产生随机
键盘输输入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点纸牌游戏程序
#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点(蒙特卡罗法)
• 第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点源代码
#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点游戏源代码
#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点纸牌游戏程序
#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点游戏
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点游戏代码
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点程序源代码
#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美元初始钱数"
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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<<"红桃"<
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<<"牌已经发完!"<
}
Card *Poker::getcard(void)
{
if(count<=54&&count>0)
{
h=&card[54-count];
count--;
return h;
}
else
cout<<"牌已经发完!"<
}
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<<"你想同多少个电脑一起游戏?(1~4个)"<
while(n<1||n>4)
{
cout<<"输入出错!请你输入一个1~4的数字,以便开始游戏!"<
}
}
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<<<<"抓了一个牌!"<
return 1;
}
else return 0;
}
else
{if(t.showpoint()>=21) return 0;
else{
cout<<"你想继续抓牌吗?你现在的点数为:"<
cin>>a;
while(a!='y'&&a!='Y'&&a!='N'&&a!='n')
{
cout<<"请你再次确认输入是否出错?(N or Y)"<
}
if(a=='Y'||a=='y')
{
t.card[t.count]=poker->getcard();
cout<<"你抓到了一张 ";
t.card[t.count]->GetText();
cout<
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()
r=player[k];
}
else
{
if(r->showpoint()<=21) r=r;
else r=player[k];
}
k++;
}
r->score++;
return r->name;
}
void Newgame::begin()
{
cout<<"现在你将开始游戏!"<
int w=0;
bool end=true;
while(1)
{
strc
py(boss,player[w]->name);
cout<<"现在是"<
{
for(int l=w;l
if(callpoker(*player[l%num]))
end=false;
}
if(end)
break;
else end=true;
}
cout<<"赢家是:"<
cout<
player[k]->showpoker();
}
for(int u=0;u
cout<
}
cout<<"是否继续游戏(Y or N)?"<
cin>>h;
while(h!='y'&&h!='Y'&&h!='n'&&h!='N')
{
cout<<"请确认输入是否正确:(Y or N)?"<
}
if(h=='Y'||h=='y')
{
w=(w+1)%num;
end=true;
poker->Xipai();
system("cls");
}
else
{
cout<<"谢谢使用!"<
}
}
}
void main()
{
srand((unsigned)time(NULL));
Newgame game;
game.begin();
}