//卡牌类
public class Card {
//定义卡牌的点数
public static final String[] cardName = { "3", "4", "5", "6", "7", "8",
"9", "10", "J", "Q", "K", "A", "2" };
//定义卡牌的花色
public static final String[] flowerColor = { "♠", "♥", "♣", "♦" }; private int number;// 表示卡牌点数的下标 0-12; private int color;
public Card(int number, int color) {
this.number = number;
this.color = color;
} public int getNumber() {
return number;
} public int getColor() {
return color;
} // 显示牌的内容
public String getCard() {
return flowerColor[color] + cardName[number];
}
}

import java.util.Random;
//游戏类
public class Game {
//定义牌的张数
private Card[] cards = new Card[52]; public Game() {
// 1. 创建牌
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 13; j++) {
cards[i * 13 + j] = new Card(j, i);
}
}
}
//显示卡牌
public void showCards() {
for (int i = 0; i < cards.length; i++) {
System.out.print(cards[i].getCard() + " "
+ (i % 13 == 12 ? "\n" : ","));
}
} public Card[][] deal() {
Card[][] cardss = new Card[4][13];
for (int i = 0; i < 52; i++) {
// 二维数组使用一维角标
cardss[i / 13][i % 13] = cards[i];
}
return cardss;
} public void shuffle() {
// List<Card> list = Arrays.asList(cards);
// Collections.shuffle(list);
// list.toArray(cards);
// for (int i = 0; i < cards.length; i++) {
// System.out.print(cards[i].getCard() + " "
// + (i % 13 == 12 ? "\n" : ","));
// }
//2.排序 随机两两交换。
Random random = new Random();
for (int i = 0; i < cards.length; i++) {
int index = random.nextInt(52);
if (i != index) {
Card temp = cards[i];
cards[i] = cards[index];
cards[index] = temp;
}
} }
}
import java.util.Arrays;
import java.util.Comparator;
//玩家类
public class Player { private Card[] cards = new Card[13];
private String name; public Player(String name, Card[] cards) {
this.name = name;
this.cards = cards;
} public void showCard() {
System.out.print("玩家" + name + ":");
for (int i = 0; i < cards.length; i++) {
System.out.print(cards[i].getCard() + ",");
}
} // 排序
public void sort() {
Arrays.sort(cards, new Comparator<Card>() { @Override
public int compare(Card o1, Card o2) {
return o1.getNumber() - o2.getNumber();
}
});
} }
public class Work {

    public static void main(String[] args) {
// 1. 定义纸牌类 分别为A 2-10 J Q K 花色为♠♥♦♣ 大王小王
// 定义游戏类,其中有一副扑克,共52张牌 随机洗牌
// 定义玩家类,每个玩家可以发到13张牌。创建4个玩家对象,打印他们手中的牌
Game game = new Game();
game.showCards();
game.shuffle();
System.out.println();
game.showCards();
Card[][] cardss = game.deal(); Player[] players = new Player[4]; for (int i = 0; i < 4; i++) {
players[i] = new Player("玩家" + i, cardss[i]);
players[i].sort();
}
for (int i = 0; i < players.length; i++) {
players[i].showCard();
System.out.println();
}
}
}

--石头剪刀布,三局两胜制

