[code=Java]/*
* 游戏类
*/
package caiquan;
import java.util.*;
public class Game {
Scanner input = new Scanner(System.in);
Computer one = new Computer();//电脑类对象
Player two = new Player();//玩家类对象
String answer = "";//回答
public void youxi(){
System.out.println("-----------------欢 迎 进 入 游 戏 世 界-----------------\n\n");
System.out.println("\t\t ****************");
System.out.println("\t\t ** 猜拳,开始 **");
System.out.println("\t\t ****************\n\n");
do{
System.out.println("出拳规则:1.剪刀 2.石头 3.布");
System.out.print("请选择角色(1.刘备 2.孙权 3.曹操):");
int part = input.nextInt();
System.out.print("要开始吗?(y/n)");
answer = input.next();
}while(!answer.equals("y"));
}
public void start(){
do{
/*
* 是不是这里错了?
*/
System.out.print("请出拳:1.剪刀 2.石头 3.布 (输入相应数字):");
two.human();//玩家的类
one.com();//电脑的类
if((one.suiji()==1&&two.shuru()==2)||(one.suiji()==2&&two.shuru()==3)||(one.suiji()==3&&two.shuru()==1)){
System.out.println("你胜出");//判断输赢
}else if(one.suiji()==two.shuru()){
System.out.println("平局");
}else{
System.out.println("电脑胜出");
}
System.out.println("是否开始下一轮(y/n):");
answer = input.next();
}while(answer.equals("y"));
}
public void bijiao(){
//还没写的方法是用来控制输出的,但是在上面就卡主了
}
}/*
* 电脑类
*/
package caiquan;public class Computer {
public int suiji(){
int random = (int)(Math.random()*3)+1;
return random;
}
public void com(){
switch(suiji()){
case 1:
System.out.println("电脑出拳:剪刀");
break;
case 2:
System.out.println("电脑出拳:石头");
break;
case 3:
System.out.println("电脑出拳:布");
break;
}
}
}
/*
* 玩家类
*/
package caiquan;
import java.util.*;
public class Player {
Scanner input = new Scanner(System.in);
public int shuru(){
int num = input.nextInt();
return num;
}
public void human(){
switch(shuru()){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
}
}
}
/*
* 运行的主类
*/
package caiquan;
public class GameTest { /**
* @param SimpleM
*/
public static void main(String[] args) {
Game me = new Game();
me.youxi();
me.start();
}
}
code]朋友们啊,我错在哪里啊?为什么错呢?
* 游戏类
*/
package caiquan;
import java.util.*;
public class Game {
Scanner input = new Scanner(System.in);
Computer one = new Computer();//电脑类对象
Player two = new Player();//玩家类对象
String answer = "";//回答
public void youxi(){
System.out.println("-----------------欢 迎 进 入 游 戏 世 界-----------------\n\n");
System.out.println("\t\t ****************");
System.out.println("\t\t ** 猜拳,开始 **");
System.out.println("\t\t ****************\n\n");
do{
System.out.println("出拳规则:1.剪刀 2.石头 3.布");
System.out.print("请选择角色(1.刘备 2.孙权 3.曹操):");
int part = input.nextInt();
System.out.print("要开始吗?(y/n)");
answer = input.next();
}while(!answer.equals("y"));
}
public void start(){
do{
/*
* 是不是这里错了?
*/
System.out.print("请出拳:1.剪刀 2.石头 3.布 (输入相应数字):");
two.human();//玩家的类
one.com();//电脑的类
if((one.suiji()==1&&two.shuru()==2)||(one.suiji()==2&&two.shuru()==3)||(one.suiji()==3&&two.shuru()==1)){
System.out.println("你胜出");//判断输赢
}else if(one.suiji()==two.shuru()){
System.out.println("平局");
}else{
System.out.println("电脑胜出");
}
System.out.println("是否开始下一轮(y/n):");
answer = input.next();
}while(answer.equals("y"));
}
public void bijiao(){
//还没写的方法是用来控制输出的,但是在上面就卡主了
}
}/*
* 电脑类
*/
package caiquan;public class Computer {
public int suiji(){
int random = (int)(Math.random()*3)+1;
return random;
}
public void com(){
switch(suiji()){
case 1:
System.out.println("电脑出拳:剪刀");
break;
case 2:
System.out.println("电脑出拳:石头");
break;
case 3:
System.out.println("电脑出拳:布");
break;
}
}
}
/*
* 玩家类
*/
package caiquan;
import java.util.*;
public class Player {
Scanner input = new Scanner(System.in);
public int shuru(){
int num = input.nextInt();
return num;
}
public void human(){
switch(shuru()){
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
}
}
}
/*
* 运行的主类
*/
package caiquan;
public class GameTest { /**
* @param SimpleM
*/
public static void main(String[] args) {
Game me = new Game();
me.youxi();
me.start();
}
}
code]朋友们啊,我错在哪里啊?为什么错呢?
这两个方法调用重复了。导致在进行比较的时候你还得输入一个数值。
public class Player
{
Scanner input = new Scanner(System.in);
public int shuru()
{
num = input.nextInt();
return num;
}
public int getNum()
{
return num;
}
public void human()
{
switch(shuru())
{
case 1:
System.out.println("你出拳:剪刀");
break;
case 2:
System.out.println("你出拳:石头");
break;
case 3:
System.out.println("你出拳:布");
break;
}
}
private int num;
}
(one.suiji()==3&&two.getNum()==1))Game类中的比较用if((one.suiji()==1&&two.getNum()==2)||(one.suiji()==2&&two.getNum()==3)||
(one.suiji()==3&&two.getNum()==1))
这个就可以了
GuessGamer my = new GuessGamer("my");
GuessGamer computer = new GuessGamer("computer");
my.setGuessType(0);
computer.randomGuessType();
my.printCompareResult(computer);
}
}class GuessGamer { private String name;
private GuessType guessType;
private String[] compareResult; public GuessGamer(String name) {
this.name = name;
compareResult = new String[]{ name + " 输了", "平局", name + " 赢了" };
}
public void randomGuessType() {
guessType = GuessType.randomGuessType();
}
public void setGuessType(int value) {
guessType = GuessType.chooseGuessType(value);
}
public int compare(GuessGamer guessGamer) {
return guessType.compare(guessGamer.guessType);
}
public String toString() {
return name + " 出的是: " + guessType.getName();
}
public void printCompareResult(GuessGamer guessGamer) {
System.out.println(toString());
System.out.println(guessGamer.toString());
int result = compare(guessGamer);
System.out.println(compareResult[result + 1]);
}
}class GuessType { private int value;
private String name; private final static GuessType[] guessTypes = new GuessType[3]; public final static GuessType ROCK = new GuessType("石头", 0);
public final static GuessType SCISSORS = new GuessType("剪刀", 1);
public final static GuessType PAPER = new GuessType("布", 2); private static Random ran = new Random(); private GuessType(String name, int value) {
this.value = value;
this.name = name;
guessTypes[value] = this;
} public static GuessType randomGuessType() {
return guessTypes[ran.nextInt(3)];
}
public static GuessType chooseGuessType(int value) {
if(value < 0) {
return randomGuessType();
}
return guessTypes[value % 3];
} public int compare(GuessType other) {
if(value == other.value) {
return 0;
}
return (value + 1) % 3 == other.value ? 1 : -1;
} public String getName() {
return name;
} public int getValue() {
return value;
}
}
Computer类 也增加了一个getValue()方法;
public class Computer
{
public int suiji()
{
value = (int)(Math.random()*3)+1;
return value;
}
public int getValue()
{
return value;
}
public void com()
{
switch(suiji())
{
case 1:
System.out.println("电脑出拳:剪刀");
break;
case 2:
System.out.println("电脑出拳:石头");
break;
case 3:
System.out.println("电脑出拳:布");
break;
}
}
private int value;
}
而比较变成了if((one.getValue()==1&&two.getNum()==2)||(one.getValue()==2&&two.getNum()==3)||
(one.getValue()==3&&two.getNum()==1))
{
System.out.println("你胜出");//判断输赢
}
else if(one.getValue()==two.getNum())
{
System.out.println("平局");
}
else
{
System.out.println("电脑胜出");
}
不好意思,我是个初学者,考虑事情不周到,导致这么多次发贴,打扰了。
本来早就做好了,但csdn 不让频繁的发贴,导致这么久才贴出来。这下完全可以了,我保证。呵呵