简易版扑克牌程序

扑克牌游戏程序设计与测试 扑克牌游戏程序设计与测试 你好!此博客用于uestc学生计算机编程实验二:扑克牌游戏程序设计与测试参考! 实验目的 1.熟悉程序开发环境,熟悉程序的编辑、编译、连接和运行的过程。 2.掌握计算机综合程序设计过程,学习分析问题并将其用程序的方式进行转化。 3.学会综合运用编程语言中的各种知识完成程序设计。 4.掌握较复杂程序的编译调试。 5.掌握循环、函数调用、数组、指针等知识。 6.学习通过算法优化来降低程序运算量。 实验流程 1、编写函数newcard,利用随机数产生函数任意发出5张牌(不包括大王和小王) 阅读详情

大家好今天分享一道题,实现一个简易版的扑克牌程序:

题目:扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER输入两手牌,两手牌之间用"-“连接,每手牌的每张牌以空格分隔,”-"两边没有空格,如:4 4 4 4-joker JOKER。请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。

基本规则:
(1)输入每手牌可能是个子、对子、顺子(连续5张)、三个、炸弹(四个)和对王中的一种,不存在其他
情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;
(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对
子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子);
(3)大小规则跟大家平时了解的常见规则相同,个子、对子、三个比较牌面大小;顺子比较最小牌大小;炸
弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;
(4)输入的两手牌不会出现相等的情况

输入描述:
输入两手牌,两手牌之间用"-“连接,每手牌的每张牌以空格分隔,”-"两边没有空格,如 4 4 4 4-joker JOKER。

输出描述:
输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。

示例1:
输入
4 4 4 4-joker JOKER
输出
joker JOKER

实现代码如下:

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;

void big(string s)
{
	if(s.find("joker JOKER")!=-1)//发现大王小王则直接输出,因为最大的牌
	{         
		cout << "joker JOKER" << endl;
		return;
	}

	int mid = s.find('-');             //找到 - 直接来分割两副牌
	string s1 = s.substr(0, mid);      //左边的牌
	string s2 = s.substr(mid + 1);     //右边的牌

	int count1 = count(s1.begin(),s1.end(),' ');  //统计空格数
	int count2 = count(s2.begin(),s2.end(),' ');
	
	string compare("345678910JQKA2jokerJOKER");  //拿一个串实现存好所有的种类的单牌
	
	string first1 = s1.substr(0,s1.find(' '));   //取第一张牌,根据下标为0 的位置到第一个空格来取
	string first2 = s2.substr(0,s2.find(' '));
	if (count1 == count2)      //说明两副牌一样多,因为只能单牌和单排,对子和对子,顺子和顺子,比较第一张即可,就算是两个炸弹比较也是满足的。
	{  
		if (compare.find(first1) > compare.find(first2)){
			cout << s1 << endl;            //s1大输出s1
		}
		else
			cout << s2 << endl;           //否则s2
	}
	else
	{
		if (count1 == 3){   //三个空格说明有炸弹,因为牌间都是空格分开的
			cout << s1 << endl;
		}
		else if (count2 == 3)
			cout << s2 << endl;
		else
			cout <<"ERROR"<< endl;
	}
}

int main()
{
	string s;
	while(getline(cin, s)){
		big(s);
	}
	return 0;
}

这道题光看长度我想很多人都会比较害怕,包括我在内,虽然你打过扑克牌知道规则,但是真正实现起来的话你会感觉情况很多,然后脑子就会比较乱,首先你需要处理好 - 问题和两副牌的分割问题,这道题如果用到c++string类的内置函数时这道题就会变得简单,比如find(),当在一个串里查找另一个子串是否存在,存在的话则返回查找到的第一个位置,否则返回-1(当然find的使用情况不止这一种),我这道题就是因为对find的返回值不清楚,然后被自己卡了很久,上面的if判断语句我最开始写的是if(s.find(“joker JOKER”)){ },这就是有问题的因为只要没找到的话都会进这个if判断语句,所以导致我纠结了很久为什么一直结果都是输出joker JOKER,以及要用到substr()就是在一个串里取出一个指定子串,以及用一个串事先存好所有种类的单牌。代码的具体讲解我上面都有详细的注释。

