From f29897f9c40397d729ccdd81ac1e5f7db6ea57a2 Mon Sep 17 00:00:00 2001 From: Abby Date: Thu, 15 Nov 2018 14:10:50 +0900 Subject: [PATCH 1/3] fix on server selection and add unicode cards --- .../ratel/landlords/client/SimpleClient.java | 46 +++++++++++++++++-- ...ntListener_CODE_GAME_LANDLORD_CONFIRM.java | 1 - ...entListener_CODE_SHOW_OPTIONS_SETTING.java | 13 +----- .../ClientEventListener_CODE_SHOW_ROOMS.java | 3 -- .../nico/ratel/landlords/enums/SellType.java | 2 - .../ratel/landlords/helper/PokerHelper.java | 43 +++++++++++++++-- .../server/event/ServerEventListener.java | 7 ++- ...ventListener_CODE_GAME_LANDLORD_ELECT.java | 4 -- ...istener_CODE_GAME_POKER_PLAY_REDIRECT.java | 1 - ...erverEventListener_CODE_GAME_STARTING.java | 1 - .../ServerEventListener_CODE_ROOM_JOIN.java | 1 - .../server/robot/RobotEventListener.java | 9 +++- 12 files changed, 96 insertions(+), 35 deletions(-) diff --git a/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java b/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java index edf6e45..ca4c6e0 100644 --- a/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java +++ b/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java @@ -5,11 +5,16 @@ import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import org.nico.noson.Noson; import org.nico.noson.entity.NoType; import org.nico.ratel.landlords.client.handler.DefaultChannelInitializer; +import org.nico.ratel.landlords.entity.Poker; +import org.nico.ratel.landlords.enums.PokerLevel; +import org.nico.ratel.landlords.enums.PokerType; import org.nico.ratel.landlords.helper.PokerHelper; import org.nico.ratel.landlords.print.SimplePrinter; import org.nico.ratel.landlords.print.SimpleWriter; @@ -41,15 +46,44 @@ public class SimpleClient { if(args[index].equalsIgnoreCase("-pt") || args[index].equalsIgnoreCase("-pt")) { int selection = Integer.parseInt(args[index + 1]); - if( selection > 0 && selection < 4 ){ - PokerHelper.pokerPrinterType = selection; + if( selection >= 1 && selection <= PokerHelper.totalPrinters ){ + PokerHelper.pokerPrinterType = selection - 1; } } } } } - + // List pokers = new ArrayList(); + // Poker p = new Poker(); + // p.setLevel(PokerLevel.LEVEL_3); + // p.setType(PokerType.SPADE); + // Poker p2 = new Poker(); + // p2.setLevel(PokerLevel.LEVEL_K); + // p2.setType(PokerType.HEART); + // pokers.add(p); + // pokers.add(p2); + + // System.out.println( + + // pokers.stream().map( + // elt -> { + // int level = elt.getLevel().getLevel() - 1; + // switch (elt.getType()) { + // case SPADE: + // return String.valueOf(Character.toChars(0x1F0A1 + level)); + // case HEART: + // return String.valueOf(Character.toChars(0x1F0B1 + level)); + // case DIAMOND: + // return String.valueOf(Character.toChars(0x1F0C1 + level)); + // case CLUB: + // return String.valueOf(Character.toChars(0x1F0D1 + level)); + // default: + // return ""; + // } + // } + // ).collect(Collectors.joining("")) + // ); if(serverAddress.equals("") || port == 0){ StringBuffer buffer = new StringBuffer(); try { @@ -71,9 +105,11 @@ public class SimpleClient { for(int i = 0; i < serverAddressList.size(); i++) { SimplePrinter.printNotice((i+1) + ". " + serverAddressList.get(i)); } - int serverPick = Integer.parseInt(SimpleWriter.write("option")); + int serverPick = 0; while(serverPick<1 || serverPick>serverAddressList.size()){ - SimplePrinter.printNotice("Invalid Option"); + try { + serverPick = Integer.parseInt(SimpleWriter.write("option")); + }catch(NumberFormatException e){} } serverAddress = serverAddressList.get(serverPick-1); String[] elements = serverAddress.split(":"); diff --git a/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_GAME_LANDLORD_CONFIRM.java b/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_GAME_LANDLORD_CONFIRM.java index c899885..21df63e 100644 --- a/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_GAME_LANDLORD_CONFIRM.java +++ b/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_GAME_LANDLORD_CONFIRM.java @@ -5,7 +5,6 @@ import java.util.Map; import org.nico.noson.Noson; import org.nico.noson.entity.NoType; -import org.nico.ratel.landlords.client.SimpleClient; import org.nico.ratel.landlords.entity.Poker; import org.nico.ratel.landlords.enums.ServerEventCode; import org.nico.ratel.landlords.helper.MapHelper; diff --git a/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_OPTIONS_SETTING.java b/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_OPTIONS_SETTING.java index c7a84b3..89d5143 100644 --- a/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_OPTIONS_SETTING.java +++ b/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_OPTIONS_SETTING.java @@ -13,20 +13,11 @@ public class ClientEventListener_CODE_SHOW_OPTIONS_SETTING extends ClientEventLi @Override public void call(Channel channel, String data) { SimplePrinter.printNotice("Setting: "); - /* - case 0: - return buildHandStringSharp(pokers); - case 1: - return buildHandStringRounded(pokers); - case 2: - return textOnly(pokers); - case 3: - return textOnlyNoType(pokers); - */ SimplePrinter.printNotice("1. Card with shape edges (Default)"); SimplePrinter.printNotice("2. Card with rounded edges"); SimplePrinter.printNotice("3. Text Only with types"); SimplePrinter.printNotice("4. Text Only without types"); + SimplePrinter.printNotice("5. Unicode Cards"); SimplePrinter.printNotice("Please enter the number of setting (enter [BACK] return options list)"); String line = SimpleWriter.write("setting"); @@ -40,7 +31,7 @@ public class ClientEventListener_CODE_SHOW_OPTIONS_SETTING extends ClientEventLi } int choose = Integer.valueOf(line); - if(choose > 0 && choose <= 4){ + if(choose >=1 && choose <= PokerHelper.totalPrinters){ PokerHelper.pokerPrinterType = choose - 1; get(ClientEventCode.CODE_SHOW_OPTIONS).call(channel, data); } else { diff --git a/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_ROOMS.java b/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_ROOMS.java index 2e25119..eec061e 100644 --- a/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_ROOMS.java +++ b/landlords-client/src/main/java/org/nico/ratel/landlords/client/event/ClientEventListener_CODE_SHOW_ROOMS.java @@ -2,12 +2,9 @@ package org.nico.ratel.landlords.client.event; import java.util.List; import java.util.Map; -import java.util.Map.Entry; -import java.util.concurrent.ConcurrentSkipListMap; import org.nico.noson.Noson; import org.nico.noson.entity.NoType; -import org.nico.ratel.landlords.entity.Room; import org.nico.ratel.landlords.enums.ClientEventCode; import org.nico.ratel.landlords.print.SimplePrinter; diff --git a/landlords-common/src/main/java/org/nico/ratel/landlords/enums/SellType.java b/landlords-common/src/main/java/org/nico/ratel/landlords/enums/SellType.java index 5cf61d2..6d19efb 100644 --- a/landlords-common/src/main/java/org/nico/ratel/landlords/enums/SellType.java +++ b/landlords-common/src/main/java/org/nico/ratel/landlords/enums/SellType.java @@ -1,7 +1,5 @@ package org.nico.ratel.landlords.enums; -import java.io.Serializable; - public enum SellType { ILLEGAL("非合法"), diff --git a/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java b/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java index 6e897f5..d4c7cd3 100644 --- a/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java +++ b/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java @@ -4,7 +4,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import org.nico.ratel.landlords.entity.Poker; import org.nico.ratel.landlords.entity.PokerSell; @@ -15,6 +18,7 @@ import org.nico.ratel.landlords.enums.SellType; public class PokerHelper { public static int pokerPrinterType = 0; + public static int totalPrinters = 5; private static List basePokers = new ArrayList(54); private static Comparator pokerComparator = new Comparator() { @@ -266,6 +270,8 @@ public class PokerHelper { return textOnly(pokers); case 3: return textOnlyNoType(pokers); + case 4: + return playingCardUnicode(pokers); default: return buildHandStringSharp(pokers); @@ -352,13 +358,44 @@ public class PokerHelper { if(pokers != null && pokers.size() > 0) { for(int index = 0; index < pokers.size(); index ++) { String name = pokers.get(index).getLevel().getName(); - String type = pokers.get(index).getType().getName(); - - builder.append(name + type); + builder.append(name+" "); } + builder.append(System.lineSeparator()); + for(int index = 0; index < pokers.size(); index ++) { + String type = pokers.get(index).getType().getName(); + builder.append(type+" ".repeat(pokers.get(index).getLevel().getName().length())); + } + } return builder.toString(); } + private static String playingCardUnicode(List pokers){ + return pokers.stream().map( + elt -> { + int level = elt.getLevel().getLevel(); + if (level == 16){//s + return String.valueOf(Character.toChars(0x1F0DF)); + } + if (level == 17){//x + return String.valueOf(Character.toChars(0x1F0CF)); + } + if (level == 14 || level == 15){level = level - 13;} + level--; + switch (elt.getType()) { + case SPADE: + return String.valueOf(Character.toChars(0x1F0A1 + level)); + case HEART: + return String.valueOf(Character.toChars(0x1F0B1 + level)); + case DIAMOND: + return String.valueOf(Character.toChars(0x1F0C1 + level)); + case CLUB: + return String.valueOf(Character.toChars(0x1F0D1 + level)); + default: + return ""; + } + } + ).collect(Collectors.joining("")); + } private static String textOnlyNoType(List pokers){ StringBuilder builder = new StringBuilder(); if(pokers != null && pokers.size() > 0) { diff --git a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener.java b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener.java index d2b45af..9c0c58b 100644 --- a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener.java +++ b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener.java @@ -1,5 +1,6 @@ package org.nico.ratel.landlords.server.event; +import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; @@ -22,7 +23,11 @@ public interface ServerEventListener { }else{ String eventListener = LISTENER_PREFIX + code.name(); Class listenerClass = (Class) Class.forName(eventListener); - listener = listenerClass.newInstance(); + try { + listener = listenerClass.getDeclaredConstructor().newInstance(); + } catch (InvocationTargetException | NoSuchMethodException e) { + e.printStackTrace(); + } ServerEventListener.LISTENER_MAP.put(code, listener); } return listener; diff --git a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_LANDLORD_ELECT.java b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_LANDLORD_ELECT.java index 22979cc..dae4a8f 100644 --- a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_LANDLORD_ELECT.java +++ b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_LANDLORD_ELECT.java @@ -1,8 +1,5 @@ package org.nico.ratel.landlords.server.event; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; import org.nico.ratel.landlords.channel.ChannelUtils; import org.nico.ratel.landlords.entity.ClientSide; @@ -10,7 +7,6 @@ import org.nico.ratel.landlords.entity.Room; import org.nico.ratel.landlords.enums.ClientEventCode; import org.nico.ratel.landlords.enums.ClientRole; import org.nico.ratel.landlords.enums.ClientType; -import org.nico.ratel.landlords.enums.RoomType; import org.nico.ratel.landlords.enums.ServerEventCode; import org.nico.ratel.landlords.helper.MapHelper; import org.nico.ratel.landlords.helper.PokerHelper; diff --git a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_POKER_PLAY_REDIRECT.java b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_POKER_PLAY_REDIRECT.java index 60729fe..843a8b6 100644 --- a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_POKER_PLAY_REDIRECT.java +++ b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_POKER_PLAY_REDIRECT.java @@ -9,7 +9,6 @@ import org.nico.ratel.landlords.entity.ClientSide; import org.nico.ratel.landlords.entity.Room; import org.nico.ratel.landlords.enums.ClientEventCode; import org.nico.ratel.landlords.helper.MapHelper; -import org.nico.ratel.landlords.helper.PokerHelper; import org.nico.ratel.landlords.server.ServerContains; public class ServerEventListener_CODE_GAME_POKER_PLAY_REDIRECT implements ServerEventListener{ diff --git a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_STARTING.java b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_STARTING.java index 9df0e6d..c31cb3b 100644 --- a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_STARTING.java +++ b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_GAME_STARTING.java @@ -11,7 +11,6 @@ import org.nico.ratel.landlords.enums.ClientEventCode; import org.nico.ratel.landlords.enums.ClientRole; import org.nico.ratel.landlords.enums.ClientType; import org.nico.ratel.landlords.enums.RoomStatus; -import org.nico.ratel.landlords.enums.RoomType; import org.nico.ratel.landlords.helper.MapHelper; import org.nico.ratel.landlords.helper.PokerHelper; import org.nico.ratel.landlords.server.ServerContains; diff --git a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_ROOM_JOIN.java b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_ROOM_JOIN.java index ffc183b..8b4ce0e 100644 --- a/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_ROOM_JOIN.java +++ b/landlords-server/src/main/java/org/nico/ratel/landlords/server/event/ServerEventListener_CODE_ROOM_JOIN.java @@ -3,7 +3,6 @@ package org.nico.ratel.landlords.server.event; import java.util.LinkedList; import java.util.concurrent.ConcurrentSkipListMap; -import org.nico.noson.Noson; import org.nico.ratel.landlords.channel.ChannelUtils; import org.nico.ratel.landlords.entity.ClientSide; import org.nico.ratel.landlords.entity.Room; diff --git a/landlords-server/src/main/java/org/nico/ratel/landlords/server/robot/RobotEventListener.java b/landlords-server/src/main/java/org/nico/ratel/landlords/server/robot/RobotEventListener.java index 0852293..8c3ffe3 100644 --- a/landlords-server/src/main/java/org/nico/ratel/landlords/server/robot/RobotEventListener.java +++ b/landlords-server/src/main/java/org/nico/ratel/landlords/server/robot/RobotEventListener.java @@ -1,5 +1,6 @@ package org.nico.ratel.landlords.server.robot; +import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; @@ -13,7 +14,7 @@ public interface RobotEventListener { public final static Map LISTENER_MAP = new HashMap<>(); public void call(ClientSide robot, String data); - + public static RobotEventListener get(ClientEventCode code) { RobotEventListener listener = null; try { @@ -22,7 +23,11 @@ public interface RobotEventListener { }else{ String eventListener = LISTENER_PREFIX + code.name(); Class listenerClass = (Class) Class.forName(eventListener); - listener = listenerClass.newInstance(); + try { + listener = listenerClass.getDeclaredConstructor().newInstance(); + } catch (NoSuchMethodException | InvocationTargetException e) { + e.printStackTrace(); + } RobotEventListener.LISTENER_MAP.put(code, listener); } return listener; From 9c9c14d4268b81571381590971db241692a3ab22 Mon Sep 17 00:00:00 2001 From: Abby Date: Thu, 15 Nov 2018 14:12:36 +0900 Subject: [PATCH 2/3] remove unused imports --- .../java/org/nico/ratel/landlords/client/SimpleClient.java | 5 ----- .../java/org/nico/ratel/landlords/helper/PokerHelper.java | 2 -- 2 files changed, 7 deletions(-) diff --git a/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java b/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java index ca4c6e0..a057a11 100644 --- a/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java +++ b/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java @@ -5,16 +5,11 @@ import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; -import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; import org.nico.noson.Noson; import org.nico.noson.entity.NoType; import org.nico.ratel.landlords.client.handler.DefaultChannelInitializer; -import org.nico.ratel.landlords.entity.Poker; -import org.nico.ratel.landlords.enums.PokerLevel; -import org.nico.ratel.landlords.enums.PokerType; import org.nico.ratel.landlords.helper.PokerHelper; import org.nico.ratel.landlords.print.SimplePrinter; import org.nico.ratel.landlords.print.SimpleWriter; diff --git a/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java b/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java index d4c7cd3..9a54995 100644 --- a/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java +++ b/landlords-common/src/main/java/org/nico/ratel/landlords/helper/PokerHelper.java @@ -4,9 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; -import java.util.HashMap; import java.util.List; -import java.util.Map; import java.util.stream.Collectors; import org.nico.ratel.landlords.entity.Poker; From a9e2567fae1240786749f7aa18028356536e18b2 Mon Sep 17 00:00:00 2001 From: Abby Date: Thu, 15 Nov 2018 14:14:36 +0900 Subject: [PATCH 3/3] remove comments --- .../ratel/landlords/client/SimpleClient.java | 31 +------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java b/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java index a057a11..d4fd01e 100644 --- a/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java +++ b/landlords-client/src/main/java/org/nico/ratel/landlords/client/SimpleClient.java @@ -49,36 +49,7 @@ public class SimpleClient { } } } - // List pokers = new ArrayList(); - // Poker p = new Poker(); - // p.setLevel(PokerLevel.LEVEL_3); - // p.setType(PokerType.SPADE); - // Poker p2 = new Poker(); - // p2.setLevel(PokerLevel.LEVEL_K); - // p2.setType(PokerType.HEART); - // pokers.add(p); - // pokers.add(p2); - - // System.out.println( - - // pokers.stream().map( - // elt -> { - // int level = elt.getLevel().getLevel() - 1; - // switch (elt.getType()) { - // case SPADE: - // return String.valueOf(Character.toChars(0x1F0A1 + level)); - // case HEART: - // return String.valueOf(Character.toChars(0x1F0B1 + level)); - // case DIAMOND: - // return String.valueOf(Character.toChars(0x1F0C1 + level)); - // case CLUB: - // return String.valueOf(Character.toChars(0x1F0D1 + level)); - // default: - // return ""; - // } - // } - // ).collect(Collectors.joining("")) - // ); + if(serverAddress.equals("") || port == 0){ StringBuffer buffer = new StringBuffer(); try {