java——斗地主小游戏之洗牌发牌
遇到的问题:
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——斗地主小游戏之洗牌发牌的更多相关文章
- 实现斗地主纸牌游戏---洗牌 发牌 看底牌的具体功能------Map集合存储方法 遍历的应用
该Demo只是斗地主的游戏的一部分,实现的斗地主的组合牌 洗牌 发牌 看牌的功能,主要应用Map集合进行练习 package cn.lijun import java.util.ArrayList ...
- java斗地主扑克 扑克牌 洗牌 发牌 Collection 集合练习
package com.swift.poker; import java.util.ArrayList; import java.util.Collections; /*训练考核知识点:Collect ...
- C++分享笔记:扑克牌的洗牌发牌游戏设计
笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. ...
- Java太阳系小游戏分析和源代码
Java太阳系小游戏分析和源代码 -20150809 近期看了面向对象的一些知识.然后跟着老师的解说做了一个太阳系各行星绕太阳转的小游戏,来练习巩固一下近期学的知识: 用到知识点:类的继承.方法的重载 ...
- Java五子棋小游戏(控制台纯Ai算法)
Java五子棋小游戏(控制台纯Ai算法) 继续之前的那个五子棋程序 修复了一些已知的小Bug 这里是之前的五子棋程序 原文链接 修复了一些算法缺陷 本次增加了AI算法 可以人机对战 也可以Ai对Ai看 ...
- Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)
规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java ...
- JAVA程序设计(11)-----面对对象0基础设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样
zzzzZZZZ 1.開始还想贴图的 实在太懒了-- 这是一张麻将 package com.lovo; import java.awt.Graphics; import java.awt.Image; ...
- Java猜拳小游戏(剪刀、石头、布)
1.第一种实现方法,调用Random数据包,直接根据“1.2.3”输出“剪刀.石头.布”.主要用了9条输出判断语句. import java.util.Random; import java.util ...
- 从零开始学java(小游戏 石头剪刀布)
Game.java package com.java;import java.util.Scanner;public class Game { private Player player ...
随机推荐
- ROS Learning-005 beginner_Tutorials 创建ROS程序包(就是软件包)
ROS Indigo beginner_Tutorials-04 创建ROS程序包(就是软件包) 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu ...
- centos 6.5安装 redis
版本:redis-2.8.19.tar.gz 检查下面依赖是否安装,如果没有要先安装,不然会有异常. yum install gcc-c++ yum install -y tcl. .获取安装文件 r ...
- ZROI2018提高day1t2
传送门 分析 考场上看错了第一个条件,于是觉得是个简单贪心,随便取了每一个点的最大收益然后算了一下,就得了40pts...看来读对题很重要呀qwq.实际的正解是这样的:我们将每一个i与f[i]连一条边 ...
- Luogu 1484 种树
Luogu 1792 算是双倍经验. 我们考虑对于一个点,我们要么选它,要么选它周围的两个点. 所以我们考虑用一个堆来维护,每次从堆顶取出最大值之后我们把它的权值记为:它左边的权值加上它右边的权值减去 ...
- TinkerPop中的遍历:图的遍历中谓词、栅栏、范围和Lambda的说明
关于谓词的注意事项 P是Function<Object,Boolean>形式的谓词.也就是说,给定一些对象,返回true或false.所提供的谓词在下表中概述,并用于各种步骤,例如has( ...
- 《Head First Servlets & JSP》-2-概述
什么是容器 Servlet没有main()方法,他们受控于另一个Java应用,这个java应用称为容器(Container). Web服务器应用(如Apache)得到一个指向Servlet的请求(如何 ...
- 手动通知扫描SD卡主动生成缩略图
最近做项目遇到的难题,调用系统拍照获取不到缩略图,非得关机重启才会生成,所以我们要主动通知系统扫描SD卡生成缩略图, 在Android4.4之前也就是以发送一个Action为“Intent.ACTIO ...
- 【monkey测试】Fragment not attached to Activity
monkey测试跑出了一个异常: // CRASH: packgeName (pid) // Short Msg: java.lang.IllegalStateException // Long Ms ...
- 符合条件中用where 1=1影响效率以及having和where的区别
想当初我自己想出来用where 1=1的时候还高兴了一小会,毕竟把代码简化了许多.今天看到的书里面说会影响性能.摘要如下: 低效的“WHERE 1=1” 网上有不少人提出过类似的问题:“看到有人写了W ...
- UI控件相关宏定义
1.显示设置 1.1 view圆角和边框 /** 设置view圆角和边框 */ #define kViewBorderRadius(View, Radius, Width, Color)\ \ [Vi ...