猜數小游戲(IO流實作,對IO流進行加強理解運用)
文章目錄
- 猜數小游戲(IO流實作,對IO流進行加強理解運用)
- 前言
- 一、設計簡單的猜數游戲
- 1.游戲內容
- 二、猜數游戲邏輯及實作
- 1.需要實作的邏輯
- 2.代碼實作
- 3.需要注意的問題
- 三、猜拳小游戲
- 1.代碼實作
- 2.代碼解讀
- 四、修改密碼
- 總結
前言
猜數小游戲的設計比較簡單,下圖是設計的邏輯代碼塊,其中的info是用戶的資訊,里面的資訊主要有密碼,賬戶余額,以及次數,用IO流的相關知識完成實作的,其中CMUtility以及TSUtility是自己寫的工具包,可以不用管,

一、設計簡單的猜數游戲
1.游戲內容
隨機生成數字,讓我們去猜,如果大的話就提示(你輸入的數字大了),如果輸入的數字比猜的數字小的話就提示(你輸入的數字小了),如果相等的話就提示(你真他娘的是個天才,猜對了)如此的進行猜測數字,直到猜對為止
package TheGamePackage;
import java.util.Random;
import java.util.Scanner;
import static TheGamePackage.TSUtility.readKeyBoard;
public class Game {
public static void gamenumber(){
Scanner sc=new Scanner(System.in);
Random r=new Random();
boolean a=true;
int i = r.nextInt(100) + 1;
while (a){
System.out.println("測驗數字:"+i);
System.out.println("請輸入你要猜的數字(1-100)");
int i1 = readInt();
if (i1>100||i1<1){
System.out.println("你的輸入有誤");
}else if (i1>i){
System.out.println("你輸入的數字大了");
}else if (i1<i){
System.out.println("你輸入的數字小了");
}else{
System.out.println("你真他娘的是個天才,猜的數字為:"+i);
a=false;
}
}
}
public static int readInt() {
int n;
for (; ; ) {
String str = readKeyBoard(3, false);
try {
n = Integer.parseInt(str);
break;
} catch (NumberFormatException e) {
System.out.print("數字輸入錯誤,請重新輸入:");
}
}
return n;
}
}
二、猜數游戲邏輯及實作
1.需要實作的邏輯
首先是登陸賬戶,如果沒有賬戶的話就創建賬戶,然后用賬戶以及密碼去登陸賬戶,新賬戶有一次的免費游玩的機會,如果機會用完就會提示是否充值,如果不充值的話就是退出游戲,如果充值的話就會的到免費贈送的次數以及自己充值的金錢,然后繼續游玩,賬戶的資訊里面是有金錢數以及密碼和次數的變化的,整個程序用IO流實作的,
2.代碼實作
main代碼
package TheGamePackage;
import java.io.*;
import java.util.*;
public class GamePlay {
public static void main(String[] args) throws IOException{
Menu();
}
public static void Menu() throws IOException {
boolean b=true;
while (b){
System.out.println("1.登陸賬號----->開始猜數游戲");
System.out.println("2.修改密碼");
System.out.println("3.猜拳小游戲");
System.out.println("4.贊助作者");
System.out.println("5.退出游戲");
int a= CMUtility.readMenuSelection();
switch (a){
case '1':
Log();
break;
case '2':
change();
break;
case '3':
guessmethod();
break;
case '4':
new PayView();
break;
case '5':
System.out.println("確定退出(Y/y),再考慮一下(N/n)");
char c = CMUtility.readConfirmSelection();
if (c=='Y'||c=='y'){
System.out.println("感謝使用,拜拜");
b=false;
System.exit(0);
}
}
}
}
創建一個guessmethod類
public static void guessmethod() throws IOException {
Scanner sc=new Scanner(System.in);
Random r=new Random();
//系統自動出的
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("石頭");
arrayList.add("剪刀");
arrayList.add("布");
//我出的
System.out.println("請輸入你要出的(石頭,剪刀,布)");
String s = TSUtility.readKeyBoard(2, false);
if (!s.equals("石頭")&&!s.equals("剪刀")&&!s.equals("布")){
System.out.println("你的輸入有誤");
guessmethod();
}else {
int i = r.nextInt(3);
if (arrayList.get(i).equals("石頭")&&s.equals("石頭")){
System.out.println("平局");
}else if (arrayList.get(i).equals("石頭")&&s.equals("剪刀")){
System.out.println("很遺憾,輸了");
}else if (arrayList.get(i).equals("石頭")&&s.equals("布")){
System.out.println("恭喜你,贏了");
}else if (arrayList.get(i).equals("剪刀")&&s.equals("石頭")){
System.out.println("恭喜你,贏了");
}else if (arrayList.get(i).equals("剪刀")&&s.equals("剪刀")){
System.out.println("平局");
}else if (arrayList.get(i).equals("剪刀")&&s.equals("布")){
System.out.println("很遺憾,輸了");
}else if (arrayList.get(i).equals("布")&&s.equals("石頭")){
System.out.println("很遺憾,輸了");
}else if (arrayList.get(i).equals("布")&&s.equals("剪刀")){
System.out.println("恭喜你,贏了");
}else if (arrayList.get(i).equals("布")&&s.equals("布")){
System.out.println("平局");
}
System.out.println("繼續玩?y/n");
char c = CMUtility.readConfirmSelection();
if (c=='Y'||c=='y'){
guessmethod();
}else {
Menu();
}
}
}
創建一個Log類
public static void Log() throws IOException{
Scanner sc=new Scanner(System.in);
System.out.println("請輸入你的賬號(最多六位)");
String name=TSUtility.readKeyBoard(6,false);
File f2=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info");
File[] files = f2.listFiles();
int ren=0;
int mianfei=1;
for (File f:files
) {
if (f.getName().equals(name)){
ren++;
}
}
if (ren==0){
System.out.println("沒有你的賬戶,請注冊");
System.out.println("請輸入你的密碼");
int i = CMUtility.readInt();
Properties p1=new Properties();
p1.setProperty("money","0");
p1.setProperty("password",String.valueOf(i));
p1.setProperty("count",String.valueOf(mianfei));
File f1=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
BufferedWriter bu1=new BufferedWriter(new FileWriter(f1));
p1.store(bu1,null);
}else {
File f3=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
BufferedReader bu2=new BufferedReader(new FileReader(f3));
Properties p2=new Properties();
p2.load(bu2);
bu2.close();
System.out.println("請輸入你的密碼");
int i1 = CMUtility.readInt();
if (p2.getProperty("password").equals(String.valueOf(i1))){
youwan1(name);
} else {
System.out.println("密碼錯誤");
Log();
}
}
}
創建一個youwan1類
public static void youwan1(String name) throws IOException{
File f3=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
BufferedReader bu2=new BufferedReader(new FileReader(f3));
Properties p2=new Properties();
p2.load(bu2);
bu2.close();
Set<String> strings = p2.stringPropertyNames();
System.out.println("歡迎"+name);
System.out.println("你的余額為:"+p2.getProperty("money")+"元");
System.out.println("你的游玩次數還有"+p2.getProperty("count")+"次");
String count1= p2.getProperty("count");
String money = p2.getProperty("money");
if (Integer.parseInt(count1)>0){
System.out.println("繼續游玩?y/n");
char c = CMUtility.readConfirmSelection();
if (c=='Y'||c=='y'){
Game.gamenumber();
BufferedReader bu3=new BufferedReader(new FileReader(f3));
Properties p3=new Properties();
p3.load(bu3);
int cishu = Integer.parseInt(p3.getProperty("count"));
cishu--;
Properties p4=new Properties();
for (String s1:strings
) {
if (s1.equals("count")){
p4.setProperty(s1,String.valueOf(cishu));
}else {
p4.setProperty(s1,p3.getProperty(s1));
}
}
bu3.close();
BufferedWriter bu4=new BufferedWriter(new FileWriter(f3));
p4.store(bu4,null);
bu4.close();
}else {
Menu();
}
youwan1(name);
} else if (Integer.parseInt(count1)<=0&& Integer.parseInt(money)==0){
System.out.println("你的余額以及次數不足");
System.out.println("繼續游玩?y/n");
char c = CMUtility.readConfirmSelection();
if (c=='Y'||c=='y'){
chongzhi(name);
System.out.println("繼續游玩?y/n");
char c2 = CMUtility.readConfirmSelection();
if (c2=='Y'||c2=='y'){
Game.gamenumber();
BufferedReader bu3=new BufferedReader(new FileReader(f3));
Properties p3=new Properties();
p3.load(bu3);
int cishu = Integer.parseInt(p3.getProperty("count"));
cishu--;
Properties p4=new Properties();
for (String s1:strings
) {
if (s1.equals("count")){
p4.setProperty(s1,String.valueOf(cishu));
}else {
p4.setProperty(s1,p3.getProperty(s1));
}
}
bu3.close();
BufferedWriter bu4=new BufferedWriter(new FileWriter(f3));
p4.store(bu4,null);
bu4.close();
youwan1(name);
}else {
Menu();
}
}else {
Menu();
}
}else if (Integer.parseInt(count1)<=0&& Integer.parseInt(money)>0) {
System.out.println("繼續玩y/n?");
char c = CMUtility.readConfirmSelection();
if (c == 'Y' || c == 'y') {
System.out.println("繼續玩y/n?注意100一次喲");
char c4 = CMUtility.readConfirmSelection();
if (c4 == 'Y' || c4 == 'y') {
youwan2(name);
youwan1(name);
} else {
Menu();
}
}
}
}
創建一個youwan2類
public static void youwan2(String name) throws IOException{
//當沒有次數是消費錢
File f3=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
BufferedReader bu2=new BufferedReader(new FileReader(f3));
Properties p2=new Properties();
p2.load(bu2);
bu2.close();
Set<String> strings = p2.stringPropertyNames();
Game.gamenumber();
BufferedReader bu3=new BufferedReader(new FileReader(f3));
Properties p3=new Properties();
p3.load(bu3);
int cishu = Integer.parseInt(p3.getProperty("money"));
cishu=cishu-100;
Properties p4=new Properties();
for (String s1:strings
) {
if (s1.equals("money")){
p4.setProperty(s1,String.valueOf(cishu));
}else {
p4.setProperty(s1,p3.getProperty(s1));
}
}
bu3.close();
BufferedWriter bu4=new BufferedWriter(new FileWriter(f3));
p4.store(bu4,null);
bu4.close();
}
創建一個zhongzhi類
public static void chongzhi(String name) throws IOException{
File f1=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
System.out.println("余額不足,是否充值y/n");
char c1 = CMUtility.readConfirmSelection();
if (c1=='Y'||c1=='y'){
System.out.println("充值100送5次");
System.out.println("充值200送7次");
System.out.println("充值300送8次");
System.out.println("充值400送9次");
System.out.println("充值500送15次");
System.out.println("請輸入你要充值的金額");
int i = CMUtility.readInt();
if (i!=100&&i!=200&&i!=300&&i!=400&&i!=500){
System.out.println("金額輸入錯誤");
chongzhi(name);
}else if (i==100){
BufferedReader bu2=new BufferedReader(new FileReader(f1));
Properties p2=new Properties();
p2.load(bu2);
Set<String> names = p2.stringPropertyNames();
Properties p1=new Properties();
bu2.close();
for (String s:names
) {
if (s.equals("count")){
p1.setProperty(s,String.valueOf(5));
}else{
p1.setProperty(s,p2.getProperty(s));
}
}
p1.setProperty("money","100");
BufferedWriter bu1=new BufferedWriter(new FileWriter(f1));
p1.store(bu1,null);
bu1.close();
}else if (i==200){
BufferedReader bu3=new BufferedReader(new FileReader(f1));
Properties p3=new Properties();
p3.load(bu3);
Set<String> names = p3.stringPropertyNames();
Properties p4=new Properties();
bu3.close();
for (String s:names
) {
if (s.equals("count")){
p4.setProperty(s,String.valueOf(7));
}else{
p4.setProperty(s,p3.getProperty(s));
}
}
p4.setProperty("money","200");
BufferedWriter bu1=new BufferedWriter(new FileWriter(f1));
p4.store(bu1,null);
bu1.close();
}else if (i==300){
BufferedReader bu2=new BufferedReader(new FileReader(f1));
Properties p2=new Properties();
p2.load(bu2);
Set<String> names = p2.stringPropertyNames();
Properties p1=new Properties();
bu2.close();
for (String s:names
) {
if (s.equals("count")){
p1.setProperty(s,String.valueOf(8));
}else{
p1.setProperty(s,p2.getProperty(s));
}
}
p1.setProperty("money","300");
BufferedWriter bu1=new BufferedWriter(new FileWriter(f1));
p1.store(bu1,null);
bu1.close();
}else if (i==400){
BufferedReader bu2=new BufferedReader(new FileReader(f1));
Properties p2=new Properties();
p2.load(bu2);
Set<String> names = p2.stringPropertyNames();
Properties p1=new Properties();
bu2.close();
for (String s:names
) {
if (s.equals("count")){
p1.setProperty(s,String.valueOf(9));
}else{
p1.setProperty(s,p2.getProperty(s));
}
}
p1.setProperty("money","400");
BufferedWriter bu1=new BufferedWriter(new FileWriter(f1));
p1.store(bu1,null);
bu1.close();
}else if (i==500){
BufferedReader bu2=new BufferedReader(new FileReader(f1));
Properties p2=new Properties();
p2.load(bu2);
Set<String> names = p2.stringPropertyNames();
Properties p1=new Properties();
bu2.close();
for (String s:names
) {
if (s.equals("count")){
p1.setProperty(s,String.valueOf(15));
}else{
p1.setProperty(s,p2.getProperty(s));
}
}
p1.setProperty("money","500");
BufferedWriter bu1=new BufferedWriter(new FileWriter(f1));
p1.store(bu1,null);
bu1.close();
}
}else {
Menu();
}
}
以上就是具體的代碼的實作
3.需要注意的問題
需要進行條件的判斷
1.當次數=0且余額!=0時就要判斷是否用余額去玩耍,需要規定多少錢玩一次,
2.當次數=0且余額=0是就要判斷是否進行充值,充值的時候就要注意規定的充值金額,其余的金額無法充值,
3.當次數!=0時就正常的玩耍
三、猜拳小游戲
1.代碼實作
public static void guessmethod() throws IOException {
Scanner sc=new Scanner(System.in);
Random r=new Random();
//系統自動出的
ArrayList<String> arrayList=new ArrayList<>();
arrayList.add("石頭");
arrayList.add("剪刀");
arrayList.add("布");
//我出的
System.out.println("請輸入你要出的(石頭,剪刀,布)");
String s = TSUtility.readKeyBoard(2, false);
if (!s.equals("石頭")&&!s.equals("剪刀")&&!s.equals("布")){
System.out.println("你的輸入有誤");
guessmethod();
}else {
int i = r.nextInt(3);
if (arrayList.get(i).equals("石頭")&&s.equals("石頭")){
System.out.println("平局");
}else if (arrayList.get(i).equals("石頭")&&s.equals("剪刀")){
System.out.println("很遺憾,輸了");
}else if (arrayList.get(i).equals("石頭")&&s.equals("布")){
System.out.println("恭喜你,贏了");
}else if (arrayList.get(i).equals("剪刀")&&s.equals("石頭")){
System.out.println("恭喜你,贏了");
}else if (arrayList.get(i).equals("剪刀")&&s.equals("剪刀")){
System.out.println("平局");
}else if (arrayList.get(i).equals("剪刀")&&s.equals("布")){
System.out.println("很遺憾,輸了");
}else if (arrayList.get(i).equals("布")&&s.equals("石頭")){
System.out.println("很遺憾,輸了");
}else if (arrayList.get(i).equals("布")&&s.equals("剪刀")){
System.out.println("恭喜你,贏了");
}else if (arrayList.get(i).equals("布")&&s.equals("布")){
System.out.println("平局");
}
System.out.println("繼續玩?y/n");
char c = CMUtility.readConfirmSelection();
if (c=='Y'||c=='y'){
guessmethod();
}else {
Menu();
}
}
}
2.代碼解讀
其實這個很簡單,沒有用到IO流的相關的知識,就是把剪刀,石頭,布,放在List的集合中,然后隨機的取出與自己鍵盤輸入的進行比較
四、修改密碼
首先時判斷是否有賬戶,如果有的話就進行密碼的修改,如果,沒有的話就無法修改
public static void change()throws IOException{
System.out.println("請輸入你要修改的賬號名(最多六位)");
String name=TSUtility.readKeyBoard(6,false);
File f1=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
//File f2=new File("E:\\javawork\\dierguan\\src\\TheGamePackage\\Info",name);
if (!f1.exists()){
System.out.println("賬戶不存在");
System.out.println("繼續修改y/n?");
char c = CMUtility.readConfirmSelection();
if (c == 'Y' || c == 'y') {
change();
} else {
Menu();
}
}else {
BufferedReader bu1=new BufferedReader(new FileReader(f1));
Properties p1=new Properties();
p1.load(bu1);
System.out.println("請輸入你的新密碼");
int i = TSUtility.readInt();
Set<String> names = p1.stringPropertyNames();
Properties p2=new Properties();
for (String s:names
) {
if (s.equals("password")){
p2.setProperty(s,String.valueOf(i));
}else {
p2.setProperty(s,p1.getProperty(s));
}
}
BufferedWriter bu2=new BufferedWriter(new FileWriter(f1));
p2.store(bu2,null);
bu1.close();
bu2.close();
}
}
總結
IO流的相關知識我已經在上一篇的博客中進行了總結,這里是對IO流的相關的知識進行運用,對IO流的相關知識更加的牢固
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298744.html
標籤:其他
上一篇:神奇又簡單的抽卡游戲c++
