题目:

都已经这样了,斗地主还会远吗

计导课群里大佬发了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语言 模拟扑克牌新牌洗牌与发牌相关推荐

  1. Java实验-02 模拟扑克牌游戏的洗牌

    结合面向对象设计原则,分析和设计模拟扑克牌游戏的洗牌过程. 编程定义一个表示扑克牌的类 Poke,用 suit 来表示扑克牌的花色,用 face 来表示扑克牌的 牌面值,每副牌为 52 张,不考虑包含 ...

  2. 模拟扑克牌游戏的洗牌

    大家都很喜欢玩扑克牌,那么如果面试官让你用计算机模拟一个扑克游戏的发牌或者洗牌,你会怎么做呢? 代码如下: #include<stdio.h> #include<stdlib.h&g ...

  3. JAVA控制台扑克牌游戏,洗牌,发牌,比较大小

    此游戏是一个简单的并且很基础的java控制台程序.这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建好了后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家.有洗好的牌,也有玩家了,那么就开始 ...

  4. python tkinter出牌洗牌

    python tkinter 出牌洗牌 利用Tkinter模块设计出扑克牌发牌窗体程序,要求4名牌手打牌,计算机随机将52张牌(不含大小王)发给4名牌手,在屏幕上显示每位牌手的牌.程序运行结果如图所示 ...

  5. python斗地主游戏源码_python实现斗地主分牌洗牌

    本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...

  6. python联网斗地主_python实现斗地主分牌洗牌

    本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...

  7. 斗地主分牌洗牌(python)

    斗地主分牌洗牌(python) 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序列从有序的排列变成随机的无序排列. 3.编写一段代码完成 ...

  8. 【2019.7.16 NOIP模拟赛 T1】洗牌(shuffle)(找环)

    找环 考虑每次洗牌其实是一次置换的过程,而这样必然就会有循环出现. 因此我们直接通过枚举找出每一个循环,询问时只要找到环上对应的位置就可以了. 貌似比我比赛时被卡成\(30\)分的倍增简单多了? 代码 ...

  9. 洗牌算法java 剑指_扑克牌的完美洗牌算法

    思路: 递归思想.我们有n张牌,不妨先假设有一个洗牌函数shuffle(....),能完美的洗出n-1张牌 .拿第n张牌来打乱前面n-1的洗牌顺序,从而得到n张牌的最终结果. 代码如下: #inclu ...

最新文章

  1. pg数据库json数据类型_PG数据类型
  2. hbuilderX的upx单位是什么鬼?
  3. 向量时钟同步算法_如何让超级下载算法在不同CortexM内核下也能跑?
  4. sql 取表的前10条记录,任意中间几行的记录
  5. python停止线程池_详解python中Threadpool线程池任务终止示例代码
  6. [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地
  7. GeoServer自动发布地图服务
  8. IDEA中一个工程多个模块(module)分别提交到不同的git服务器
  9. 案例:实现用户注册功能
  10. MySQL 数据库双向同步复制
  11. Android自定义弹窗页面,Android编程实现的自定义弹窗(PopupWindow)功能示例
  12. 算法64-荷兰国旗问题
  13. android studio连接本地SqlServer数据库报网络错误
  14. SCI投稿如何选择目标期刊
  15. 有道云笔记同步出错后,如何排查原因
  16. 动手学:深度学习Task2
  17. Typhon之异常错误克星TLSException
  18. web服务器种类汇集
  19. 查询数据库中表名的SQL语句
  20. 快速学习-处理响应数据

热门文章

  1. 个人简历应聘优势怎么写? 个人优势让你的简历模板加分
  2. java安装教程(解决官网下载的安装包为什么没有jre?)
  3. 性能提升30倍丨基于 DolphinDB 的 mytt 指标库实现
  4. 【调剂】上海航天802所2023年研究生调剂开始啦!
  5. 解决 ImportError: cannot import name ‘_C‘ from ‘detectron2‘
  6. python分隔符怎么用_如何使用不同分隔符切分字符串
  7. Android的语言设置(二)
  8. biopython:1:biopython的安装
  9. binlog redo log undo log
  10. 知识付费直播使用https方法