洗牌与发牌模拟

news/2024/11/8 0:30:18/

【问题描述】 编程模拟洗牌和发牌过程。一副扑克有52张牌,分为4种花色(suit):黑桃(Spades)、红桃(Hearts)、草花(Clubs)、方块(Diamonds)。每种花色又有13张牌面(face):A,2,3,4,5,6,7,8,9,10,Jack,Queen,King。要求用结构体数组card表示52张牌,每张牌包括花色和牌面两个字符型数组类型的数据成员。

 模拟洗牌即为:将这52张牌随机打散;发牌过程即为:将打散后的52张牌输出到屏幕上。

【方法1】可以用随机函数生成一个1-52之间的随机数,然后模拟该牌已被选中,但是,请注意避免后续生成的随机数在之前已经生成过产生重复。

【方法2】可以用随机函数生成1-13数字之间的一个随机数,随机生成1-4之间的花色的一个随机数,然后组合为一张牌,并记录该牌已被选中。

【方法3】随机生成一个1-52之间的数字后,将该数字代表的牌和指定的某个数字的牌进行交换,连续生成52次随机数,连续交换52次。

#include<iostream>
#include<cstring>
#include<stdlib.h>
#include<time.h>
using namespace std;
struct card{char suit[10];char face[10];
};
int main(){srand(time(NULL));
struct card c[52];
char Suit[4][10]={"Spades","Hearts","Clubs","Diamonds"};
char Face[13][10]={"1","2","3","4","5","6","7","8","9","10","J","Q","K"};
for(int i=0;i<52;i++)
{strcpy(c[i].suit,Suit[i/13]);strcpy(c[i].face,Face[i%13]);} for(int i=0;i<52;i++){//	cout<<c[i].face<<" "<<c[i].suit<<endl;}int counter=0;//保存生成的数 struct card temp;//用于交换 for(int i=0;i<52;i++)//输出52次 {counter=rand()%(52-i); //在前面没有(52-i)个没有输出的选择一个输出 cout<<c[counter].face<<" "<<c[counter].suit<<endl;temp=c[51-i];c[51-i]=c[counter];//输出过的后边去 c[counter]=temp;}}


http://www.ppmy.cn/news/218905.html

相关文章

-翻纸牌-

本题是 2010 年北京市赛原题 五年级一班全体学生做一个游戏&#xff0c;有 nn 张纸牌,每张纸牌上分别标注着 11、22、33、44……nn个数字&#xff0c;初始时纸牌数字面朝上。全班同学先将 11 的倍数的纸牌翻过来&#xff0c;然后再将 22 的倍数的纸牌再翻过来&#xff0c;一直…

c++扑克翻牌游戏

这是我大一的c课设作业&#xff0c;代码是自己写的&#xff0c;如果需要用&#xff0c;请私信我。 问题描述 “记忆匹配”( memory matching game )是小孩子喜欢玩的一个益智游戏。首先准备好一墩牌&#xff0c;它由几个“对儿”组成。例如&#xff0c;假定一墩牌里有6张牌&am…

数字动态翻牌器

数字动态翻牌器 最近项目里使用到了数字翻牌器&#xff0c;于是自己写了一个&#xff0c;动态的翻牌器 第一步创建一个组件页面&#xff0c;NumberCount.vue 思路&#xff1a;大概就是显示几位数&#xff0c;然后从0开始滚动到当前的数值的位置&#xff0c;在每一个位置都有…

翻纸牌游戏

有一种纸牌游戏&#xff0c;很有意思&#xff0c;给你N张纸牌&#xff0c;一字排开&#xff0c;纸牌有正反两面&#xff0c;开始的纸牌可能是一种乱的状态&#xff08;有些朝正&#xff0c;有些朝反&#xff09;&#xff0c;现在你需要整理这些纸牌。但是麻烦的是&#xff0c;每…

翻牌游戏概率模拟

假如有9张扣着的牌&#xff0c;其中7张普通牌各自翻出猫的概率相同&#xff0c;比如5%能翻出来( 95%翻出来不是猫)&#xff0c;一 张简单牌&#xff0c;翻出来猫的概率是20%&#xff0c;一张困难牌&#xff0c;翻出来猫的概率是1%。我现在有三轮翻牌机会&#xff0c;每轮都可以…

Js 简单实现翻牌小游戏

1.简介 非常简单的一个网络消消乐翻牌小游戏的实现&#xff0c;代码量较少&#xff0c;不过遇到的bug和自行开发的步骤十分有纪念意义。 2.核心代码块 生成随机数列&#xff0c;确定图片随机分布 function getImgIndex(is){var index parseInt(Math.random()*8)1;if(is[in…

翻牌动画

效果如下(可兼容移动端)&#xff1a; css部分&#xff1a; <style type"text/css"> *, *:before, *:after { box-sizing: border-box; } html { font-size: 18px; line-height: 1.5; font-weight: 300; color: #333; font-family: "Nunito …

js 翻牌小游戏

js 翻牌小游戏 效果图 链接 PC端翻牌小游戏 需求分析 生成两组顺序随机的1-8数据卡片需要有翻转效果两次翻转数据不相等&#xff0c;回复原状两次翻转数据相等&#xff0c;卡片相等&#xff0c;不能再被点击当所有卡片不能被点击游戏结束限制最大点击次数50次 HTML结构 &…