zoukankan      html  css  js  c++  java
  • 随机发牌 代码

    // random.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <random>
    #include <time.h>  
    #include <list>
    #include <assert.h>
    #include <iostream>
    #include <vector>
    #include <functional>
    
    const int MAJIANG_GROUP_LENGTH = 84;
    const int POST_BLOCK_COUNT = 4;
    const int PLAYER_COUNT = 3;
    /*
    0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,//一到九筒
    0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,//一到九条
    0x30,//中
    0x40,//发
    0x50,//白
    */
    const std::vector<unsigned char> originMajiangGroup = {
    	0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
    	0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
    	0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,
    	0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,//筒
    	0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
    	0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
    	0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
    	0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,//条
    	0x30,0x30,0x30,0x30,//中
    	0x40,0x40,0x40,0x40,//发
    	0x50,0x50,0x50,0x50,//白
    };
    
    std::list<unsigned char> playerMajiangList[PLAYER_COUNT];
    
    
    void PostMajiangBlockToPlayerOnce(std::vector<unsigned char>& group,int posCount) {
    	for (int index = 0; index < PLAYER_COUNT; ++index) {
    		//一次向游戏玩家发送 PLAYER_COUNT 张牌
    		for (int i = 0; i < posCount; ++i) {
    			playerMajiangList[index].push_back(group.back());
    			group.pop_back();
    		}
    	}
    	
    }
    
    void PostMajiangBlock(std::vector<unsigned char>& group) {
    	
    	PostMajiangBlockToPlayerOnce(group, POST_BLOCK_COUNT);
    	PostMajiangBlockToPlayerOnce(group, POST_BLOCK_COUNT);
    	PostMajiangBlockToPlayerOnce(group, POST_BLOCK_COUNT);
    
    	PostMajiangBlockToPlayerOnce(group, 1);
    	
    }
    
    
    
    
    
    void InitFixMajiang(std::vector<unsigned char>& group)
    {
    	std::default_random_engine generator(time(NULL));
    	std::uniform_int_distribution<int> dis(0, group .size()-1);
    	auto dice = std::bind(dis, generator);
    	int index1,index2;
    	unsigned char tmp;
    	for (int i = 0; i<100; i++)
    	{
    		index1 = dice();
    		index2 = dice();
    		tmp = group[index1];
    		group[index1] = group[index2];
    		group[index2] = tmp;
    	}
    }
    
    
    
    int main()
    {
    	std::vector<unsigned char> currentMajiangGroup = originMajiangGroup;
    	for (size_t i = 0; i < currentMajiangGroup.size(); ++i) {
    		std::cout << std::hex <<  (unsigned int)currentMajiangGroup[i] << ' ';
    	}
    
    	//洗牌
    	InitFixMajiang(currentMajiangGroup);
    
    	std::cout << std::endl;
    	
    	for (size_t i = 0; i < currentMajiangGroup.size(); ++i) {
    		std::cout << std::hex << (unsigned int)currentMajiangGroup[i] << ' ';
    	}
    	PostMajiangBlock(currentMajiangGroup);
    
    	std::cout << std::endl;
    
    	for (int i = 0; i < PLAYER_COUNT; ++i) {
    		playerMajiangList[i].sort();
    		std::cout << "player" << i << " : ";
    		for (auto ele : playerMajiangList[i]) {
    			std::cout << std::hex << (unsigned int)ele << " ";
    		}
    		std::cout << std::endl;
    	}
    
    
        return 0;
    }
    

      

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    Practice2_vector_sort_struct
    a demo of vector of STL
    抽象漏洞原则
    不是抽象的漏洞,而是本质复杂性
    2017中国大学生程序设计竞赛
    2017中国大学生程序设计竞赛
    2017中国大学生程序设计竞赛
    2017中国大学生程序设计竞赛
    2017多校第8场 HDU 6134 Battlestation Operational 莫比乌斯反演
    2017多校第5场 HDU 6085 Rikka with Candies bitset
  • 原文地址:https://www.cnblogs.com/itdef/p/7364827.html
Copyright © 2011-2022 走看看