如果你在写c++程序时对某个函数的使用记得不清楚的话就通过
http://www.cplusplus.com/reference/ 来查看使用,里面都讲的很详细。

C++扑克牌 题目要求: 1、声明一个扑克牌类,拥有方法:传入花色和点数生成扑克牌、打印扑克牌。 2、声明一个玩家类,每人拥有18张扑克牌。拥有方法:增加手牌(摸牌)、展示手牌,其中展示手牌要求降序排序展示。 完成程序: 1、随机生成18张扑克牌,当做一个玩家的手牌。 2、用54张不同的扑克牌构成牌堆,发给3个玩家。 #include <iostream> #include<cstd... 阅读详情

相关推荐

python 设计单张扑克牌类Card 设计整副扑克牌类Cards

需求如下: 编写程序,设计单张扑克牌类Card,具有花色,牌面与具体值。 同时设计整副扑克牌类Cards,具有52张牌。 红桃、黑桃、方片、草花 2345678910JQKA ♥♠♦♣ 设计一个发牌的函数,可以任意发出三张牌。 对任意三张牌断定牌的类型。 类型包括: 三条:三张牌value一样 一对:两张value一样 顺子:三张牌挨着 同花:三张牌type一样 同花顺:挨着,类型一样 其余都是...

嘎嘎_哈 3456

扑克牌程序

Java实现 扑克牌程序 1. 创建一幅牌 1.1 新建一个 Card 类 Card.java package Java_0131; //一张扑克牌 public class Card { //花色 public String suit; //点数 使用 String 更合理 JQKA public String rank; // 这里 alt + insert 可以直接构建方法。 public Card(String suit, String rank

graceyun的博客 1856

Java实验(15)扑克牌

编程实现程序每次启动后,在界面上随机显示54张扑克牌中的4张,并在其下方显示花色名(如图)。   扑克牌图片已打包到cards.jar文件中,命名规则见下图。 import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; import java.io.*;

黄瓜菜生长的土地 3174

java编写扑克牌程序

