一个小作业,虽有结果,但是写的太臃肿,而且不规范,好揪心啊!欢迎大家批评,虚心求教!
成长是个痛苦和美好的过程,加油吧!
代码:主方法:
writeFilePoker("C:\\other\\io\\pokerGame.txt", a, true);
构造方法中的true再方法里的定义为isAppend表示为是否继续添加,及保存历史记录!
若是false则不保存历史记录,再次写入时会清空文件里的内容!
//主方法
public static void main(String[] args) throws IOException {
Poker poker = new Poker();
System.out.println("欢乐斗地主-开始游戏");
String a=poker.poker01();
writeFilePoker("C:\\other\\io\\pokerGame.txt", a, true);
Scanner sc = new Scanner(System.in);
System.out.println("是否查看历史手牌: 是/否");
String look = sc.next();
if (look.equals("是")) {
System.out.println(readFilePoker("C:\\other\\io\\pokerGame.txt"));
} else {
System.out.println("本局游戏结束!");
}
}
//将执行的结果写入文件!
public static void writeFilePoker(String path, String s, boolean isAppend) throws IOException {
File f = new File(path);
if (f.getParentFile() != null && !f.getParentFile().exists()) {//判断父级路径为空,且判断是否为文件
f.getParentFile().mkdirs();//迭代查找文件夹及迭代创建文件
}
FileWriter fw = new FileWriter(f, isAppend);
for (int i = 0; i < s.length(); i++) {//按照传入的字节长度进行循环加入文件,
// 转字符
fw.write(s.charAt(i));
}
fw.close();
}
//读取历史手牌!
public static String readFilePoker(String path) throws IOException {
File f = new File(path);
if (!f.exists()) {
System.out.println("无历史记录,欢迎继续游戏!");
}
FileReader fr = new FileReader(f);
StringBuilder sb = new StringBuilder();
int tmp;
while ((tmp = fr.read()) != -1) { //只要没读取完就一直读取!
sb.append((char) tmp);//转字符并添加!
}
fr.close();
return sb.toString();
}
基本类:
//定义牌数于花色
public class Base {
private String image;
private int num;
public Base() {
}
public Base(int num, String image) {
this.image = image;
this.num = num;
}
@Override
public String toString() {
return num +image ;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
//定义玩家
public class Player {
private String name;
public Player() {
}
public Player(String name) {
this.name = name;
}
@Override
public String toString() {
return name ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//扑克牌
public String poker01() {
ArrayList list = new ArrayList();
//可以直接13个点数输出!!!!
String[] hua = { "♤","♡","♧","◇"};
String[] ajqk = {"3","4",5","6","7","8","9","10","J","Q","K","A","2"};
for (int i = 0; i < 13; i++) {//52张牌
for (int j = 0; j < 4; j++) {
list.add(ajqk[i]+hua[j]);
}
}
list.add("小♛");
list.add("大♚");
//54张扑克牌
//打乱牌序
Collections.shuffle(list);
// System.out.println("一副扑克牌:"+list+"牌数:"+list.size()+"张");
//发牌
ArrayList play01=new ArrayList();
ArrayList play02=new ArrayList();
ArrayList play03=new ArrayList();
ArrayList residue=new ArrayList();
for (int i = 0; i < list.size(); i++) {
Object p=list.get(i);
if(i%3==0&&i<51){
play01.add(p);
}else if(i%3==1&&i<51){
play02.add(p);
} else if(i%3==2&&i<51){
play03.add(p);
} else{
residue.add(p);
}
}
Player player01 = new Player("① 赌圣-周星驰");
Player player02 = new Player("② 赌神-周润发");
Player player03 = new Player("③ 赌侠-刘德华");
System.out.println("底牌:"+residue);//地主
//将底牌取出来
//随机产生地主:(简化?)
int a=(int)(Math.random()*3+1);
switch (a){
case 1:
System.out.println("地主是:"+player01);
play01.add(residue.get(0));
play01.add(residue.get(1));
play01.add(residue.get(2));
System.out.println(player01+":"+play01+"\t玩家牌数:"+ play01.size()+"张");
System.out.println(player02+":"+play02+"\t玩家牌数:"+ play02.size()+"张");
System.out.println(player03+":"+play03+"\t玩家牌数:"+ play03.size()+"张");
break;
case 2:
System.out.println("地主是:"+player02);
play02.add(residue.get(0));
play02.add(residue.get(1));
play02.add(residue.get(2));
System.out.println(player01+":"+play01+"\t玩家牌数:" +play01.size()+"张");
System.out.println(player02+":"+play02+"\t玩家牌数:" +play02.size()+"张");
System.out.println(player03+":"+play03+"\t玩家牌数:" +play03.size()+"张");
break;
case 3:
System.out.println("地主是:"+player03);
play03.add(residue.get(0));
play03.add(residue.get(1));
play03.add(residue.get(2));
System.out.println(player01+":"+play01+"\t玩家牌数:" +play01.size()+"张");
System.out.println(player02+":"+play02+"\t玩家牌数:" +play02.size()+"张");
System.out.println(player03+":"+play03+"\t玩家牌数:" +play03.size()+"张");
break;
default:
System.out.println("无人抢地主");
break;
}
return "地主是:"+ a +"号玩家 !祝大家财源滚滚!\n"+
"底牌:"+residue+"\n"+
player01+":"+play01+"\t玩家牌数:"+play01.size()+"张\n"+
player02+":"+play02+"\t玩家牌数:"+play02.size()+"张\n"+
player03+":"+play03+"\t玩家牌数:"+play03.size()+"张\n\n";
}
结果: