1.制作剪刀石头布游戏 *
步骤:
计算机随机产生1-3之间数 1-剪刀 2-石头 3-布
要求用户选择 1-剪刀, 2-石头, 3-布
计算机自动判断输赢,显示结果
将结果存入d:/game/user.txt
用户下次登录,先展示以前战绩
例如:
2017年8月30日 17:45
第1局 电脑:剪刀 用户:石头 胜
第2局 电脑:布 用户:石头 负
2017年8月31日 15:25
第1局 电脑:剪刀 用户:石头 胜
第2局 电脑:布 用户:石头 负
存储结果时,要判断文件是否存在,如不存在,要重新创建
要求:用户可以玩多次,每局结束后,询问用户是否继续建
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.util.Scanner; public class GuessGame { public String[] gameData={"剪刀","石头","布"}; /** * 产生电脑随机出拳数字 * @return */ public int getPCNumber(){ return (new Random()).nextInt(3)+1; } /** * 获取用户输入数字 * @return */ public int getUserNumber(){ Scanner sc=new Scanner(System.in); int n=sc.nextInt(); return n; } /** * 判断game结果 * @param userNumber * @param pcNumber * @return */ public String getGameResult(int userNumber,int pcNumber){ int result=userNumber-pcNumber; /** * 1 剪刀 2石头 3布 * -1,2 负 * 0平 * 1,-2胜 */ String resultString=""; if(result==0){ resultString="平"; }else if(result==-1||result==2){ resultString="负"; }else{ resultString="胜"; } return resultString; } public String getGameStartTime(){ Date date=new Date(); SimpleDateFormat sf=new SimpleDateFormat("yyyy年M月d日 HH:mm"); return sf.format(date); } public String readUserData(){ File f=new File("d:/game/user.txt"); if(!f.exists()){ return ""; } StringBuilder userData=new StringBuilder(); try { FileInputStream fis=new FileInputStream(f); byte[] data=new byte[1024]; int len; while((len=fis.read(data))!=-1){ userData.append(new String(data,0,len)); } fis.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return userData.toString(); } /** * 写入用户游戏数据 * @param userData */ public void writeUserGameData(String userData){ File f=new File("d:/game/user.txt"); if(!f.getParentFile().exists()){ f.getParentFile().mkdirs(); } try { FileOutputStream fos=new FileOutputStream(f,true); fos.write(userData.getBytes()); fos.flush(); fos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { GuessGame game=new GuessGame(); System.out.println("游戏开始。。。\n您的历史成绩是:"); System.out.println(game.readUserData()); System.out.println("1- 剪刀 2-石头 3-布"); String isGoon="y"; int gameCount=0; String gameStartTime=game.getGameStartTime(); System.out.println(gameStartTime); StringBuilder userData=new StringBuilder(gameStartTime); userData.append("\r\n"); do{ gameCount++; System.out.println("1- 剪刀 2-石头 3-布"); int pcNumber=game.getPCNumber(); System.out.println("请选择出拳"); int userNumber=game.getUserNumber(); String resultString=game.getGameResult(userNumber, pcNumber); StringBuilder outputString=new StringBuilder("第"); outputString.append(gameCount); outputString.append("局 电脑:"); outputString.append(game.gameData[pcNumber-1]); outputString.append(" 用户:"); outputString.append(game.gameData[userNumber-1]); outputString.append(" "); outputString.append(resultString); //"第1局 电脑:剪刀 用户:石头 胜"; System.out.println(outputString.toString()); userData.append(outputString.toString()); userData.append("\r\n"); System.out.println("是否继续y/n"); Scanner sc=new Scanner(System.in); isGoon= sc.next(); }while(!isGoon.equals("n")); game.writeUserGameData(userData.toString()); System.out.println("游戏结束"); } }