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 ...
随机推荐
- Python 网络爬虫 001 (科普) 网络爬虫简介
Python 网络爬虫 001 (科普) 网络爬虫简介 1. 网络爬虫是干什么的 我举几个生活中的例子: 例子一: 我平时会将 学到的知识 和 积累的经验 写成博客发送到CSDN博客网站上,那么对于我 ...
- bzoj2134 错选单位
传送门 题目 Input n很大,为了避免读入耗时太多, 输入文件只有5个整数参数n, A, B, C, a1, 由上交的程序产生数列a. 下面给出pascal/C/C++的读入语句和产生序列的语句( ...
- 把Spark SQL的metadata存储到mysql
1:安装配置mysql yum install mysql mysql-server service mysqld start mysqladmin -u root password newpass ...
- [坑]Linux MySQL环境表名默认区分大小写
不区分大小写设置 1.用ROOT登录,修改/etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 3.重新启动数据库即可 systemctl res ...
- raspberry pi 3 openjdk 性能低下解决方法
在使用nutch 是时候发现generate的性能很低,应该是openjdk的问题. orcale 实际已经提供了armhf的jdk,替换下性能就上去了 jdk下载链接:Download 配置方法和普 ...
- JDK Linux下安装
下载jdk-6u45-linux-x64.bin到/root目录下执行./jdk-6u45-linux-x64.bin 会在/root目录下生成 jdk1.6.0_45 文件 之后配置环境变量 编辑/ ...
- 文章推荐一个Java程序员跟大家谈谈从业心得
一个Java程序员跟大家谈谈从业心得 2017-10-21 java那些事 java那些事 java那些事 微信号 csh624366188 功能介绍 分享java开发中常用的技术,分享软件开发中各种 ...
- 洛谷P1973 [NOI2011]Noi嘉年华(决策单调性)
传送门 鉴于FlashHu大佬讲的这么好(而且我根本不会)我就不再讲一遍了->传送 //minamoto #include<iostream> #include<cstdio& ...
- 装饰器设计模式初探及Java中实际应用举例
本篇随笔主要介绍用Java实现简单的装饰器设计模式: 先来看一下装饰器设计模式的类图: 从图中可以看到,我们可以装饰Component接口的任何实现类,而这些实现类也包括了装饰器本身,装饰器本身也可 ...
- Generic detail view PostDetailView must be called with either an object pk or a slug.解决
Django 使用DetailView有这个问题,url,和模板统一调用模型时,用pk,而不是id 如果不是用DetailView,只是简单的视图,则用pk 或者id都可以. urls.py: url ...