java_猜拳小游戏——流之奥义

话不多说,直接上代码。

一、先来几个工具类下下饭。

1、输入操作限制型的工具类(TSUtility)

package MathDemo;

import java.util.Random;
import java.util.Scanner;
import java.util.regex.Pattern;

public class TSUtility {
    private static Scanner scanner = new Scanner(System.in);

    public static char readMenuSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }

    public static char readMenuSelectionPro() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false);
            c = str.charAt(0);
            if (c != '1' && c != '2' &&
                    c != '3' && c != '4' && c != '5') {
                System.out.print("选择错误,请重新输入:");
            } else break;
        }
        return c;
    }


    public static void readReturn() {
        System.out.print("按回车键继续...");
        readKeyBoard(100, true);
    }

    public static int readInt() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(2, false);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }

    public static int readstock() {
        int n;
        for (; ; ) {
            String str = readKeyBoard(6, false);
            try {
                n = Integer.parseInt(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }

    public static Double readDouble() {
        Double n;
        for (; ; ) {
            String str = readKeyBoard(6, false);
            try {
                n = Double.parseDouble(str);
                break;
            } catch (NumberFormatException e) {
                System.out.print("数字输入错误,请重新输入:");
            }
        }
        return n;
    }

    public static char readConfirmSelection() {
        char c;
        for (; ; ) {
            String str = readKeyBoard(1, false).toUpperCase();
            c = str.charAt(0);
            if (c == 'Y' || c == 'N') {
                break;
            } else {
                System.out.print("选择错误,请重新输入:");
            }
        }
        return c;
    }

    public static String readString(int limit, String defaultValue) {
        String str = readKeyBoard(limit, true);
        return str.equals("") ? defaultValue : str;
    }

    public static String readKeyBoard(int limit, boolean blankReturn) {
        String line = "";

        while (scanner.hasNextLine()) {
            line = scanner.nextLine();
            if (line.length() == 0) {
                if (blankReturn) return line;
                else continue;
            }

            if (line.length() < 1 || line.length() > limit) {
                System.out.print("输入长度(不大于" + limit + ")错误,请重新输入:");
                continue;
            }
            break;
        }

        return line;
    }

    public static void loadSpecialEffects() throws InterruptedException {
        System.out.println("请稍等:");
        for (int i1 = 1; i1 <= 100; i1++) {
            System.out.print("加载中:" + i1 + "%");
            Thread.sleep(new Random().nextInt(25) + 1);
            if (i1 == 100) {
                Thread.sleep(50);
            }
            System.out.print("\r");
        }
    }

    //把全为数字的字符串转换为int类型,并返回其数值
    public static int printInt(String x){
        Scanner sc = new Scanner(System.in);
        if(isNumberic(x)==true){
            int y = Integer.parseInt(x);
            return y;
        }else{
            while(true){
                System.out.print("你输入的值无意义! 请你重新输入: ");
                String num = sc.next();
                if(isNumberic(num)==true){
                    int y1 = Integer.parseInt(num);
                    return y1;
                }

            }
        }
    }

    //判断字符串是否全是数字,是返回true,否则返回false
    public static boolean isNumberic(String str) {
        //使用正则表达式进行判断是否全为数字
        Pattern pattern = Pattern.compile("[0-9]*");
        return pattern.matcher(str).matches();
    }
}

2、图片显示工具类(PayView)

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.io.File;

/*
 *生成二维码
 *下面代码只需要换一个图片即可
 *new PayView();//创建这个对象即可展示支付图片
 */

public class PayView extends JFrame{
    MyPanel mp=null;
    public PayView(){
        mp=new MyPanel();
        this.add(mp);
        this.setSize(1273, 809);
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        this.setVisible(true);
    }

    public static void main(String[] args){
        new PayView();
    }
}

class MyPanel extends JPanel{

    Image image=null;

    public void paint(Graphics g){
        try {
            image= ImageIO.read(new File("eighth\\src\\MathDemo\\name\\看了就要负责.jpg"));
            g.drawImage(image, 0, 0, 1273, 809, null);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 二、登录界面的功能

/*
登录界面
 */

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Random;
import java.util.Scanner;

public class loginView {
    public static final Scanner sc=new Scanner(System.in);
    public static int money=0;
    public static int count=1;

    //用户登录注册
    public void Login() throws InterruptedException, IOException {

        //循环判断
        boolean flag=true;

        //定义文件
        File f1;
        File f2;

        //集合
        Properties prop=new Properties();

        //循环控制
        while (flag){
            System.out.println("请输入你的账户&密码");
            System.out.print("账号:");
            String userName=sc.next();

            //文件路径初始化
            f1=new File("eighth\\src\\MathDemo\\name",userName);

            //判断文件存在与否
            if (!f1.exists()){
                System.out.println("你输入的账户信息不存在,请选择是否注册(y/n)。");
                char c=TSUtility.readConfirmSelection();
                if (c=='Y'){
                    System.out.print("账号为:");
                    String userName1=sc.next();

                    f2=new File("eighth\\src\\MathDemo\\name",userName1);

                    System.out.print("密码为:");
                    String password1=sc.next();

                    prop.setProperty("Password",password1);
                    prop.setProperty("Money", String.valueOf(money));
                    prop.setProperty("Count", String.valueOf(count));

                    FileWriter fw=new FileWriter(f2);
                    //集合到文件
                    prop.store(fw,"------UserInfo------");
                    fw.close();
                    TSUtility.loadSpecialEffects();
                    System.out.println("注册成功。");
                }else {
                    System.out.println("已取消注册,请问是否要退出系统(y/n)");
                    char c1=TSUtility.readConfirmSelection();
                    if (c1=='Y'){
                        System.exit(0);
                    }else {
                        System.out.println("请重新输入你的账户&密码");
                    }

                }
            }else {
                System.out.print("密码:");
                String pw=sc.next();
                FileReader fr=new FileReader(f1);
                prop.load(fr);
                fr.close();

                //判断是否正确
                if (prop.getProperty("Password").equals(pw)){
                    System.out.println(userName + "欢迎你! " +userName+ "您目前余额为:"
                            + prop.getProperty("Money") + "元,免费次数为:" + prop.getProperty("Count"));
                    flag = false;

                    //猜数小游戏,开始玩游戏
                    loginView.guessNumber(prop,f1);

                }else {
                    System.out.println("密码错误,请重新登录。");
                }
            }
        }
    }

    //猜数字游戏
    public static void guessNumber(Properties prop, File f1) throws IOException {

        Scanner sc = new Scanner(System.in);

        System.out.println("宇宙至尊游戏:猜数字(0-100)");
        System.out.println("开始!");

        while (true) {

            int count1 = Integer.parseInt(prop.getProperty("Count"));
            int money1 = Integer.parseInt(prop.getProperty("Money"));

            if (count1 <= 0 && money1 < 50) {
                System.out.println("余额不足,请问是否充值?(y/n)");
                char c = TSUtility.readConfirmSelection();
                if (c == 'Y') {
                    addMoney(prop, f1);
                } else {
                    System.out.println("已退出充值,白嫖的早点圆润地爪巴。");
                    break;
                }
            } else {
                Random r = new Random();
                //生成随机数
                int number = r.nextInt(101);
                System.out.println("测试使用:" + number);

                while (true) {
                    System.out.println("请输入你要猜的数字:");
                    int guessnumber = sc.nextInt();

                    if (guessnumber > number) {
                        System.out.println("你猜的数字" + guessnumber + "大了");
                    } else if (guessnumber < number) {
                        System.out.println("你猜的数字" + guessnumber + "小了");
                    } else {
                        System.out.println("恭喜你猜中了");
                        //判断是否还有游戏次数
                        if (count1 != 0) {
                            count1--; //次数减一
                            //改变集合中的count值
                            prop.setProperty("Count", String.valueOf(count1));
                        } else {
                            //判断是否有余额
                            if (money1 != 0) {
                                //设置使用金额50元玩一次
                                money1 -= 50;
                                //改变集合中的Money值
                                prop.setProperty("Money", String.valueOf(money1));
                            }
                        }
                        break;
                    }
                }
            }

            //集合中的内容写入到文件
            FileWriter fw = new FileWriter(f1);
            prop.store(fw, null);
            fw.close();

            System.out.println("继续玩? y/n");
            char c = TSUtility.readConfirmSelection();
            if (c == 'Y') {
                //重新获取一次值,为了保证获取到的是充值后的数据
                int count2 = Integer.parseInt(prop.getProperty("Count"));
                int money2 = Integer.parseInt(prop.getProperty("Money"));
                //判断是否有玩的条件
                if (count2 <= 0 && money2 < 50) {
                    System.out.println("余额不足,是否充值y/n");
                    char c1 = TSUtility.readConfirmSelection();
                    if (c1 == 'Y') {
                        //充值模块
                        addMoney(prop, f1);
                    } else {
                        System.out.println("已退出充值!");
                        break;
                    }
                }
            } else {
                System.out.println("已退出游戏!");
                break;
            }

        }
    }

    //充值中心
    private static void addMoney(Properties prop,File f1) throws IOException {
        while (true){
            System.out.println("¥¥¥¥ 充值系统 ¥¥¥¥");
            System.out.println("¥¥   充一百送5次   ¥¥");
            System.out.println("¥¥   充两百送12次  ¥¥");
            System.out.println("¥¥   充三百送18次  ¥¥");
            System.out.println("¥ 充五百及以上送31次! ¥");
            System.out.println("¥¥¥¥ 充值系统 ¥¥¥¥");
            System.out.println("请输入您的充值金额:");

            String s=sc.next();
            int money=TSUtility.printInt(s);

            while (true){
                if (money != 100 && money != 200 && money != 300 && money < 500){
                    System.out.println("输入金额错误!请重新输入:");
                    String s1 = sc.next();
                    int money1 = TSUtility.printInt(s1);
                    money = money1;
                } else {
                    prop.setProperty("Money", String.valueOf(money));
                    if (money==100){
                        prop.setProperty("Count", String.valueOf(5));
                    }else if (money == 200){
                        prop.setProperty("Count", String.valueOf(12));
                    }else if (money == 300){
                        prop.setProperty("Count", String.valueOf(18));
                    }else {
                        prop.setProperty("Count", String.valueOf(31));
                    }
                    FileWriter fw=new FileWriter(f1);
                    prop.store(fw,null);
                    fw.close();
                    System.out.println("充值成功!");
                    break;
                }
            }
            break;

        }
    }

    //用户修改
    public void revise() throws InterruptedException, IOException {

        Properties prop=new Properties();
        System.out.println("请输入你要修改的账户");
        String userName=sc.next();

        File file=new File("eighth\\src\\MathDemo\\name",userName);
        if (!file.exists()){
            System.out.println("你输入的账户信息不存在。");
        }else {
            FileReader fr=new FileReader(file);
            prop.load(fr);
            fr.close();

            //修改密码
            System.out.print("请输入你要修改的新密码(" + "(旧密码:"+prop.getProperty("Password")+")" + "):");
            String pw = sc.next();
            //修改集合中的数据
            prop.setProperty("Password", pw);

            //集合到文件
            FileWriter fw = new FileWriter(file);
            prop.store(fw, null);
            fw.close();
            System.out.println("修改密码成功!");
            System.out.println("当前账户:" + userName);
            System.out.println("当前密码:" + pw);
        }
    }
}

三、单独写的猜拳游戏类

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Random;
import java.util.Scanner;

public class HandGame {

    public static void handGame() throws IOException {
        System.out.println("规则如下:");
        System.out.println("1代表剪刀、2代表石头、3代表布。剪刀<石头<布,石头<布<剪刀,布<剪刀<石头");
        System.out.println("-------------------");
        FileWriter fw=new FileWriter("eighth\\src\\MathDemo\\name\\系统拳.txt");
        fw.write("1=剪刀\r\n");
        fw.write("2=石头\r\n");
        fw.write("3=布\r\n");
        fw.close();

        Properties prop=new Properties();
        prop.setProperty("1","剪刀");
        prop.setProperty("2","石头");
        prop.setProperty("3","布");

        while (true){
            Scanner sc=new Scanner(System.in);
            System.out.println("石头2、剪刀1、布3!!!给我比个手出来。laozi要数字。");
            int hand=sc.nextInt();

            Random r=new Random();
            int i = r.nextInt(3)+1;

            if (hand==1 && i==1){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("你居然跟系统拳打成平手?laji...");
            }else if (hand==1 && i==2){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("然后呢?你输了?ztmlaji...");
            }else if (hand==1 && i==3){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("这就赢了?啊tui,dtmlaji...");
            }else if (hand==2 && i==1){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("这就赢了?啊tui,dtmlaji...");
            }else if (hand==2 && i==2){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("你居然跟系统拳打成平手?laji...");
            }else if (hand==2 && i==3){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("然后呢?你输了?ztmlaji...");
            }else if (hand==3 && i==1){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("然后呢?你输了?ztmlaji...");
            }else if (hand==3 && i==2){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("这就赢了?啊tui,dtmlaji...");
            }else if (hand==3 && i==3){
                System.out.println("你出的是:"+prop.getProperty(String.valueOf(hand)));
                System.out.println("系统出的是:"+prop.getProperty(String.valueOf(i)));
                System.out.println("你居然跟系统拳打成平手?laji...");
            }

            System.out.println("-------------------");
            System.out.println("还想继续玩?傻子吧还玩? y/n");
            char c = TSUtility.readConfirmSelection();
            if (c != 'Y') {

                System.out.println("已退出游戏!(早该走了...)");
                break;
            }
        }
    }
}

四、以上就是全部代码,这个游戏就这样。

猜你喜欢

转载自blog.csdn.net/Lee0620/article/details/121348488