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("游戏结束");
}
}