本帖最后由 Tibbers_oro 于 2018-7-20 16:29 编辑
package cn.itcast.day08.zhoucan;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
/**
* @Description: java类作用描述
* @Author: 周璨
* @CreateDate: 2018/7/19 18:22
* @Version: 1.0
* <p>
* 综合目前在基础班所学(以下尽可能多的用到学的内容),我模拟了一个简易的斗地主,要实现开局抽牌的功能,如下:
* 1.进游戏:玩家输入房间密码(20180706)进入游戏房间开始玩斗地主; (Scanner,while死循环,if-else语句...)
* 2.输入密码错误超过3次,游戏强制退出; (if语句嵌套,break...)
* 3.系统创造牌并洗牌:得到一副扑克牌(54张),并且洗牌; (面向对象.ArrayList,for嵌套循环,random,remove...)
* 4.发牌:3个玩家("jcc","wzq","lzm")按照顺序分别得到17张牌; (匿名对象,extends,super,override...)
* 5.抢地主,比分值大小,并且会获取最后3张牌; (三元运算....)
*/
//创建一个游戏类
public class Game {
public static void main(String[] args) {
//import Scanner导包
//通过键入房间密码进入游戏
Scanner sc = new Scanner(System.in);
System.out.println("请输入房间密码:");
Player player = new Player();
int mima = sc.nextInt();
int count = 0;
//通过while死循环多次键入密码到密码正确为止,或者输错过多次,退出(break)
while (true) {
if (mima == 20180706) {
System.out.println("欢迎进入房间,游戏开始!");
//调用getPuke()方法拿牌,将拿到的牌(puke)作为参数调用flushPuke()方法进行洗牌,得到新牌newpuke
//发牌
player.naPuke(flushPuke(getPuke()));
//发牌完毕,此简易斗地主功能完成
System.out.println("请出牌!");
break;
} else {
System.out.println("密码错误,请重新输入!");
sc.nextInt();
//计数器计数
count++;
if (count > 2) {
System.out.println("输入密码错误次数过多,游戏退出!");
break;
}
}
}
}
//创建一个得到扑克集合的方法,返回一个puke集合(一副扑克牌)
private static ArrayList<Puke> getPuke() {
//import ArrayList导包
ArrayList<Puke> puke = new ArrayList<>();
//定义花色数组
String[] hs = {"黑桃", "红桃", "梅花", "方块"};
//定义点数数组
String[] ds = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
//hs.fori // for嵌套循环得到一副扑克数组
for (int i = 0; i < hs.length; i++) {
//ds.fori
for (int j = 0; j < ds.length; j++) {
Puke pk = new Puke(hs, ds[j]);
//添加到集合
puke.add(pk);
}
}
// 补充花牌以外的两张王牌
puke.add(new Puke("小王", ""));
puke.add(new Puke("大王", ""));
//执行此方法将返回一整副扑克
return puke;
}
//创建一个洗牌的方法,参数是一副牌的集合,通过洗牌操作获得一副新的扑克牌集合
public static ArrayList<Puke> flushPuke(ArrayList<Puke> puke) {
ArrayList<Puke> newpuke = new ArrayList<>();
//import Random导包
//通过randon集合索引位置来洗牌
while (puke.size() > 0) {
int size = puke.size();
//以size为限,生成0~size之间的随机数
Random r = new Random();
int index = r.nextInt(size);
//index就是拿出来的牌的索引值,加到新的集合中,从原来集合中删除
Puke result = puke.get(index);
newpuke.add(result);
puke.remove(index);
}
//执行此方法将返回一整副洗牌后的新的扑克
return newpuke;
}
}
|
|