C语言 模拟扑克牌新牌洗牌与发牌
题目:
都已经这样了,斗地主还会远吗
计导课群里大佬发了PPT,就忍不住点开看,看了就觉得很有道理,但是我们不能抄作业,于是我就尝试不用二维数组
改了一次,指针也不用了
很多东西还是不懂,比如写随机数不知道遇到重复的怎么办,看了大佬的PPT,第一次见到把循环倒回去,我直接惊为天人
正文:
主要的思路就是先把牌定义出来,定义大小,后面0给他+10就行,因为有这个♠啥的,花色就不用定义了
然后进行随机,把0~51这52个数字的顺序打乱,存入一个数组,之后我们用这52个数,一个数表示一张牌,具体方法类似于天干地支纪年法表示120个数一样
就这个按时间重选种子和随机数可以自行百度,我也不会哈哈哈哈哈
这是代码
#include<iostream>
#include<string>
#include<stdlib.h>
#include<time.h>
#include<windows.h>int main()
{char numb[13] = { 'A','2','3','4','5','6','7','8','9','0','J','Q','K'};int i, j,under;printf("这里有一副新扑克牌\n");//展示一下新扑克for (i = 0; i < 4; i++){for (under = 0; under < 13; under++){printf(" -- ");}printf("\n");for (j = 0; j < 13; j++){printf("|%c |", i + 3);}printf("\n");for (j = 0; j < 13; j++){if(numb[j]=='0')printf("|10|");elseprintf("| %c|", numb[j] );}printf("\n");for (under = 0; under < 13; under++){printf(" -- ");}printf("\n");}int k, p;//洗牌int step1[52] = { 0 };srand((unsigned)time(NULL));//按秒重新播种,不然随机数都取一样for (k = 0; k < 52; k++)//在step1里储存了0~51的不重复的随机数{i = rand() % 52;step1[k] = i;for (p = 0; p < k; p++){if (i == step1[p])//遇到有重复的,就把循环倒回去{k--;break;}}}int suit_fa, numb_fa;//发牌 ;int pl,m;printf("\n发牌\n");for (pl = 1; pl <= 4; pl++){printf("player%d:\n", pl);for (under = 0; under < 13; under++){printf(" -- ");}printf("\n");for (j = 13 * (pl - 1); j < 13 * pl; j++){suit_fa = (step1[j] + 1) % 4;//1~52对4取模会得到13组0~3numb_fa = (step1[j] + 1) % 13;//1~52对13取模会得到4组0~12printf("|%c |", suit_fa + 3);}printf("\n");for (j = 13 * (pl - 1); j < 13 * pl; j++){suit_fa = (step1[j] + 1) % 4;//1~52对4取模会得到13组0~3numb_fa = (step1[j] + 1) % 13;//1~52对13取模会得到4组0~12if (numb[numb_fa] == '0')printf("|10|");elseprintf("| %c|", numb[numb_fa]);}printf("\n");for (under = 0; under < 13; under++){printf(" -- ");}printf("\n");printf("\n");}return 0;
}
(用的是C++,因为老师在群里发的输出花色♥♦♠♣的方法是C++实现的)
然后为了把输出的样子搞得更像扑克,我已经快吐了
这是效果
最后,胡建伟牛逼
C语言 模拟扑克牌新牌洗牌与发牌相关推荐
- Java实验-02 模拟扑克牌游戏的洗牌
结合面向对象设计原则,分析和设计模拟扑克牌游戏的洗牌过程. 编程定义一个表示扑克牌的类 Poke,用 suit 来表示扑克牌的花色,用 face 来表示扑克牌的 牌面值,每副牌为 52 张,不考虑包含 ...
- 模拟扑克牌游戏的洗牌
大家都很喜欢玩扑克牌,那么如果面试官让你用计算机模拟一个扑克游戏的发牌或者洗牌,你会怎么做呢? 代码如下: #include<stdio.h> #include<stdlib.h&g ...
- JAVA控制台扑克牌游戏,洗牌,发牌,比较大小
此游戏是一个简单的并且很基础的java控制台程序.这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建好了后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家.有洗好的牌,也有玩家了,那么就开始 ...
- python tkinter出牌洗牌
python tkinter 出牌洗牌 利用Tkinter模块设计出扑克牌发牌窗体程序,要求4名牌手打牌,计算机随机将52张牌(不含大小王)发给4名牌手,在屏幕上显示每位牌手的牌.程序运行结果如图所示 ...
- python斗地主游戏源码_python实现斗地主分牌洗牌
本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...
- python联网斗地主_python实现斗地主分牌洗牌
本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...
- 斗地主分牌洗牌(python)
斗地主分牌洗牌(python) 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序列从有序的排列变成随机的无序排列. 3.编写一段代码完成 ...
- 【2019.7.16 NOIP模拟赛 T1】洗牌(shuffle)(找环)
找环 考虑每次洗牌其实是一次置换的过程,而这样必然就会有循环出现. 因此我们直接通过枚举找出每一个循环,询问时只要找到环上对应的位置就可以了. 貌似比我比赛时被卡成\(30\)分的倍增简单多了? 代码 ...
- 洗牌算法java 剑指_扑克牌的完美洗牌算法
思路: 递归思想.我们有n张牌,不妨先假设有一个洗牌函数shuffle(....),能完美的洗出n-1张牌 .拿第n张牌来打乱前面n-1的洗牌顺序,从而得到n张牌的最终结果. 代码如下: #inclu ...
最新文章
- pg数据库json数据类型_PG数据类型
- hbuilderX的upx单位是什么鬼?
- 向量时钟同步算法_如何让超级下载算法在不同CortexM内核下也能跑?
- sql 取表的前10条记录,任意中间几行的记录
- python停止线程池_详解python中Threadpool线程池任务终止示例代码
- [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
- GeoServer自动发布地图服务
- IDEA中一个工程多个模块(module)分别提交到不同的git服务器
- 案例:实现用户注册功能
- MySQL 数据库双向同步复制
- Android自定义弹窗页面,Android编程实现的自定义弹窗(PopupWindow)功能示例
- 算法64-荷兰国旗问题
- android studio连接本地SqlServer数据库报网络错误
- SCI投稿如何选择目标期刊
- 有道云笔记同步出错后,如何排查原因
- 动手学:深度学习Task2
- Typhon之异常错误克星TLSException
- web服务器种类汇集
- 查询数据库中表名的SQL语句
- 快速学习-处理响应数据
热门文章
- 个人简历应聘优势怎么写? 个人优势让你的简历模板加分
- java安装教程(解决官网下载的安装包为什么没有jre?)
- 性能提升30倍丨基于 DolphinDB 的 mytt 指标库实现
- 【调剂】上海航天802所2023年研究生调剂开始啦!
- 解决 ImportError: cannot import name ‘_C‘ from ‘detectron2‘
- python分隔符怎么用_如何使用不同分隔符切分字符串
- Android的语言设置(二)
- biopython:1:biopython的安装
- binlog redo log undo log
- 知识付费直播使用https方法