首先生成一副扑克牌(这里不包含大小王,自己练习的时候可以加上),然后根据用户输入的玩家人数和发给每名玩家的牌数进行发牌。 提示:可以使用shuffle()实现“洗牌”操作。 package test; import java.util.*; import static java.util.Collection.*; public class test3 { public static void main(String[] args) { System.out.printl

qq_61598689的博客 2174

头歌 操作系统 课堂练习2.1:外部中断 第2关:第一次时钟中断

将答案0x796c输入到workspace/mushixun/恢复点的地址.txt中的括号里即可,随后使用kill命令防止对第三关的环境造成影响。

Yinfrey的博客 6086

Unity面试题总结

Unity面试题

sinat_34014668的博客 1万+

扑克牌牌面小程序

本周分享一个扑克牌牌面小程序如下: package com.softeem.lmg.one2.work1; import java.util.Objects; /**首先是牌面类 * 5、参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色;三名玩家,其中地主比其他玩家多3张牌) * @author admin */ public class Card { /**牌面值*/ private String name; /**花色*/ private String flower;

weixin_51994508的博客 2881

Python爬虫实战:美团外卖商家数据抓取与分析

随着互联网技术的快速发展,外卖平台已成为人们日常生活中不可或缺的一部分。本文基于Python爬虫技术,使用最新的异步爬虫框架和反爬虫绕过技术,实现了对美团外卖平台商家信息与评分数据的自动化抓取。通过对抓取数据的清洗、存储和分析,为餐饮行业市场研究和商业决策提供数据支持。本文详细介绍了爬虫的设计思路、技术实现方案、数据处理方法以及可视化分析结果,为相关领域的研究者和开发者提供参考。关键词:Python爬虫;美团外卖;数据抓取;数据分析;异步爬虫。

2201_76125261的博客 1822

Java实现扑克牌游戏(简易炸金花)

在游戏开始之前要创建扑克牌,其中扑克牌要具有花色和数字,而且要记住除了大小王以外,扑克牌工有四种花色,52张牌。要重写toString方法!在玩之前,要将买来的牌用Random函数进行重新打乱,以便于每个人手中的牌大小不一样。要先将52张扑克牌创建出来,并添加到集合中,以便于后续操作。每个人要进行抓牌,设置每个人手中抓五张牌,三个人进行游戏。

xyk:的博客 4495

复现论文《Analysis of circulating current mechanism of Grid-forming offshore wind farm based on DRU-HVDC》

该论文研究了基于二极管整流单元(DRU)和低频交流(LFAC)输电的构网型(GFM)海上风电场并网系统中环流的产生机理。由于 DRU 不可控,系统电压与频率依赖于风力发电机(WT)的网侧变流器,当多台 WT 并联运行时,因输出电压幅值、相位、输出阻抗或频率不匹配,会产生基频环流,导致系统损耗增加与稳定性下降。论文通过理论建模与 MATLAB/Simulink 仿真,分析了四种不平衡工况下的环流机理,并指出幅值不平衡和阻抗不平衡引起无功环流,相位不平衡引起有功环流,频率不平衡则引起环流振荡,为后续环流抑制研究

huanghm88的专栏 104

Panda3d 场景管理

许多简单的 3D 引擎维护一个 3D 模型列表,然后在每一帧对这些模型进行渲染。在这些简单的引擎中,必须分配一个3D模型(或从磁盘加载它),然后将其插入到要渲染的模型列表中。模型在插入到列表中之前对渲染器不“可见”。 Panda3D稍微复杂一些。它不是维护要呈现的对象列表,而是维护要呈现的对象树。对象在插入树之前对渲染器不可见。

u014077947的博客 1383

C++ 扑克牌

完成一副扑克牌的创建、洗牌和发牌。

Sun Tech的博客 4092

GEE APP:时间序列影像批处理工具:按月筛选与智能导出解决方案出工具

本文介绍了一个基于Google Earth Engine(GEE)开发的智能时序影像处理工具,可高效处理遥感影像时间序列数据。该工具采用三栏式交互布局,包含控制面板、地图显示和缩略图预览区域。核心功能包括:1)灵活的时间筛选机制,支持年度范围选择和月份批量选择;2)智能影像筛选算法,基于云量、空间覆盖等条件自动选择最佳影像;3)交互式缩略图预览,支持点击加载完整影像;4)自动化批量导出系统,实现标准化命名和统一存储。工具可广泛应用于农业监测、城市扩张研究、生态环境评估等领域,显著提高遥感数据预处理效率,确保

此星光明博客 113

C语言实现洗牌发牌程序,用C语言实现的扑克牌洗牌程序

一副牌:54张从0开始排序:0-12表示黑桃 A 1,2,3,... 10,J,Q,K13-25表示红桃 A 1,2,3,... 10,J,Q,K26-38表示草花 A 1,2,3,... 10,J,Q,K39-51表示方块 A 1,2,3,... 10,J,Q,K52,53表示大小王#include void shuffle(char *porker){/*将存放数组初始化为1-54*/fo...

weixin_42470300的博客 4127

SAP Fiori 从技术上而言到底包含哪些组件?

SAP Fiori是企业级UX设计的系统化解决方案,基于五大原则构建:角色导向(Role-based)、自适应(Adaptive)、简洁(Simple)、一致(Coherent)和愉悦(Delightful)。其技术实现包含SAPUI5开发框架、Fiori Launchpad统一入口、OData服务网关等核心组件,通过标准化设计模式与开发工具链,显著提升企业应用的用户体验和开发效率。典型案例显示,遵循Fiori原则可缩短30%以上的操作时长,降低50%的培训成本。该体系既保持跨设备一致性,又支持业务场景的深

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 223

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

发扑克牌java程序_Java实现简易扑克牌游戏

功能描述1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。2、创建两个玩家。包括玩家id、姓名、手牌等集合,手牌为扑克牌的集合。3、洗牌。将创建好的扑克牌打乱。4、发牌。将洗牌之后的扑克牌集合,从第一张开始,发给两个玩家,安装一人 一张的方式,每人发两张。5、游戏。比较两名玩家手中的扑克牌。规则为:去两名玩家手上点数最大的牌进行比较,点数大的...

