/*
洗牌、发牌过程模拟
假设一副牌没有大小王,有四种花色,每一种有13张,轮流发牌.
*/
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
enum style {RedPeach=6,BlackPeach=3,Club=5,Pane=4};
const char* Replace(char ch);
struct Card
{
char Value; //牌点
style Style; //花色
}Person[4][13];
int main()
{
char card[53]="3456789BCDEFG";//B~G:10~2
style cs[53],cstmp;
struct Card cardtmp;
int i=0,j=0,k=0;
char tmp;
//初始化
for(i=1;i<=3;i++)
for(j=0;j<13;j++)
*(card+i*13+j)=*(card+j);
for(i=0;i<4;i++)
for(j=0;j<13;j++)
*(cs+i*13+j)=(style)(i+3);
//洗牌
srand((unsigned)time(NULL));
for(i=0;i<sizeof(card);i++)
{
j=rand()%52; //0~51
tmp=*(card+j);
*(card+j)=*(card+51-j);
*(card+51-j)=tmp;
cstmp=*(cs+j);
*(cs+j)=*(cs+51-j);
*(cs+51-j)=cstmp;
}
//发牌
k=0;
for(i=0;i<13;i++)
{
for(j=0;j<4;j++)
{
Person[j][i].Style=*(cs+k);
Person[j][i].Value=*(card+k++);
}
}
for(i=0;i<4;i++)
{
for(j=0;j<13;j++)
cout<<(char)(Person[i][j].Style)<<Replace(Person[i][j].Value);
cout<<endl;
}
cout<<endl;
//排序:按花色、大小
for(i=0;i<4;i++)
for(j=0;j<13;j++)
for(k=j+1;k<13;k++)
{
if(Person[i][j].Style>Person[i][k].Style)
{
cardtmp.Style=Person[i][j].Style;
cardtmp.Value=Person[i][j].Value;
Person[i][j].Style=Person[i][k].Style;
Person[i][j].Value=Person[i][k].Value;
Person[i][k].Style=cardtmp.Style;
Person[i][k].Value=cardtmp.Value;
}
}
for(i=0;i<4;i++)
for(j=0;j<13;j++)
for(k=j+1;k<13;k++)
{
if(Person[i][j].Style==Person[i][k].Style &&Person[i][j].Value>Person[i][k].Value)
{
cardtmp.Value=Person[i][j].Value;
Person[i][j].Value=Person[i][k].Value;
Person[i][k].Value=cardtmp.Value;
}
}
for(i=0;i<4;i++)
{
for(j=0;j<13;j++)
cout<<(char)(Person[i][j].Style)<<Replace(Person[i][j].Value);
cout<<endl;
}
return 0;
}
const char* Replace(char ch)
{
const char* Find[]={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
if((ch>='3') &&(ch<='9'))
return Find[ch-'3'];
else if((ch>='B') &&(ch<='G'))
return Find[ch-'B'+7];
else
return NULL;
}
分享到:
相关推荐
【洗牌发牌模拟系统】是一个使用C语言实现的课程设计项目,旨在加深对C语言编程、结构化设计思想和小型系统开发的理解。系统的主要功能包括构建扑克牌、洗牌和发牌,同时具备图形化的结果显示。以下是这个系统的关键...
在本文中,我们将深入探讨如何使用Java编程语言来模拟扑克牌的洗牌和发牌过程。这个过程涉及到了数组、随机数生成、以及基本的算法设计。首先,我们需要理解扑克牌的基本规则和结构。 扑克牌通常包含52张牌,分为四...
在模拟过程中,我们需要先初始化HashMap,创建每张扑克牌,然后进行洗牌,将洗好的牌依次发给三个玩家,最后每个玩家可以看到自己的手牌。在这个过程中,还可以加入一些额外功能,比如查看公共牌、判断胡牌条件等。 ...
开发一个洗牌和发牌的模拟程序,是编写某纸牌游戏的基础
使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random()方法进行随机处理。 2)要求在dos控制台窗口中显示每个人手...
在编程领域,模拟洗牌和发牌是一种常见的算法问题,主要应用于各种游戏开发,比如扑克牌游戏。在这个C++程序中,我们将会讨论如何实现这一功能。首先,我们需要理解洗牌和发牌的基本概念。 **洗牌**是将一副扑克牌...
使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random()方法进行随机处理。 2)要求在dos控制台窗口中显示每个人...
此程序用C完成了对52张扑克牌的洗牌和发牌,程序内容比较简单易学
2)、洗牌:将Map集合的键放在List中,在使用Collections.shuffle()进行洗牌 3)、发牌:发给三个人,就是三个List加一个底牌的List 4)、看牌:将三人的List和底牌List的值进行排序(从大到小)
在本文中,我们将深入探讨如何使用Lua语言来模拟斗地主游戏中的洗牌、发牌、排序以及比较牌型大小的过程。Lua是一种轻量级的脚本语言,因其简洁的语法和强大的功能,在游戏开发中广泛应用,包括创建游戏逻辑。 首先...
在C#编程中,"洗牌发牌"通常是指创建一个模拟扑克牌游戏的过程,包括随机打乱一副扑克牌的顺序(洗牌)以及按照特定规则分发这些牌(发牌)。下面我们将深入探讨如何在C#中实现这一功能。 首先,我们需要定义扑克牌...
使用结构card 来描述一张牌,用随机方法来模拟人工洗牌的过程,最后将洗好的52张牌顺序分别发给四个人。 设计要求: 1)要求使用java类包中的Math.Random()方法进行随机处理。 2)要求在dos控制台窗口中显示每个人手...
该程序的主要功能是模拟扑克牌的洗牌过程,并展示洗牌后的结果。程序通过定义一个`Card`结构体来表示每一张牌,并通过一系列函数实现了创建一副完整的扑克牌、洗牌以及发牌的过程。 #### 技术要点 1. **结构体定义...
`Q3.py`中是一个简单的模拟洗牌发牌程序,请根据要求补全程序。
在C#编程中,设计一个扑克牌发牌与洗牌的程序是一项常见的练习,它涉及到数组操作、随机数生成以及面向对象编程等基础知识。在这个项目中,我们将探讨如何使用C#来实现这一功能。 首先,我们需要创建一个表示扑克牌...
模拟桥牌洗牌,分发牌至东南西北四家
发牌过程需要保证每个玩家得到相同数量的牌,并且不重复。这可以通过迭代洗好的牌列表,按玩家顺序分配牌来实现。 4. **输出显示**:程序最后会将发牌结果以用户可读的形式输出,可能是文字形式,比如"玩家1: 红桃3...
用上面的数组,生成一副扑克牌 5、遍历显示全副扑克牌 6、模拟给4个人随机发牌,每个人11张牌 7、显示每个人的牌和剩余的牌
#include "poke1.txt" #include "poke2.txt" int main() { char f;... printf("\n\n按ENTER键验证发牌结果"); f=getchar(); if(f!=27) inspection(c); system("pause"); return 0; }