//玩家类
public class Player { private String name; public Player(String name) {
this.name = name;
} public static final int BU = 1; public static final int QUAN = 2; public static final int JIANDAO = 3; //随机出剪刀石头布
public int chuQuan() {
return (int) (Math.random() * 2 + 1);
} public String getName() {
return name;
}
}
//裁判类
public class Referee { // 记录胜负
private String[] win = new String[3];
private int number = 0; // 裁判胜负
public boolean judge(Player a, Player b) {
int comeA = a.chuQuan();
int comeB = b.chuQuan();
int result = isWin(comeA, comeB);
switch (result) {
case 0:
System.out.println("平手");
break;
case 1:
// alt+shift+m
showWin(a);
break;
case -1:
showWin(b);
break;
} // 结束
if (number == 3)
return true;
else if (number == 2 && win[0].equals(win[1]))
return true;
else
return false;
} private void showWin(Player a) {
System.out.println(a.getName() + "获胜");
win[number] = a.getName();
number++;
} // 0 平手
// 1 comeA 胜利
// -1 comeA 失败
private int isWin(int comeA, int comeB) {
if (comeA == comeB) {
return 0;
}
switch (comeA) {
case Player.BU:
if (comeB == Player.JIANDAO)
return -1;
else
return 1;
case Player.JIANDAO:
if (comeB == Player.QUAN)
return -1;
else
return 1;
case Player.QUAN:
if (comeB == Player.BU)
return -1;
else {
return 1;
}
}
return 0;
}
}
public class Test {

    public static void main(String[] args) {
Referee referee = new Referee();
Player playerA = new Player("张三");
Player playerB = new Player("李四");
System.out.println("游戏开始:");
while (!referee.judge(playerA, playerB)) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("开始下一局");
}
}
}

--打印日历

import java.util.Calendar;
//日历类
public class Solar { private int year, month, day;
Calendar calendar = Calendar.getInstance(); public Solar(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
} public void showCal() {
// 填充方法
System.out.println("*******" + year + "-" + month + "*******");
System.out.println("周日\t周一\t周二\t周三\t周四\t周五\t周六");
// 上月的最后几天
int upMonth = upMonthLastDay(month);// 31 4 28
int week = monthOneDayOfWeek();
int monthLength = upMonthLastDay(month + 1);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 7; j++) {
if (i * 7 + j < week) {
// 抬头
int upMothValue = upMonth - week + 1 + j;
System.out.print(upMothValue + "\t");
} else {
int monthValue = i * 7 + j - week + 1;
if (monthValue <= monthLength) {
// 正文
System.out.print(monthValue + "\t");
} else {
// 尾部
System.out.print((monthValue - monthLength) + "\t");
}
} }
System.out.println();
} } // 这个月的第一天是周几
private int monthOneDayOfWeek() {
// set用来修改日历
calendar.set(year, month - 1, 1);
int week = calendar.get(Calendar.DAY_OF_WEEK);
return week - 1;
} // 上一月有多少天
private int upMonthLastDay(int month) {
if (month == 1) {
return 31;
} else if (month == 3) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
return 29;
else {
return 28;
}
} else if (month == 2 || month == 4 || month == 6 || month == 8
|| month == 9 || month == 11)
return 31;
else
return 30;
} }
import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
// System.out.println("请输入需要查询的年月日 格式1970-01-01");
// Scanner input = new Scanner(System.in);
// String str = input.next();
// String[] array = str.split("-");
// // 转换int 包装类
// int year = Integer.parseInt(array[0]);
// int month = Integer.parseInt(array[1]);
// int day = Integer.parseInt(array[2]); for (int i = 1; i < 13; i++) {
Solar solar = new Solar(2017, i, 1);
solar.showCal();
System.out.println();
} }
}

