Java入门第三季—简易扑克牌游戏
生活随笔
收集整理的這篇文章主要介紹了
Java入门第三季—简易扑克牌游戏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?一,Java入門第三季—簡易撲克牌游戲
-
創建一副撲克牌
-
創建兩名玩家
-
洗牌
-
發牌
-
游戲
這里我的花色最大是黑桃,然后是紅桃,梅花,方片
二,
1,下面public void pokerComp() 中寫的不夠簡潔,感覺還能改進,不過現在腦子知識不足,并且有點混亂,不夠熟悉沒改出來
2,創建玩家ID沒有用try...catch,防止輸入字符時出錯
Test.java?
package com.scy.poker;import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Random; import java.util.Scanner; import java.util.Set;/*** 花色順序:黑桃,紅桃,梅花,方片* 十三種點數:2——10,J,Q,K,A,不考慮大小王* @author scy**/ public class Test {//用于存放撲克的List,poker1按順序存儲,poker2存放洗牌之后的public List poker1= new ArrayList();public List poker2 =new ArrayList();;//存放玩家的Listpublic static List player=new ArrayList();;Scanner sc=new Scanner(System.in);//定義兩個數組用來存放,花色,字母(數字),用來添加進poker1中String[] suit= new String[]{"黑桃","紅桃","梅花","方片"};String[] num1= new String[]{"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//創建撲克public void createPoker() {System.out.println("----------------創建撲克牌...----------------");int s=0;//for(int j=0;j<4;j++) {for(int i=0;i<13;i++) { //將編號,花色,數字 添加進去Poker p=new Poker(s++,suit[j],num1[i]);poker1.add(p);} }System.out.println("----------------撲克牌創建成功!-------------");}//輸出按順序排列的撲克public void testSys() {System.out.println("為以下:");for(int i=0;i<52;i++) {//每13個換一行if(i%13==0&&i!=0) { System.out.println();}//用get(),,并輸出Poker po= (Poker) poker1.get(i);System.out.print(po.suits+po.num+" ");} System.out.println("\n");}//洗牌public void washPoker() {System.out.println("------------------開始洗牌...----------------");//定義隨機數Random random=new Random();//從第一張牌,循環到最后一張for(int i=0;i<52;i++) {//用隨機來獲取某個隨機的位置,將該位置的數,添加到poker2中int ran= random.nextInt(52);Poker po=(Poker) poker1.get(ran);//if,,contains()判斷此隨機數是否已經放進poker2中if(poker2.contains(po)) {i--;continue;}poker2.add(po);}System.out.println("------------------洗牌結束...----------------");}//創建兩名玩家public void createPlayer() {System.out.println("------------------創建玩家...----------------");for(int i=0;i<2;i++) {System.out.println("請輸入第"+(i+1)+"位玩家的ID和姓名:");//System.out.println("輸入ID:");int id=sc.nextInt();//System.out.println("輸入姓名:");String name=sc.next();//Player p=new Player(id,name);//player.add(p);}}//開始發牌public void startPlay() {for(Object p:player) {Player po=(Player) p;System.out.println("歡迎玩家:"+po.name);}//System.out.println("------------------開始發牌...----------------");for(int i=0;i<4;i=i+2) { Poker po1= (Poker) poker2.get(i); Poker po2= (Poker) poker2.get(i+1);//給1號玩家1,3位置的牌Player p1=(Player) player.get(0);System.out.println("玩家:"+p1.name+"拿牌");p1.pok.add(po1);//給2號玩家2,4位置的牌Player p2=(Player) player.get(1);System.out.println("玩家:"+p2.name+"拿牌");p2.pok.add(po2); }System.out.println("------------------發牌結束...----------------");}/*** 比較兩個玩家牌的大小* 先比數字大小* 如果數字相同比較花色,花色大小我定義為,,大小從黑桃開始依此減小(黑桃,紅桃,梅花,方片)*/public void pokerComp() {System.out.println("------------------開始游戲...----------------");//用兩個pok1,pok2分別 放兩個玩家最大的牌Poker pok1=new Poker();Poker pok2=new Poker();//用max1,max2放最大牌的數字,在num1中位置int max1,max2;//將num1數組,變成ListList list=new ArrayList(Arrays.asList(num1));//找玩家1手里的最大牌Player p1=(Player) player.get(0);Poker po11=(Poker) p1.pok.get(0);Poker po12=(Poker) p1.pok.get(1);int pos1=list.indexOf(po11.num);int pos2=list.indexOf(po12.num);if(pos1>pos2) {pok1=po11;max1=pos1;System.out.println("玩家:"+p1.name+"最大的手牌為:"+po11.suits+po11.num);}else if(pos1<pos2){pok1=po12;max1=pos2;System.out.println("玩家:"+p1.name+"最大的手牌為:"+po12.suits+po12.num);}else {if(po11.id>po12.id) {pok1=po12;max1=pos2;System.out.println("玩家:"+p1.name+"最大的手牌為:"+po12.suits+po12.num);}else {pok1=po11;max1=pos2;System.out.println("玩家:"+p1.name+"最大的手牌為:"+po11.suits+po11.num);}}//找玩家2手里的最大牌Player p2=(Player) player.get(1);Poker po21=(Poker) p2.pok.get(0);Poker po22=(Poker) p2.pok.get(1);int pos3=list.indexOf(po21.num);int pos4=list.indexOf(po22.num);if(pos3>pos4) {pok2=po21;max2=pos3;System.out.println("玩家:"+p2.name+"最大的手牌為:"+po21.suits+po21.num);}else if(pos3<pos4){pok2=po22;max2=pos4;System.out.println("玩家:"+p2.name+"最大的手牌為:"+po22.suits+po22.num);}else {if(po21.id>po22.id) {pok2=po22;max2=pos4;System.out.println("玩家:"+p2.name+"最大的手牌為:"+po22.suits+po22.num);}else {pok2=po21;max2=pos4;System.out.println("玩家:"+p2.name+"最大的手牌為:"+po21.suits+po21.num);}}//玩家1,2,比較手里的最大牌,找出最大的,輸出該玩家名字if(max2>max1) {System.out.println("------------------玩家:"+p2.name+"獲勝----------------");}else if(max2<max1) {System.out.println("------------------玩家:"+p1.name+"獲勝----------------");}else {//數字相等時,通過花色比大小,用序號來比較,花色大的序號小if(pok1.id>pok2.id) {System.out.println("------------------玩家:"+p2.name+"獲勝----------------");}else {System.out.println("------------------玩家:"+p1.name+"獲勝----------------");}}}//public static void main(String[] args) {Test te=new Test();//創建撲克te.createPoker();te.testSys();//洗牌te.washPoker();//創建2個玩家te.createPlayer(); //開始游戲te.startPlay();//比較那位玩家擁有的牌最大te.pokerComp();//輸出2名玩家手里擁有的牌for(int i=0;i<2;i++) {Player b=(Player) player.get(i);System.out.print(b.name+":");for(Poker p:b.pok) {System.out.print(p.suits+p.num+" ");}System.out.println();}} }?Player.java
package com.scy.poker;import java.util.ArrayList; import java.util.List; import java.util.Set;public class Player {public String name;//姓名public int id;//編號public List<Poker> pok; //玩家的牌public Player(int id,String name) { this.id=id;this.name=name;this.pok=new ArrayList<Poker>();} }Poker.java
package com.scy.poker;import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set;public class Poker implements Comparable<Poker>{public int id; //序號public String suits;//花色public String num; //數字(字母)public Poker(int id,String suits, String num) {this.id=id;this.suits=suits;this.num=num;}public Poker() {}public boolean contains(String suits2) {// TODO Auto-generated method stubreturn false;}//@Overridepublic int compareTo(Poker o) {// TODO Auto-generated method stubreturn this.num.compareTo(o.num);}}?
三,運行結果?
總結
以上是生活随笔為你收集整理的Java入门第三季—简易扑克牌游戏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS·经典·炫彩菜单(动画效果) for
- 下一篇: java美元兑换,(Java实现) 美元