- 任务
- 完成人机猜拳互动游戏的开发
- 主要功能
- 选取对战角色
- 猜拳
- 记录分数
- 需求说明
- 分析业务
- 抽象出类、类的特征和行为
- 实现思路:
- 分析业务,抽象出类、类的特征和行为
下面给出运行结果及代码,供参考:
- User.class
package 猜拳小游戏;
import java.util.Scanner;
public class User {
private String Uname;
private int score;
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getUname() {
return Uname;
}
/*--人类选择角色--*/
public void Chose(){
Scanner sc = new Scanner(System.in);
System.out.println("请选择角色(1.海南黄花梨2.海南3.黄花梨)");
int no = sc.nextInt();
switch (no) {
case 1:
System.out.println("我选择的角色:1");
this.Uname="1";
break;
case 2:
System.out.println("我选择的角色:2");
this.Uname="2";
break;
case 3:
System.out.println("我选择的角色:3");
this.Uname="3";
break;
}
}
/*--人类选择拳法--*/
public int play(){
Scanner sc =new Scanner(System.in);
System.out.println("请选择拳法(1.剪刀2.石头3.布),也可输入1、2、3数字进行选择");
int no = sc.nextInt();
switch (no) {
case 1:
System.out.println("我选择拳法:1");
break;
case 2:
System.out.println("我选择拳法:2");
break;
case 3:
System.out.println("我选择拳法:3");
break;
}
return score;
}
}
- Computer
package 猜拳小游戏;
public class Computer {
private String Cname;
private int score = 0;
public String getCname() {
return Cname;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
/*--计算机选择角色--*/
public void Chose(){
int no = (int)(Math.random()*(3+1-1)+1);
switch (no) {
case 1:
System.out.println("计算机选择的角色是:海南黄花梨");
this.Cname="海南黄花梨";
break;
case 2:
System.out.println("计算机选择的角色是:海南");
this.Cname="海南";
break;
case 3:
System.out.println("计算机选择的角色是:黄花梨");
this.Cname="黄花梨";
break;
}
}
public int paly(){
int no = (int)(Math.random()*(3+1-1)+1);
switch (no) {
case 1:
System.out.println("计算机的拳法是:剪刀");
this.Cname="剪刀";
break;
case 2:
System.out.println("计算机的拳法是:石头");
this.Cname="石头";
break;
case 3:
System.out.println("计算机的拳法是:布");
this.Cname="布";
break;
}
return score;
}
}
- Game.java
package 猜拳小游戏;
import java.util.Scanner;
public class Game {
private User u = null;
private Computer c = null;
private int count;
Game(){
u = new User();
c = new Computer();
count = 0;
}
/*--进入游戏--*/
public void StartGame(){
Scanner sc = new Scanner(System.in);
System.out.println("-----------欢迎进入游戏世界-----------\n");
System.out.println(" ***************");
System.out.println(" ** 猜拳,开始 **");
System.out.println(" ***************\n");
System.out.println("出拳规则:1.剪刀2.石头3.布\n");
//电脑和人类选择角色
u.Chose();
System.out.println();
c.Chose();
System.out.println();
//开始游戏
System.out.println("要开始吗?(y/n)\n");
String str = sc.next();
while(str.equals("y")){
int per = u.play();//存放人类的出拳对应的数字
int com = c.paly();//存放电脑的出拳对应的数字
if(per == com){
System.out.println("结果:和局");
}
else if(per == 1 && com ==3 || per == 2 && com ==1 || per ==3 && per ==2){
System.out.println("结果(机器):"+u.getUname()+"你赢了");
u.setScore(u.getScore()+1);
}
else {
System.out.println("结果(机器):"+c.getCname()+"赢了");
c.setScore(c.getScore()+1);
}
count ++;
System.out.println("是否开始下一轮(y/n)\n");
str = sc.next();
}
sc.close();
//显示对战结果
ShowResult();
}
private void ShowResult() {
System.out.println("--------------------------------\n");
System.out.println("(机器)"+c.getCname()+" VS "+"(人)"+u.getUname());
System.out.println("最终比分:\t"+c.getScore()+" : "+u.getScore());//显示比分
System.out.println("对战次数:"+count+"次"); //显示对战次数
if(u.getScore() < c.getScore()){
System.out.println("结果:(机器)"+c.getCname()+"获胜");
}
else if(u.getScore() > c.getScore()){
System.out.println("结果:(人)"+u.getUname()+"获胜");
}
else {
System.out.println("结果:平局!!");
}
}
}
- testGame
package 猜拳小游戏;
/**
* 测试类
*/
public class testGame {
public static void main(String[] args) {
new Game().StartGame();
}
}