JAVASE系统实现抽卡功能

这篇文章主要为大家详细介绍了JAVASE系统实现抽卡功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了JAVASE系统实现抽卡功能的具体代码,供大家参考,具体内容如下

先看下文件结构

使用到的知识点:

看下Client类的实现:

package SocketS; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.socket; import java.util.Scanner; import org.apache.log4j.Logger; import com.sun.security.ntlm.Client; import User.Users; import User.UsersDao; /** * 客户端调用登录/注册 后绑定用户操作 * * @author Administrator * */ public class Cilent { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1", 11536); Menu(socket); } catch (IOException e) { e.printstacktrace(); } } private static void Menu(Socket socket) throws IOException { Scanner sc = new Scanner(system.in); PrintWriter printwriter = null; OutputStream outputStream = null; BufferedReader bufferedReader = null; String choice; do { System.out.println("请您选择:1.老用户立即登录 2.新用户注册即玩n" + "请输入正确的数,输入0退出系统"); choice = sc.next(); System.out.println(choice); // 先传入玩家的操作选项 if (Integer.parseInt(choice) > 0 && Integer.parseInt(choice) 3 || Integer.parseInt(choice)

Server端(多线程)

package SocketS; import java.io.IOException; import java.net.ServerSocket; import java.net.socket; /** * 服务器 需要完成登录校验 ,注册校验 以及游戏抽卡 * @author Administrator * */ public class Server implements Runnable { Socket socket = null; public Server(Socket socket) { super(); this.socket = socket; } @Override public void run() { ServerDao serverDao = new ServerDao(); try { serverDao.Menu(socket); } catch (ClassNotFoundException e) { // Todo Auto-generated catch block e.printstacktrace(); } catch (IOException e) { // Todo Auto-generated catch block e.printstacktrace(); } } public static void main(String[] args) { ServerSocket serverSocket = null; Socket socket = null; try { serverSocket = new ServerSocket(11536); } catch (IOException e1) { e1.printstacktrace(); } try { while (true) { socket = serverSocket.accept(); new Thread(new Server(socket)).start(); } } catch (IOException e) { // Todo Auto-generated catch block e.printstacktrace(); } } }

ServerDao

package SocketS; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.net.socket; import java.util.Scanner; import Cards.Cards; import Cards.CardsDao; import User.UsersDao; /** * 服务的操作 * * @author Administrator * */ public class ServerDao { UsersDao ud = new UsersDao(); File file = new File("D:\Users.txt"); /** * 服务器接收Client发来的注册信息。并且将用户信息保存到文件中 * 暗 * @param socket * @return * @throws IOException * @throws ClassNotFoundException */ public boolean isRegistCheck(Scanner sc) throws IOException, ClassNotFoundException { String userStr = getobjectFromSocket(sc); // 将读取的User对象写入文件中 PrintWriter printWriter = new PrintWriter(new FileOutputStream(file,true)); printWriter.println(userStr); printWriter.flush(); return true; } /** * 检查登录信息是否正确 ,未完成!!! * * @param socket * @return 返回登录信息是否正确 * @throws IOException * @throws ClassNotFoundException */ public boolean isLoginCheck(Scanner sc) throws IOException, ClassNotFoundException { String userStr = getobjectFromSocket(sc); BufferedReader bufferedReader = new BufferedReader(new FileReader(file)); String str = bufferedReader.readLine(); while (str != null) { if (str.contains(userStr)) { return true; } str = bufferedReader.readLine(); } return false; } /** * 获取客户端提供的Users对象 * @param socket 传入的对应客户端网络套接字 * @param reader 已经包装的BufferedReader 类获取了网络输入流 * @return 返回Users对象 * @throws IOException * @throws ClassNotFoundException */ private String getobjectFromSocket(Scanner sc) throws IOException, ClassNotFoundException { // 读取网络流,获取客户端提供的Users对象 String str = null; System.out.println(sc.hasNextLine()); while (sc.hasNextLine()) { str = sc.nextLine(); return str; } return str; } private String getCards(String choiceCards, PrintWriter printWriter){ CardsDao cardsDao = new CardsDao(); if ("1".equals(choiceCards)) { Cards card = cardsDao.once(); return card.getName(); }else if ("2".equals(choiceCards)) {//10连 Cards[] cardsArr = cardsDao.tenTimes(); StringBuffer sb = new StringBuffer(); for (int i = 0; i

抽卡的具体实现(比较简单)

package Cards; import java.util.Random; /** * 抽卡类 * @author Administrator * */ public class CardsDao { public Cards once(){ double d = Math.random(); if (d>0 && d0.01 && d0.1){ Random random = new Random(); switch (random.nextInt(3)) { case 0: return new HeavenlyHound(); case 1: return new BlackFengHuang(); case 2: return new NineFox(); default: break; } } return null; } public Cards[] tenTimes(){ Cards[] cardsArr = new Cards[10]; for (int i = 0; i

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...