遇到的问题:

  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. 解析IFC数据并存储到关系型数据库

    即系IFC数据并存储到关系型数据库中,目前解析的IFC文件是两亿多行,构件数量120万

  2. ZBar在Windows上的使用 -- ImageMagick and OpenCV

    博客转载自:https://blog.csdn.net/sunflower_boy/article/details/49095265 1. 下载ZBar v0.10 http://zbar.sourc ...

  3. 正割、余割、正弦、余弦、正切、余切之间的关系的公式 sec、csc与sin、cos、tan、cot之间的各种公式

    1.倒数关系 tanα ·cotα=1 sinα ·cscα=1 cosα ·secα=1 2.商数关系 tanα=sinα/cosα cotα=cosα/sinα 3.平方关系 sinα²+cosα ...

  4. JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-009Polymorphic collections(@OneToMany(mappedBy = "user")、@ManyToOne、)

    一.代码 1. package org.jpwh.model.inheritance.associations.onetomany; import org.jpwh.model.Constants; ...

  5. ENCODE:DNA 分子元件的百科全书

    ENCODE(DNA分子元件的百科全书)是由国家人类基因研究所(NHGRI)资助的一个国际研究联盟, 该联盟的目标是:建立一份综合的人类基因组功能元件的清单,这些基本元件包括那些直接作用蛋白质和RNA ...

  6. STM32 CAN控制器简介

    1.STM32自带了基本扩展CAN外设,又称bxCAN,bxCAN的特点如下: 2.模式:分为工作模式.测试模式.调试模式 睡眠模式主要用于降低功耗! 在静默模式下的工作原理 由图可知,它只会接受来自 ...

  7. 及时修改jira的状态

    领到一个task,然后,修改task状态为开发状态,并且,点击edit,选择,story points,预估自己这个task大概做几天. 做完task后,再修改task的状态

  8. setTimeout()和setInterval() 何时被调用执行(非多线程).RP

    定义 setTimeout()和setInterval()经常被用来处理延时和定时任务.setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔 ...

  9. html 连接数据库

    http://blog.csdn.net/haxker/article/details/4214001 http://www.cnblogs.com/chuncn/archive/2010/11/22 ...

  10. Html5代码片段收集

    HTML5 启动模板 当启动一个新的项目的时候,你需要一个启动模板.这里是一个简洁干净的模板,可以作为 HTML5 项目的基础. <!DOCTYPE html> <html> ...