0 0

计算机发牌程序 5

计算机发牌程序
  要求A: 将52张牌均分给N个人(当除不尽时可以有人多1张)
  要求B: 将每个人的牌先按桃、杏、梅、方,再按大小排序。
  要求C: 算法效率高。
  要求D:合理使用开发语言提供的数据结构,面向对象编程。
这个题目怎么做?
2010年1月20日 13:51

4个答案 按时间排序 按投票排序

0 0

看看我的,文件较大,所以放在我的博客中。
http://xiaolongfeixiang.iteye.com/blog/575921

2010年1月20日 19:52
0 0

实现一个初步的

import java.util.*;

class Player
{
    private int[] card = new int[13];// 记录手上的牌
    private String[] cname = { "梅花", "方块", "红心", "黑桃" };

    /** 建构元,用来先把牌清乾净** */
    public Player()
    {
        int i;
        for (i = 0; i < 13; i = i + 1)
            card[i] = -1;
    }

    /** ** method 用来show出第几张牌 ***** */
    public String show(int id)
    {
        int A, B;
        if (card[id] == -1)
            return ("没有这张牌");
        else
        {
            A = card[id] % 4;
            B = card[id] / 4;
            B = B + 2;
            if (B == 14)
                return (cname[A] + "A");
            else if (B == 13)
                return (cname[A] + "K");
            else if (B == 12)
                return (cname[A] + "Q");
            else if (B == 11)
                return (cname[A] + "J");
            else
                return (cname[A] + "B");
        }
    } // SHOW

    /** ** method 用来发牌给本玩家 ***** */
    public void set_card(int id, int x)
    {
        if (id < 13 && x < 52)
            card[id] = x;
        else
            System.out.println("错误 id=" + id + " x=" + x);
    }
}

public class Card
{
    public static void main(String[] args)
    {
        int i, j, x;
        int[] dcard = new int[52];// 用来记录该位牌是否已被发出
        int num = 13; // 设定发13张牌
        int A, B;
        Random randomG = new Random();
        Player p1 = new Player();// 定义四家玩家
        Player p2 = new Player();
        Player p3 = new Player();
        Player p4 = new Player();

        // ---------------起始值设定------
        for (i = 0; i <= 51; i = i + 1)
            dcard[i] = 0;

        // -------------由电脑乱数发牌------
        for (j = 0; j < num; j = j + 1) // 发给一家
        {
            x = randomG.nextInt(52);
            while (dcard[x] != 0)
                x = randomG.nextInt(52);
            p1.set_card(j, x);
            dcard[x] = 1;
        }
        for (j = 0; j < num; j = j + 1) // 发给一家
        {
            x = randomG.nextInt(52);
            while (dcard[x] != 0)
                x = randomG.nextInt(52);
            p2.set_card(j, x);
            dcard[x] = 1;
        }
        for (j = 0; j < num; j = j + 1) // 发给一家
        {
            x = randomG.nextInt(52);
            while (dcard[x] != 0)
                x = randomG.nextInt(52);
            p3.set_card(j, x);
            dcard[x] = 1;
        }
        for (j = 0; j < num; j = j + 1) //发给一家 
        {
            x = randomG.nextInt(52);
            while (dcard[x] != 0)
                x = randomG.nextInt(52);
            p4.set_card(j, x);
            dcard[x] = 1;
        }
        //-----------显示到莹幕------- 
        System.out.println("第一家的牌如下:");
        for (j = 0; j < num; j = j + 1)
            System.out.print(p1.show(j) + " ");
        System.out.println("");
        System.out.println("第二家的牌如下:");
        for (j = 0; j < num; j = j + 1)
            System.out.print(p2.show(j) + " ");
        System.out.println("");
        System.out.println("第三家的牌如下:");
        for (j = 0; j < num; j = j + 1)
            System.out.print(p3.show(j) + " ");
        System.out.println("");
        System.out.println("第四家的牌如下:");
        for (j = 0; j < num; j = j + 1)
            System.out.print(p4.show(j) + " ");
        System.out.println("");

    }
}

2010年1月20日 14:57
0 0

http://ihavegotyou.iteye.com/blog/483606

2010年1月20日 14:32
0 0

定义一个数组 里面有派的类型和数字 如 桃 1
循环从数组中抽取一个组 然后从数组中删除这个组 并将这个组放到另一个已经定义的数足中 这样相当于洗牌
根据人数算出每个人手里的牌数
把数组均分到每个人手里

也就是说洗牌的时候就已经将牌发好了

2010年1月20日 14:00

