遇到的问题:

  1.int和Integer的区别?

    1)Integer是int的包装类,int则是java的一种基本数据类型 。

    2)Integer变量必须实例化后才能使用,而int变量不需要 。

    3)Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 。

    4)Integer的默认值是null,int的默认值是0。

Cards.java:

import java.util.*;
public class Card{
public static void main(String[] args){
ArrayList<String> color = new ArrayList<String>();
ArrayList<String> num = new ArrayList<String>();
color.add("♠️");
color.add("♥️");
color.add("◇");
color.add("♣️");
for(int i=2; i<=10; i++){
//很神奇,可以把add()里面的数据变成字符串
num.add(i+ "");
}
num.add("J");
num.add("A");
num.add("K");
num.add("Q");//map是一副牌 54张
HashMap<Integer, String> map = new HashMap<Integer, String>();
int index = 0;
for (String thisColor: color){
for (String thisNum: num){
map.put(index++, thisColor + thisNum);
}
}
map.put(index++, "小王");
map.put(index++, "大王");
ArrayList<Integer> cards = new ArrayList();
//这里就是int
for(int i=0; i<54; i++){
cards.add(i);
}
//将cards顺序打乱
Collections.shuffle(cards);
//System.out.println(cards);
//System.out.println(map); //创建三个玩家
ArrayList<Integer> player1 = new ArrayList();
ArrayList<Integer> player2 = new ArrayList();
ArrayList<Integer> player3 = new ArrayList();
ArrayList<Integer> SecreatCards = new ArrayList();
for(int i=0; i<cards.size(); i++){
if(i>50){
SecreatCards.add(cards.get(i));
}else if(i%3 == 0){
player1.add(cards.get(i));
}else if(i%3 == 1){
player2.add(cards.get(i));
}else {
player3.add(cards.get(i));
}
}
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
ArrayList<String> sPlayer1 = new ArrayList<String>();
ArrayList<String> sPlayer2 = new ArrayList<String>();
ArrayList<String> sPlayer3 = new ArrayList<String>();
for(Integer key : player1){
//这里的key应该是object类,所以用Integer而不是int
sPlayer1.add(map.get(key));
}
for(Integer key : player2){
sPlayer2.add(map.get(key));
}
for(Integer key : player3){
sPlayer3.add(map.get(key));
}
System.out.println("player1:" + sPlayer1);
System.out.println("player2:" + sPlayer2);
System.out.println("player3:" + sPlayer3);
System.out.println("底牌:" + SecreatCards);
} }

还是蛮有意思的~

java——斗地主小游戏之洗牌发牌的更多相关文章

  1. 实现斗地主纸牌游戏---洗牌 发牌 看底牌的具体功能------Map集合存储方法 遍历的应用

    该Demo只是斗地主的游戏的一部分,实现的斗地主的组合牌  洗牌  发牌 看牌的功能,主要应用Map集合进行练习 package cn.lijun import java.util.ArrayList ...

  2. java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习

    package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...

  3. C++分享笔记:扑克牌的洗牌发牌游戏设计

    笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...

  4. Java太阳系小游戏分析和源代码

    Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...

  5. Java五子棋小游戏(控制台纯Ai算法)

    Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...

  6. Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

    规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java ...

  7. JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样

    zzzzZZZZ 1.開始还想贴图的 实在太懒了-- 这是一张麻将 package com.lovo; import java.awt.Graphics; import java.awt.Image; ...

  8. Java猜拳小游戏(剪刀、石头、布)

    1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...

  9. 从零开始学java(小游戏 石头剪刀布)

    Game.java package com.java;import java.util.Scanner;public class Game {        private Player player ...

随机推荐

  1. Java3D-对象基本变换

    一个球体与三个圆柱体形成一个组合体,在该组合体中,球体的透明度属性是由全透明到不透明之间变换,而且包括:旋转.平移等变换. package com.vfsd.test0621; import java ...

  2. ROS Learning-028 (提高篇-006 A Mobile Base-04) 控制移动平台 --- (Python编程)控制虚拟机器人的移动(不精确的制定目标位置)

    ROS 提高篇 之 A Mobile Base-04 - 控制移动平台 - (Python编程)控制虚拟机器人的移动(不精确的制定目标位置) 我使用的虚拟机软件:VMware Workstation ...

  3. R: 关于文件 文件夹的处理:file.show() dir.create().....

    文件管理主要函数: setwd( ):设定R软件当前工作目录.getwd( ):查看R软件当前工作目录.list.files( ): 查看当前目录下文件.file.show( ): 显示文件.file ...

  4. Entity Framework Code-First(23):Entity Framework Power Tools

    Entity Framework Power Tools: Entity Framework Power Tools (currently in beta 3) has been released. ...

  5. Java接口基础

    接口(interface) 1.接口体中包含常量的声明(没有变量)和抽象方法两部分.接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量访问权限一定是public,而且是static常量(允许 ...

  6. Spark 1.4.1中Beeline使用的gc overhead limit exceeded

    最近使用SparkSQL做数据的打平操作,就是把多个表的数据经过关联操作导入到一个表中,这样数据查询的过程中就不需要在多个表中查询了,在数据量大的情况下,这样大大提高了查询效率.   我启动了thri ...

  7. CF 432B :Football Kit

    hash做法: #include<stdio.h> #include<string.h> ; int home[Max],away[Max],hash[Max]; int ma ...

  8. 手把手教Android商业项目-即时通讯-i美聊

    [课程概况] 手把手教你从无到有的完整实现一个Android商业项目,是目前整个市场上所没有的课程,废话不多说,请往下看. [项目概况] 项目名称:i美聊 所属领域:移动社交 即时通讯   代码行数: ...

  9. 《Maven实战》笔记-6-maven测试

    一.基于Maven的测试 1.maven-surefire-plugin插件 该插件的test目标会自动执行测试源码路径(默认src/test/java)下符合以下命名模式的测试类: 以Test开头或 ...

  10. 使用metasploit进行栈溢出攻击-1

    攻击是在bt5下面进行,目标程序是在ubuntu虚拟机上运行. 首先,需要搞明白什么是栈溢出攻击,详细内容请阅读 http://blog.csdn.net/cnctloveyu/article/det ...