weixin_30269739的博客 1374

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java实现简易扑克牌游戏

Java实现简易扑克牌游戏——black的专栏——washaxiu

black的专栏 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python-扑克牌

‘’’ 编写程序,设计单张扑克牌类Card,具有花色,牌面与具体值。 同时设计整副扑克牌类Cards,具有52张牌。 红桃、黑桃、方片、草花 2345678910JQKA ♥♠♦♣ 设计一个发牌的函数,可以任意发出三张牌。 对任意三张牌断定牌的类型。 类型包括: 三条:三张牌value一样 一对:两张value一样 顺子:三张牌挨着 同花:三张牌type一样 同花顺:挨着,类型一样 其余都是散牌...

Chujianlong321的博客 3201

扑克牌生成与洗牌程序

使用JAVA编写以下程序: 1、请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit;分别描述一张牌的牌面值(如:A、K、Q、J、10、9、……3、2等)和花色(如:“黑桃”、“红桃”、“梅花”、“方块”);定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值;

weishaofei的专栏 6179

用java制作扑克牌_Java程序设计之扑克牌

这段代码的主要实现功能扑克牌的洗牌和发牌功能,一副牌,红桃,黑桃,梅花,方片,A~K,不含大小王。构造一个class。首先是声明花色:private String[] sign={"方片","红桃","黑桃","梅花"};//扑克的四种花色然后是洗牌功能,意味花色与A~K结合构造成顺序的52张扑克牌,构造一个ArrayList对象存储扑克牌的值。private static ArrayList L...

weixin_29549793的博客 1705

python分发扑克牌_python实现扑克牌交互式界面发牌程序

本文实例为大家分享了python实现扑克牌交互式界面发牌程序的具体代码,供大家参考,具体内容如下注:图片自行在网上下载、替换即可#coding=utf-8class Card(): #扑克牌类points=['1','2','3','4','5','6','7','8','9','10','11','12','13']suits=['1','2','3','4'] #花色def __init__(...

weixin_39600328的博客 295

神级程序员教你c++实现扑克牌游戏!亲测可用

这篇文章主要为大家详细介绍了C++扑克牌的洗牌发牌游戏设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 小编在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏。具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌。然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等。 下面是c/c++资料,加小编C/C++编程学习群:825414254获取! 小编在学...

7288

Python扑克牌程序

self.is_face_up=face_up #是否显示牌正面,true为正面,false为反面。self.rank=rank #指的是牌面数字1-13。self.suit=suit #suit指的是花色。print("牌手",n,end=":\n")SUITS=['梅','方','红','黑']#c.发牌,发给玩家,每人默认13张。#b.重写print()方法。#b.重写print()方法。#c.清空牌手手里的牌。#d.增加牌手手里的牌。

m0_73590120的博客 1350

扑克牌游戏程序——人机对抗

编写扑克牌游戏程序,初步设定玩家是人机对抗,每人各抓12张牌,游戏规则是每次只能出一张牌,投骰子决定谁先出牌。点数大的管住点数小的。如果管不住对方时就不出牌,让对方出牌。先出完牌的一方为赢。权值大小规定如下(从大到小):13,12,11,10,9,8,7,6,5,4,3,2,1。花色:方片,红桃,黑桃,梅花。 总体流程图如下: 轮流出牌流程图如下: 全局变量如下: jk=[] #一副扑克牌 cp=[] #计算机手中的牌 ps=[] #人手中的牌 d...

m0_62205773的博客 4567

《C语言及程序设计》实践参考——一副扑克牌

返回:贺老师课程教学链接   项目要求【项目4- 一副扑克牌】下面的程序,输出了52张扑克牌(如图),请补充完整程序。#include int main( ) { char c[4]= {'H','S','D','C'}; int v[13]= {1,2,3,4,5,6,7,8,9,10,11,12,13}; int i,j; for(i=0; i<4; i++)

迂者-贺利坚的专栏 5740
上一篇: C++ 模板
下一篇: dp(动态规划)之最长公共子序列
Python_programer
博客等级 码龄9年 25粉丝 57原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值