相关推荐

    经典桥牌发牌程序(vc++ 2008)

    在这个经典桥牌发牌程序中,我们主要关注的是如何通过编程实现公正、随机的发牌过程。这个程序是用Microsoft Visual C++ 2008编写的,这是一款强大的C++集成开发环境,提供了丰富的库支持和调试工具。 首先,`...

    一个扑克牌游戏斗地主发牌程序

    ### 标题:“一个扑克牌游戏斗地主发牌程序” 该标题表明这是一个针对斗地主游戏发牌逻辑的程序设计案例。斗地主是一种流行的扑克牌游戏,在中国尤其受欢迎。其基本玩法包括三名玩家轮流叫分确定“地主”,然后进行...

    C语言编写的扑克牌发牌程序

    本项目是使用C语言实现的一个扑克牌发牌程序,它涉及到计算机科学中的几个关键概念,包括随机数生成、数组操作以及算法设计。 首先,让我们深入了解一下随机数在编程中的应用。在本程序中,随机数被用来模拟扑克牌...

    斗地主发牌程序

    根据给定的文件信息,我们可以总结出以下关于“斗地主发牌程序”的详细知识点: ### 1. 程序概述 这是一个用C++语言编写的斗地主发牌程序,旨在模拟斗地主游戏中的发牌过程。斗地主是一种流行于中国的扑克牌游戏,...

    java实现模拟发牌

    java实现模拟发牌算法,纯java代码 有注释

    CSharp斗地主随机发牌程序

    本文将详细解析使用C#语言实现的斗地主随机发牌程序的相关知识点。 首先,我们要理解斗地主游戏的基本规则。斗地主是一款三人对战的游戏,共使用一副54张牌(包括两张王),玩家分为地主和两个农民,地主要对抗两个...

    发牌程序_终极应用举例

    在IT领域,发牌程序是一种常见的模拟游戏或算法示例,尤其在开发扑克类游戏时。这个名为"发牌程序_终极应用举例"的压缩包很可能是包含了一个用于实现随机发牌功能的源代码示例。让我们深入探讨一下这个主题。 首先...

    随机发牌源程序 vc++6.0

    随机数在计算机科学中扮演着重要角色,尤其是在模拟真实世界随机事件时,如模拟扑克牌的发牌过程。在VC++6.0中,可以使用`&lt;cstdlib&gt;`库(在旧版本中可能是`&lt;stdlib.h&gt;`)来引入`rand()`函数,这是一个生成随机整数的...

    VB6编写的斗地主发牌程序,用于练习斗地主的各项技术

    《VB6实现斗地主发牌程序:技术详解与实践》 在计算机编程的世界中,游戏开发是一项富有挑战性和趣味性的任务。VB6(Visual Basic 6)作为经典的编程环境,因其简单易学的语法特性,常被用作教学和实践编程技能的...

    发牌游戏程序

    只是一个关于计算机洗牌发牌简单易懂的程序,C实现的,运行很好,仅供参考

    模拟洗牌与发牌程序用C++写的

    在编程领域,模拟洗牌和发牌是一种常见的算法问题,主要应用于各种游戏开发,比如扑克牌游戏。在这个C++程序中,我们将会讨论如何实现这一功能。首先,我们需要理解洗牌和发牌的基本概念。 **洗牌**是将一副扑克牌...

    C++扑克牌的洗牌发牌游戏设计 程序设计:扑克牌的洗牌发牌游戏 .zip

    这个程序设计任务涉及到许多关键的计算机科学概念,包括数据结构、算法、随机数生成以及面向对象编程。 首先,我们需要创建扑克牌的表示。在C++中,可以定义一个`Card`类来存储每张牌的信息,如花色(红桃、黑桃、...

    数据结构课程设计之随机发牌

    7. **用户交互**:在VC6.0下,可能利用控制台I/O(如`std::cin`和`std::cout`)进行用户输入和输出,让程序能够接收玩家数量等信息,并显示发牌结果。 8. **调试与测试**:在实际开发过程中,使用VC6.0的调试工具,...

    C语言自动发牌系统

    《C语言实现自动发牌系统详解》 C语言是一种经典的编程语言,因其高效、简洁而深受程序员喜爱。在本项目中,我们探讨的是一个用C语言编写的自动发牌系统,特别针对四人桥牌游戏。四人桥牌是桥牌的一种形式,需要四...

    随机发52张牌并排序

    在这个场景中,我们关注的是“随机发52张牌并排序”的问题,这涉及到计算机科学中的随机数生成、数组操作以及排序算法等基础知识。 首先,随机数生成是程序模拟现实世界事件的关键部分。在C语言中,可以使用标准...

    FAPAI.rar_发牌_斗地主

    编写发牌程序时,开发者通常会使用数组或集合来存储牌,并利用编程语言的随机数生成函数确保牌的分配是随机的。例如,可以使用Java的`Random`类或者Python的`random`模块来生成一个范围内的随机数,然后根据这个...

    纸牌程序,只有源代码,没有文档

    标题中的“纸牌程序”指的是一个计算机程序,它模拟了我们常见的纸牌游戏,可能是单人版的接龙或者其他的纸牌玩法。由于标题提到“只有源代码,没有文档”,这意味着这个程序没有配套的用户手册或开发文档,使用者...

    扑克牌洗牌程序

    标题中的“扑克牌洗牌程序”是指一个计算机程序,它模拟了实际扑克游戏中洗牌的过程。这个程序由C#编程语言编写,并在Visual Studio 2005(简称VS2005)集成开发环境中开发。C#是一种面向对象的编程语言,广泛应用于...

    C语言课程设计 扑克牌自动发牌

    扑克牌自动发牌系统的目标是利用计算机程序替代传统的人工洗牌和发牌过程,适用于桥牌游戏。系统需能处理一副52张的扑克牌,每种花色(黑桃S、红桃H、方块D、梅花C)有13张牌,按照规则平均分配给4个玩家,每个玩家...

    fp.rar_发牌_鍗囩骇_随机数

    在计算机游戏中,发牌程序是至关重要的部分,尤其是在卡牌或纸牌游戏中,如升级。发牌过程需要公平且不可预测,这通常通过使用随机数生成器(RNG)来实现。随机数生成器可以分为两大类:真随机数生成器(TRNG)和伪...

Global site tag (gtag.js) - Google Analytics