Java纸牌小demo以及日历小demo的更多相关文章

  1. Java可视化日历(Date类、DATe Format类、Calendar类综合运用),开发可视化日历小程序

    Java时间日期类综合运用,开发可视化日历小程序 由键盘输入指定格式的日期,打印这个月的日历 1.代码 import java.text.DateFormat; import java.text.Pa ...

  2. 小程序源码下载[demo整理自github]

    微信小程序的火热程度大家都有所了解,也有很多牛人写了不错的小程序,今天ytkah就整理一些github上的小程序开源项目,源码可以直接下载来用,感兴趣的朋友赶紧去看看吧!以下小程序排名按star的数量 ...

  3. 前端,Java,产品经理,微信小程序,Python等资源合集大放送

    为了感恩大家长久以来的关注和支持,小编准备了一些福利,整理了包含前端,Java,产品经理,微信小程序,Python,网站源码,Android应用视频教程,微信公众平台开发教程及材料等资源合集大放送. ...

  4. Calendar日历小程序

    //有待完善,有点bugpackage com.sunshine.framework.calendar.model;import java.util.Calendar;/** * * <p> ...

  5. Java学习过程中的总结的小知识点(长期更新)

    Java学习过程中的总结的小知识点 (主要是自己不会的知识和容易搞错的东西) 计算某个程序运行的时间 long stime=System.currentTimeMillis(); copy3(file ...

  6. Java内存管理的9个小技巧

    Java内存管理的9个小技巧很多人都说“Java完了,只等着衰亡吧!”,为什么呢?最简单的的例子就是Java做的系统时非常占内存!一听到这样的话,一定会有不少人站出来为Java辩护,并举出一堆的性能测 ...

  7. Java 课程设计 "Give it up"小游戏(团队)

    JAVA课程设计 "永不言弃"小游戏(From :Niverse) 通过Swing技术创建游戏的登陆注册界面,使用mySQL数据库技术完成用户的各项信息保存和游戏完成后的成绩保存. ...

  8. 《java入门第一季》之类小案例(模拟用户登录)

    首先是做一个用户登录的小案例.在此基础上加入其它逻辑. import java.util.Scanner; /* * 模拟登录,给三次机会,并提示还有几次.如果登录成功,就可以玩猜数字小游戏了. * ...

  9. Java端百度云推送消息Demo

    因为在做Java服务器有用到推送消息机制,于是到网上找了一下,就自己试着敲了一个demo.这个demo主要是简单的一个对app消息推送. jar:百度云消息推送Java端的jar. package x ...

随机推荐

  1. JS中Node节点总结

    Node的三个基本属性: 1.nodeType:表明节点类型,1是元素节点,3是文本节点. 2.nodeName:  表明节点名称,元素节点为标签名,文本节点为#text. 3.nodeValue:表 ...

  2. MySQL数据库安全策略

    1. 删除所有MySQL中的用户(包括root用户): mysql> delete from mysql.user root可以保留,然后修改为其他用户 2. 为管理员root用户设置密码 : ...

  3. python标准库]Hashlib

    hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法. 在学习hashlib模块之前,先来看 ...

  4. Node.js安装和配置

    今天有时间开始要研究Node.js了,项目的需要,先把环境正好,初次接触,把安装和配置过程记录下来,以备不时之需.言归正传. 1.打开NodeJS的官网,下载和自己系统相配的NodeJS的安装程序,包 ...

  5. Nmap原理-01选项介绍

    Nmap原理-01选项介绍 1.Nmap原理图 Nmap包含四项基本功能:主机发现/端口扫描/版本探测/操作系统探测.这四项功能之间存在大致的依赖关系,比如图片中的先后关系,除此之外,Nmap还提供规 ...

  6. javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  7. 使用外部容器运行spring-boot项目:不使用spring-boot内置容器让spring-boot项目运行在外部tomcat容器中

    前言:本项目基于maven构建 spring-boot项目可以快速构建web应用,其内置的tomcat容器也十分方便我们的测试运行: spring-boot项目需要部署在外部容器中的时候,spring ...

  8. 基于C#的接口自动化测试(二)

    Json多重数据处理方法II:jobj直接向后调用即可 ]["GoodsName"]; 用:分隔的字符串转字典: public static Dictionary<strin ...

  9. 浅析TCP/IP 协议

    TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. TCP/IP协议模块关系 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层 ...

  10. 反射+自定义注解---实现Excel数据列属性和JavaBean属性的自动映射

    简单粗暴,直奔主题.   需求:通过自定义注解和反射技术,将Excel文件中的数据自动映射到pojo类中,最终返回一个List<pojo>集合? 今天我只是通过一位使用者的身份来给各位分享 ...