思想与实现:
创建四个类:
1.玩家类
2.pc类
3.游戏类
4.运行类
一 .首先创建一个玩家类 Ren类
(1)类中有两个属性用来记录玩家的名字和获胜次数 (name renjishu)
(2)类中还有两个方法分别用来 获取玩家名字 和 获取玩家出拳类型的方法(renname() renquan() )
class Ren{// 创建一个玩家类
String name;//用来接受玩家名字
int renjishu = 0;//用来记录玩家获胜次数
Scanner input = new Scanner(System.in);
public void renname(){ // 获取玩家 名字 方法
System.out.println("请输入玩家名字");
this.name = input.nextLine();
System.out.println("你选择了"+this.name+"进行对战");
}
public int renquan(){ //获取玩家 出拳类型 方法
System.out.println("玩家输入(1石头2剪刀3布)");
int renNum = input.nextInt();
switch (renNum){
case 1:{
System.out.println(this.name+"出的是石头");
break;
}
case 2:{
System.out.println(this.name+"出的是剪刀");
break;
}
case 3:{
System.out.println(this.name+"出的是布");
break;
}
}
return renNum;
}
}
二.然后在创建一个电脑类 PC类
(1)类中有两个属性用来记录pc的名字和获胜次数 (name pcjishu)
(2)类中还有两个方法分别用来 获取pc名字 和 获取pc出拳类型的方法(pcname() pcquan() )
class PC{//创建一个pc类
String name;
int pcjishu = 0;
Scanner input = new Scanner(System.in);
public void pcname(){ // 获取pc 名字 方法
System.out.println("请输入pc玩家名字 1钢铁侠2美国队战长3蜘蛛侠");
int a = input.nextInt();
switch (a){
case 1:{
this.name = "钢铁侠";
System.out.println("pc选择的是"+this.name+"进行战斗");
break;
}
case 2:{
this.name = "美国队长";
System.out.println("pc选择的是"+this.name+"进行战斗");
break;
}
case 3:{
this.name = "蜘蛛侠";
System.out.println("pc选择的是"+this.name+"进行战斗");
break;
}
}
}
public int pcquan(){// 获取pc 出拳类型 方法
int pcNum = (int)((Math.random()*3)+1);
switch (pcNum){
case 1:{
System.out.println(this.name+"出的是石头");
break;
}
case 2:{
System.out.println(this.name+"出的是剪刀");
break;
}
case 3:{
System.out.println(this.name+"出的是布");
break;
}
}
return pcNum;
}
}
三.在创建一个游戏类 Games类
(1) 类中有两个属性用来记录 局数和平局次数(jushu pingju)
(2) 类中new了两个对象(ren pc)
(3) 类中有两个方法(games() (核心方法)用来进行游戏 result() 用来打印计分板)
(4) y/n用来开始或结束游戏
(5) ren.renname();// 调用 renname()方法 用来获取 玩家名字
(6) pc.pcname();// 调用pc.name()方法 用来获取 pc名字
(7) 进入while循环 定义两个变量(rennum pcnum)来接受 ren.renquan()和 pc.pcquan() 返回的值
(8) 进行if 判断 判断 玩家获胜 或者 pc 获胜 或者 平局
(9) 提示是否结束游戏(n 结束 y继续) 如果按 n 输出 游戏结束,之后会询问是否打印输出计分 板,如果按 y 调用result() 方法输出计分板然后直接break结束循环
class Games{// 创建一个游戏类
int pingju = 0;// 记录平局次数
int jushu = 0;// 记录局数
Ren ren = new Ren();// 创建 Ren类 对象
PC pc = new PC();// 创建 Pc类 对象
Scanner input = new Scanner(System.in);
public void games(){
System.out.println("请输入是否开始游戏(y/n)");
String yn = input.nextLine();
if(yn.equals("y")){
System.out.println("规则(1石头2剪刀3布)");
ren.renname();// 调用 renname()方法
pc.pcname();// 调用pc.name()方法
System.out.println(ren.name+"VS"+pc.name);
while(true){
int rennum = ren.renquan();// 调用renquan()方法
int pcnum = pc.pcquan();// 调用pcquan()方法
if((rennum==1&&pcnum==2) || (rennum==2&&pcnum==3) ||(rennum==3&&pcnum==1)){
System.out.println(ren.name+"获胜");
ren.renjishu++;//记录玩家获胜次数
}else if((rennum==2&&pcnum==1) || (rennum==3&&pcnum==2) ||(rennum==1&&pcnum==3)){
System.out.println(pc.name+"获胜");
pc.pcjishu++;//记录pc获胜次数
}else{
System.out.println("平局");
this.pingju++;//记录平局次数
}
this.jushu++;// 记录局数
System.out.println("是否要继续游戏(y/n)");
yn = input.nextLine();
if(yn.equals("n")){
System.out.println("游戏结束!");
System.out.println("你是否输出执行结果(输出y/不输出按其他键)");
String f = input.nextLine();
if("y".equals(f)){
this.result();
break;
}else{
break;
}
}
}
}else if(yn.equals("n")){
System.out.println("哎呦,玩一局嘛");
}
}
public void result(){
System.out.println("-------------比赛结果---------------");
System.out.println(ren.name+"VS"+pc.name);
System.out.println(ren.name+"赢了"+ren.renjishu+"局");
System.out.println(pc.name+"赢了"+pc.pcjishu+"局");
System.out.println("比赛"+this.jushu+"局");
System.out.println("比赛的平局次数"+this.pingju+"次");
if(ren.renjishu>pc.pcjishu){
System.out.println(ren.name+"获胜");
}else if(pc.pcjishu>ren.renjishu){
System.out.println(pc.name+"获胜");
}else{
System.out.println("平局");
}
}
}
四.创建一个运行类 ComputerGames类
(1) 类中 new了一个对象 g
(2) g.games(); 调用games()方法
public class ComputerGames {
public static void main(String[] args){
Games g = new Games();
g.games();
}
}