本帖最后由 Tibbers_oro 于 2018-7-20 16:30 编辑
package cn.itcast.day08.zhoucan;
import java.util.ArrayList;
import java.util.Scanner;
/**
* @Description: java类作用描述
* @Author: 周璨
* @CreateDate: 2018/7/20 9:48
* @Version: 1.0
* 综合目前在基础班所学(以下尽可能多的用到学的内容),我模拟了一个简易的斗地主,要实现开局抽牌的功能,如下:
* 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 Player extends People {
//定义一个私有变量分数,抢地主的分数(0-3分,谁大谁是地主)
private int point;
//构造无参
public Player() {
}
//构造满参
public Player(String name, int point) {
super(name);
this.point = point;
}
public int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
//重写发牌方法
@Override
public void naPuke(ArrayList<Puke> puke) {
super.naPuke(puke);
//import ArrayList导包,创造集合,用来分别放置3名玩家拿到的牌
ArrayList<Puke> p1 = new ArrayList<>();
ArrayList<Puke> p2 = new ArrayList<>();
ArrayList<Puke> p3 = new ArrayList<>();
//利用for循环对3个人循环发牌,定义一个num为索引值
for (int num = 0; num < 51; num++) {
//从玩家一开始发牌,如果牌索引值模3为0,则将牌加入玩家一的牌组中
if (num % 3 == 0) {
p1.add(puke.get(num));
//如果牌索引值模3为1,则将牌加入玩家二的牌组中
} else if (num % 3 == 1) {
p2.add(puke.get(num));
//剩下一种情况,牌索引值模3为2,将牌加入玩家三的牌组中
} else {
p3.add(puke.get(num));
}
}
//抢地主,抢到地主的人获得最后3张牌
//import Scanner导包,键入抢地主分值
Scanner sc = new Scanner(System.in);
System.out.println("jcc请输入分数,开始抢地主");
Player playerone = new Player("jcc", sc.nextInt());
System.out.println("wzq请输入分数,开始抢地主");
Player playertwo = new Player("wzq", sc.nextInt());
System.out.println("lzm请输入分数,开始抢地主");
Player playerthree = new Player("lzm", sc.nextInt());
//用变量表示玩家分数
int a = playerone.getPoint();
int b = playertwo.getPoint();
int c = playerthree.getPoint();
//用三元运算符比较谁的分值最大,用if语句判断分值最大的就是地主,并且获取最后3张牌
int tem = a > (b > c ? b : c) ? a : (b > c ? b : c);
if (tem == a) {
System.out.println("玩家" + playerone.getName() + "是地主");
p1.add(puke.get(51));
p1.add(puke.get(52));
p1.add(puke.get(53));
} else if (tem == b) {
System.out.println("玩家" + playertwo.getName() + "是地主");
p2.add(puke.get(51));
p2.add(puke.get(52));
p2.add(puke.get(53));
} else {
System.out.println("玩家" + playerthree.getName() + "是地主");
p3.add(puke.get(51));
p3.add(puke.get(52));
p3.add(puke.get(53));
}
//打印每个人的牌
System.out.print("玩家" + playerone.getName() + "的牌是:");
for (int i = 0; i < p1.size(); i++) {
System.out.print(p1.get(i).getHs() + p1.get(i).getDs()+" ");
}
//换行
System.out.println();
System.out.print("玩家" + playertwo.getName() + "的牌是:");
for (int i = 0; i < p2.size(); i++) {
System.out.print(p2.get(i).getHs() + p2.get(i).getDs()+" ");
}
//换行
System.out.println();
System.out.print("玩家" + playerthree.getName() + "的牌是:");
for (int i = 0; i < p3.size(); i++) {
System.out.print(p3.get(i).getHs() + p3.get(i).getDs()+" ");
}
System.out.println();
}
}
|
|