书本上JAVA人机猜拳代码
2015-06-08 11:03
351 查看
这个是我在书上自己抄着来试试看的,自己写话,估计没这个能力
不过有个问题,要是用户输入的不是1-3的数字而是其他的,有没有其他办法能让额外的数字也转化为1-3啊?
import java.util.Scanner;
abstract class Player{
String name;
int score;
public Player(){
name="匿名";
score=0;
}
public abstract int showFist();
}
//User
class Person extends Player{
public int showFist(){
Scanner input=new Scanner(System.in);
System.out.print("\n请出拳: 1剪刀 2石头 3布 (输入相应数字) :");
int show=input.nextInt();
switch(show){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
}
return show;
}
}
//Computer
class Computer extends Player{
public int showFist(){
int show=(int)(Math.random()*10)%3+1;
switch(show){
case 1:
System.out.println(name+"出拳:剪刀");
break;
case 2:
System.out.println(name+"出拳:石头");
break;
case 3:
System.out.println(name+"出拳:布");
break;
}
return show;
}
}
// Game
class Game{
Person person;
Computer computer;
int count; //对战次数
//初始化
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
//开始游戏
public void startGame(){
System.out.println("-----------欢迎进入游戏世界-------------\n");
System.out.println("\n\t\t*****************");
System.out.println("\t\t猜拳,开始 **");
System.out.println("\t\t********************");
System.out.println("\n\n出拳规则:1剪刀 2石头 3布");
/*选择对方角色*/
System.out.print("请选择角色(1龙珠 2悟空 3BB):");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
if(role==1){
computer.name="龙珠";
}else if(role==2){
computer.name="悟空";
}else if(role==3){
computer.name="BB";
}
System.out.print("\n 要开始吗?(y/n)");
String con=input.next();
int perFist; //用户出拳
int compFist; //计算机出拳
while(con.equals("y")){
perFist=person.showFist();
compFist=computer.showFist();
//裁决
if((perFist==1&&compFist==1)||
(perFist==2&&compFist==2)||
(perFist==3&&compFist==3)){
System.out.println("结果:和局,再来一局吧!\n");
}else if((perFist==1 && compFist==3)||
(perFist==2 && compFist==1)||
(perFist==3 && compFist== 2)){
System.out.println("结果:恭喜,你赢了!");
person.score++;
}else{
System.out.println("结果:你输了!");
computer.score++;
}
count++;
System.out.print("\n是否开始下一轮(y/n):");
con=input.next();
}
showResult();
}
//显示比赛结果
public void showResult(){
//显示最后结果
System.out.println("--------------------------------------------");
System.out.println(computer.name+"VS"+person.name);
System.out.println("对战次数:"+count);
int result=calcResult();
if(result==1){
System.out.println("结果:打开平手");
}else if(result==2){
System.out.println("结果:恭喜");
}else{
System.out.println("结果:你输了!下局再来");
}
System.out.println("--------------------------------------------");
}
//计算比赛结果
public int calcResult(){
if(person.score==computer.score){
return 1;
}else if(person.score>computer.score){
return 2;
}else{
return 3;
}
}
}
public class Demo{
public static void main(String args[]){
Game game=new Game();
game.initial();
game.startGame();
}
}
还在学习中,所以以上的代码都是写在Demo.java文件中,暂时还不会分开不同java文件来写.....
不过有个问题,要是用户输入的不是1-3的数字而是其他的,有没有其他办法能让额外的数字也转化为1-3啊?
import java.util.Scanner;
abstract class Player{
String name;
int score;
public Player(){
name="匿名";
score=0;
}
public abstract int showFist();
}
//User
class Person extends Player{
public int showFist(){
Scanner input=new Scanner(System.in);
System.out.print("\n请出拳: 1剪刀 2石头 3布 (输入相应数字) :");
int show=input.nextInt();
switch(show){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
}
return show;
}
}
//Computer
class Computer extends Player{
public int showFist(){
int show=(int)(Math.random()*10)%3+1;
switch(show){
case 1:
System.out.println(name+"出拳:剪刀");
break;
case 2:
System.out.println(name+"出拳:石头");
break;
case 3:
System.out.println(name+"出拳:布");
break;
}
return show;
}
}
// Game
class Game{
Person person;
Computer computer;
int count; //对战次数
//初始化
public void initial(){
person=new Person();
computer=new Computer();
count=0;
}
//开始游戏
public void startGame(){
System.out.println("-----------欢迎进入游戏世界-------------\n");
System.out.println("\n\t\t*****************");
System.out.println("\t\t猜拳,开始 **");
System.out.println("\t\t********************");
System.out.println("\n\n出拳规则:1剪刀 2石头 3布");
/*选择对方角色*/
System.out.print("请选择角色(1龙珠 2悟空 3BB):");
Scanner input=new Scanner(System.in);
int role=input.nextInt();
if(role==1){
computer.name="龙珠";
}else if(role==2){
computer.name="悟空";
}else if(role==3){
computer.name="BB";
}
System.out.print("\n 要开始吗?(y/n)");
String con=input.next();
int perFist; //用户出拳
int compFist; //计算机出拳
while(con.equals("y")){
perFist=person.showFist();
compFist=computer.showFist();
//裁决
if((perFist==1&&compFist==1)||
(perFist==2&&compFist==2)||
(perFist==3&&compFist==3)){
System.out.println("结果:和局,再来一局吧!\n");
}else if((perFist==1 && compFist==3)||
(perFist==2 && compFist==1)||
(perFist==3 && compFist== 2)){
System.out.println("结果:恭喜,你赢了!");
person.score++;
}else{
System.out.println("结果:你输了!");
computer.score++;
}
count++;
System.out.print("\n是否开始下一轮(y/n):");
con=input.next();
}
showResult();
}
//显示比赛结果
public void showResult(){
//显示最后结果
System.out.println("--------------------------------------------");
System.out.println(computer.name+"VS"+person.name);
System.out.println("对战次数:"+count);
int result=calcResult();
if(result==1){
System.out.println("结果:打开平手");
}else if(result==2){
System.out.println("结果:恭喜");
}else{
System.out.println("结果:你输了!下局再来");
}
System.out.println("--------------------------------------------");
}
//计算比赛结果
public int calcResult(){
if(person.score==computer.score){
return 1;
}else if(person.score>computer.score){
return 2;
}else{
return 3;
}
}
}
public class Demo{
public static void main(String args[]){
Game game=new Game();
game.initial();
game.startGame();
}
}
还在学习中,所以以上的代码都是写在Demo.java文件中,暂时还不会分开不同java文件来写.....
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统