[cocos2dx]斗地主制作之"排序”算法

简介: 制作斗地主的时候,发完牌还有一个牌的排序是要考虑的问题之一,这里的排序并不是一般的简单的冒泡排序,我的思想是将牌排成0-51,以13作为一个基准分类,例如0-12分别对应的是红桃A-K,13-25对应的是黑桃A-K,26-38对应的是方块A-K,39-51是梅花A-K。

制作斗地主的时候,发完牌还有一个牌的排序是要考虑的问题之一,这里的排序并不是一般的简单的冒泡排序,我的思想是将牌排成0-51,以13作为一个基准分类,例如0-12分别对应的是红桃A-K,13-25对应的是黑桃A-K,26-38对应的是方块A-K,39-51是梅花A-K。然后服务器将分给每个玩家的17个数转化成牌的数组进行排序,下面给出算法,这里感谢@灰太龙的指点!

Code:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 随机排序
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array = { 1, 2, 6, 33, 44, 23, 36, 5, 9, 14,0,14,15 };
            //洗牌从大到小
            //int[] array = { 1, 2, 3, 4, 5, 6,0 };
            BubbleSortFunction(array);
            foreach (int i in array)
            {
                Console.Write(i + ",");
            }
        }

        //冒泡排序(从数组的起始位置开始遍历,以大数为基准:大的数向下沉一位)
        private static void BubbleSortFunction(int[] array)
        {
            int length = array.Length;
            int temp;
            bool hasExchangeAction; //记录此次大循环中相邻的两个数是否发生过互换(如果没有互换,则数组已经是有序的)

            for (int i = 0; i < length - 1; i++)    //数组有N个数,那么用N-1次大循环就可以排完
            {
                hasExchangeAction = false;  //每次大循环都假设数组有序

                for (int j = 0; j < length - i - 1; j++)    //从数组下标0处开始遍历,(length - i - 1 是刨除已经排好的大数)
                {
                    int p1 = array[j] % 13;
                    int p2 = array[j + 1] % 13;
                    if (p1 == 0) p1 = 14;
                    if (p2 == 0) p2 = 14;
                    if (p1 == 1) p1 = 15;
                    if (p2 == 1) p2 = 15;
                    if (array[j] == 52) p1 = 16;
                    if (array[j + 1] == 52) p2 = 16;
                    if (array[j] == 53) p1 = 17;
                    if (array[j + 1] == 53) p2 = 17;
                    if (p1 < p2)    //相邻两个数进行比较,如果前面的数大于后面的数,则将这相邻的两个数进行互换
                    {
                        temp = array[j];
                        array[j] = array[j + 1];
                        array[j + 1] = temp;
                        hasExchangeAction = true;   //发生过互换
                    }
                }
                if (!hasExchangeAction) //如果没有发生过互换,则数组已经是有序的了,跳出循环
                {
                    break;
                }
            }
        }
    }
}

结果:



说明:按照我上面所说的规则,会发现其实转化成牌其实是从大到小排序的,最左边是红桃2,然后是黑桃2,然后是红桃A,这样依次类推!

相关文章
|
3月前
|
算法 C# 图形学
|
4月前
|
存储 JSON 关系型数据库
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结,附带项目源码)
【制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》,制作属于自己的植物大战僵尸随机版和杂交版13(完结,附带项目源码)
61 0
|
4月前
|
图形学
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏5(附项目源码)(下)
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏5(附项目源码)
43 0
|
4月前
|
图形学
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏5(附项目源码)(上)
【用unity实现100个游戏之17】从零开始制作一个类幸存者肉鸽(Roguelike)游戏5(附项目源码)
36 0
|
存储 Java
Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能(下)
文章目录 1 开发环境及游戏展示 1.1 游戏主界面 1.2 移动界面 1.3 奖励界面 1.4 F加速功能界面 1.5 死亡界面 2 需求分析 3 系统设计 3.1 系统总体功能设计 3.2 系统总体流程设计 4 功能设计 4.1 贪吃蛇移动及加速功能设计 4.2 贪吃蛇吃食物加速及死亡判定功能的设计 4.2.1 贪吃蛇吃食物加速功能的设计 4.2.2 贪吃蛇死亡判定功能的设计 4.3 贪吃蛇主动加速功能的设计 4.4 贪吃蛇奖励机制功能的设计 5 项目结构与项目实现 5.1 项目结构及类间关系 5.2 项目完整源码 5.2.1 Images类
|
Python
python小游戏——贪吃蛇游戏2.0版本の得分功能实现
python小游戏——贪吃蛇游戏2.0版本の得分功能实现
169 0
|
Java 开发工具
Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能(上)
文章目录 1 开发环境及游戏展示 1.1 游戏主界面 1.2 移动界面 1.3 奖励界面 1.4 F加速功能界面 1.5 死亡界面 2 需求分析 3 系统设计 3.1 系统总体功能设计 3.2 系统总体流程设计 4 功能设计 4.1 贪吃蛇移动及加速功能设计 4.2 贪吃蛇吃食物加速及死亡判定功能的设计 4.2.1 贪吃蛇吃食物加速功能的设计 4.2.2 贪吃蛇死亡判定功能的设计 4.3 贪吃蛇主动加速功能的设计 4.4 贪吃蛇奖励机制功能的设计 5 项目结构与项目实现 5.1 项目结构及类间关系 5.2 项目完整源码 5.2.1 Images类
Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能(上)
|
Java 图形学
Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能(中)
文章目录 1 开发环境及游戏展示 1.1 游戏主界面 1.2 移动界面 1.3 奖励界面 1.4 F加速功能界面 1.5 死亡界面 2 需求分析 3 系统设计 3.1 系统总体功能设计 3.2 系统总体流程设计 4 功能设计 4.1 贪吃蛇移动及加速功能设计 4.2 贪吃蛇吃食物加速及死亡判定功能的设计 4.2.1 贪吃蛇吃食物加速功能的设计 4.2.2 贪吃蛇死亡判定功能的设计 4.3 贪吃蛇主动加速功能的设计 4.4 贪吃蛇奖励机制功能的设计 5 项目结构与项目实现 5.1 项目结构及类间关系 5.2 项目完整源码 5.2.1 Images类
Java实现贪吃蛇大作战小游戏(完整教程+源码)额外实现积分和变速功能(中)
|
存储 数据可视化 小程序
Python 制作一副扑克牌,有趣的案例!
之前在 《流畅的 Python 》中看到一个例子比较有趣,所以整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去 大王、小王之后的 52 张扑克牌,并实现随机抽牌、排序、洗牌等功能;
Python 制作一副扑克牌,有趣的案例!
|
人工智能 图形学
Unity3D手机斗地主游戏开发实战(04)_出牌判断大小
之前我们实现了叫地主、玩家和电脑自动出牌主要功能,但是还有个问题,出牌的时候,没有有效性检查和比较牌力大小。比如说,出牌3,4,5,目前是可以出牌的,然后下家可以出任何牌如3,6,9。 问题1:出牌检查有效性,就是出牌类型判断,像单张、对子、顺子、炸弹等等类型; 问题2:上家出牌后,下家再出牌的时候,要判断当前牌力是否大于上家的牌力; 那本篇我们主要解决以上2个问题。
1080 0
下一篇
无影云桌面