Java第三季撲克牌作業 參考了幕友的排序方法 非常感謝
package com.java1996;
public class GameStart {
public static void main(String[] args){
Game game=new Game();
game.cardCreat();
game.gameRunning();
game.cardSend();
}
}
package com.java1996;
public class Cards {
private String cardNum;//牌
private String color;//花色
public Cards(String color, String cardNum){
this.cardNum=cardNum;
this.color=color;
}
public String getCardNum() {
return cardNum;
}
public void setCardNum(String cardNum) {
this.cardNum = cardNum;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
@Override
public String toString() {
return color+cardNum;
}
}
package com.java1996;
import java.util.ArrayList;
import java.util.List;
public class Player {
private int id;//玩家ID
private String name;//玩家名字
private List
public Player(int id,String name){
this.id=id;
this.name=name;
this.cardPlayer=new ArrayList
}
public Player(){
//構造時候new一個ArrayList例項
this.cardPlayer=new ArrayList
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List
return cardPlayer;
}
public void setCardPlayer(List
this.cardPlayer = cardPlayer;
}
}
package com.java1996;
import java.util.ArrayList;
import java.util.Collections;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Scanner;
public class Game {
Scanner sc=new Scanner(System.in);
//建立兩名玩家物件
Player p1=new Player();
Player p2=new Player();
List
List
String[] color={"黑桃","紅桃","梅花","方塊"};
String[] cardNum={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
public void cardCreat(){
System.out.println("---------------- 建立撲克牌-------------------------");
System.out.println("---------------- loading---------------------------");
for(String str:color){
for(String str1:cardNum){
//因為重寫了toString方法新增之後以字串顯示
allCards.add(new Cards(str,str1));
}
}
System.out.println("----------------建立撲克牌成功------------------------");
System.out.println("----------------撲克牌為下----------------------------");
System.out.println(allCards);
System.out.println("-----------------開始洗牌------------------------------");
for(int i=0;i //多洗幾次
Collections.shuffle(allCards);
}
System.out.println("-----------------洗牌結束------------------------------");
}
public void gameRunning(){
for(int i=0;i System.out.println("請輸入第"+(i+1)+"位玩家的ID和姓名:");
System.out.println("輸入ID:");
if(i==0){
while(true){
try{
p1.setId(sc.nextInt());
break;
}catch(InputMismatchException e){
System.out.println("老哥,請輸入數字");
sc.next();
}
}
System.out.println("輸入姓名:");
p1.setName(sc.next());
}else{
p2.setId(sc.nextInt());
System.out.println("輸入姓名:");
p2.setName(sc.next());
}
}
System.out.println("----歡迎玩家:"+p1.getName());
System.out.println("----歡迎玩家:"+p2.getName());
}
public void cardSend(){
System.out.println("-------------------開始發牌-------------------------");
p1.getCardPlayer().add(allCards.get(0));//給p1玩家發牌
p1.getCardPlayer().add(allCards.get(10));
System.out.println("玩家:"+p1.getName()+"-拿牌");
p2.getCardPlayer().add(allCards.get(1));//給p2玩家發牌
p2.getCardPlayer().add(allCards.get(9));
System.out.println("玩家:"+p2.getName()+"-拿牌");
p1.getCardPlayer().add(allCards.get(2));
System.out.println("玩家:"+p1.getName()+"-拿牌");
p2.getCardPlayer().add(allCards.get(3));
System.out.println("玩家:"+p2.getName()+"-拿牌");
System.out.println("--------------------發牌結束-----------------------");
//現在發牌結束 兩名玩家都有各自的手牌集合
//把兩個人的牌加入總的比較牌
maxCards.addAll(p1.getCardPlayer());
maxCards.addAll(p2.getCardPlayer());
System.out.println(p1.getName()+":"+p1.getCardPlayer());
System.out.println(p2.getName()+":"+p2.getCardPlayer());
//排序了,把大的牌牌到最後
Collections.sort(p1.getCardPlayer(),new Mycomparator());
Collections.sort(p2.getCardPlayer(), new Mycomparator());
//這是儲存兩個玩家所有手牌的集合,也排序下
Collections.sort(maxCards, new Mycomparator());
System.out.println("玩家:"+p1.getName()+"的最大手牌是:"+p1.getCardPlayer().get(2));
System.out.println("玩家:"+p2.getName()+"的最大手牌是:"+p2.getCardPlayer().get(2));
System.out.println("-----------------玩家"+maxCards()+"獲勝------------------------");
System.out.println("玩家各自的手牌為:");
System.out.println(p1.getName()+":"+p1.getCardPlayer());
System.out.println(p2.getName()+":"+p2.getCardPlayer());
}
public String maxCards(){
//判斷如果maxCards所有玩家牌的集合裡最大的一張
//等於玩家最大的那一張則返回該玩家
if(maxCards.get(maxCards.size()-1)==p1.getCardPlayer().get(2)){
return p1.getName();
}else{
return p2.getName();
}
}
}
package com.java1996;
import java.util.Comparator;
public class Mycomparator implements Comparator
@Override
public int compare(Cards o1, Cards o2) {
//自定義了一個排序方法 按照下標排序
String color = "黑桃 紅桃 梅花 方塊";
String point = "2 3 4 5 6 7 8 9 10 J Q K A";
//如果o1-o2大於0,說明o1比o2打 返回1,排在後面
int result= point.indexOf(o1.getCardNum())-point.indexOf(o2.getCardNum());
if(result>0){
return 1;
}else if(result return -1;
}else{
//因為color陣列是從大到小排這裡要倒過來
int result1=color.indexOf(o1.getColor())-color.indexOf(o2.getColor());
if(result1>0){
return -1;
}else{
return 1;
}
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/854/viewspace-2807719/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用Java實現撲克牌排序Java排序
- Java入門第三季7-1簡易撲克牌作業Java
- 撲克牌排序:基於基數排序的方法排序
- Java第三季—簡易撲克牌遊戲Java遊戲
- Java入門第三季撲克牌小遊戲Java遊戲
- 編碼也快樂!撲克牌排序JAVA排序Java
- 用SQL實現撲克牌排序SQL排序
- 用C實現撲克牌排序排序
- 用C#實現撲克牌排序C#排序
- JAVA入門第三季——最後練習題撲克牌Java
- 編碼也快樂活動:撲克牌排序排序
- 用cpp0.5實現撲克牌排序排序
- 撲克牌排序-Scala之畫蛇添足版排序
- java程式:簡易撲克牌遊戲Java遊戲
- 編碼也快樂:撲克牌排序 - Python排序Python
- 編碼也快樂活動:撲克牌排序(JavaScript)排序JavaScript
- 撲克牌排序(JS版) 編碼也快樂!排序JS
- Java 簡單實現撲克牌抽象類Java抽象
- 自己寫的一個洗撲克牌的java程式Java
- Java學習--撲克牌比大小的小遊戲Java遊戲
- 使用Java語言寫的一個簡單的撲克牌發牌程式碼Java
- 簡易撲克牌遊戲JAVA原始碼_新手上路遊戲Java原始碼
- 撲克牌速算24 -窮舉(JavaScript)JavaScript
- SwiftUI:看我展示52張撲克牌,“很快啊!”SwiftUI
- 區塊鏈專案開發—感謝中本聰!也感謝祖克伯!區塊鏈
- JAVA入門第三季 簡易撲克牌遊戲原始碼 可以自定義玩家人數 有詳細注Java遊戲原始碼
- 純CSS實現撲克牌效果,太牛了吧CSS
- 以色列央行考慮推出“加密謝克爾”加密
- [每日一題] 第十二題:撲克牌中的順子每日一題
- 【YOLOv5】實現撲克牌的點數識別YOLO
- java入門最後一章 簡易撲克牌比較大小Java
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- 團隊拓撲快速參考圖
- 簡易撲克牌遊戲簡單實現,歡迎指正遊戲
- python實現撲克遊戲 - 抽鬼牌 和 21點Python遊戲
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (一)Python遊戲
- python例項:解決經典撲克牌遊戲 -- 四張牌湊24點 (二)Python遊戲
- 關於撲克牌的一些討論——《Fluent Python 2》讀書筆記Python筆記