实用类(和电脑玩猜拳游戏)

  • 1.制作剪刀石头布游戏
    *

  • 步骤:

    1. 计算机随机产生1-3之间数 1-剪刀 2-石头 3-布

    2. 要求用户选择 1-剪刀, 2-石头, 3-布

    3. 计算机自动判断输赢,显示结果

    4. 将结果存入d:/game/user.txt

    5. 用户下次登录,先展示以前战绩

  • 例如:

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

}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值