先建立个Game包
然后我做的是分了5个类来做的
TestStartGuess 类
package com.game.guess
public class TestStartGuess {
/**
* 程序入口
*/
public static void main(String[] args) {
Game game=new Game()
game.initial()
game.startGame()
}
}
2.Person 类
package com.game.guess
import java.util.Scanner
/**
* 用户类
*阶段1完成
* @param <Scanner>
*/
public class Person {
String name ="匿名"//名字
int score =0//积分
/**
* 出拳
*@return出拳结果:1.剪刀 2.石头 3.布
*/
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
}
}
3.Computer 类
package com.game.guess
/**
*计算机类
*阶段2完成
*/
public class Computer{
String name="电脑"//名字
int score = 0//积分
/**
*出拳
*@return 出拳结果:1.剪刀 2.石头 3.布
*/
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
}
}
4.Game 类
package com.game.guess
import java.util.Scanner
/**
* 游戏类类完全版
* 阶段7:功能扩展
* @param <computer>
*
*/
public class Game<computer>{
Person person//甲方
Computer computer //乙方
int count//对战次数
/**
* 初始化
*/
public void initial(){
person=new Person()
computer=new Computer()
count=0
}
/**
* 开始游戏
*/
@SuppressWarnings("resource")
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.布")
Scanner input=new Scanner(System.in)
String exit="n"//退出系统
do{
initial()//初始化
/*选择对方角色*/
System.out.print("请选择对方角色:(1:刘备,2:孙权,3:曹操):")
int role=input.nextInt()
if(role==1){
computer.name="刘备"
}else if(role==2){
computer.name="孙权"
}else if(role==3){
computer.name="曹操"
}
//扩展功能1:输入用户姓名
/*输入用户姓名*/
System.out.print("请输入你的姓名:")
person.name=input.next()
System.out.println(person.name+"VS"+computer.name+"对战\n")
//扩展功能1结束
System.out.print("要开始吗?(y/n)")
String start=input.next()//开始每一局游戏
int perFist//用户出的拳
int compFist//计算机出的拳
while(start.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("结果说:^_^,你输了,真笨!\n") //计算机赢
computer.score++
}
count++
System.out.println("\n是否开始下一轮(y/n):")
start=input.next()
}
/*显示结果*/
showResult()
//扩展功能3:循环游戏,知道退出系统
System.out.print("\n要开始下一局吗?(y/n):")
exit=input.next()
System.out.println()
//扩展功能3结束
}while(!exit.equals("n"))
System.out.println("系统退出!")
}
/**
* 显示比赛结果
*/
public void showResult(){
/*显示对战次数*/
System.out.println("-------------------------------")
System.out.println(computer.name+"VS"+person.name)
System.out.println("对战次数:"+count)
//扩展功能2:显示最终的得分
System.out.println("\n姓名\t得分")
System.out.println(person.name+"\t"+person.score)
System.out.println(computer.name+"\t"+computer.score+"\n")
//扩展功能2结束
/*显示对战结果*/
int result=calcResult()
if(result==1){
System.out.println("结果:打成平手,下次再和你一分高下!")
}else if(result==2){
System.out.println("结果:恭喜恭喜!") //用户获胜
}else{
System.out.println("结果:呵呵,笨笨,下次加油啊!") //计算机获胜
}
System.out.println("--------------------------------")
}
/**
* 计算比赛结果
* @return1:战平; 2:用户赢; 3:电脑赢
*/
public int calcResult(){
if(person.score==computer.score){
return 1//战平
}else if(person.score>computer.score){
return 2//用户赢
}else{
return 3//电脑赢
}
}
}
5.Start 类
package com.game.guess
public class StartGuess {
public static void main (String[] args){
Game c = new Game()
c.initial()
c.startGame()
}
}
然后编译执行就OK了
希望能帮到你
Java实现猜拳游戏的核心在于电脑随机数的生成,Java中的随机数生成方法是:首先引入包 import java.util.* 然后 int r=new Random().nextInt(3) (nextInt中的数字三代表随机数生成的个数,从零开始)
所以在猜拳的输入中需要有0、1、2三个数字代替,如果要输入汉字,则用if进行相应判断即可。
在实现的游戏中实现①猜拳;②记录胜负;③玩家决定游戏局数;④输出获胜、失败及平局;⑤统计总共的胜负结果(根据获胜次数判断)
①猜拳基础功能:该部分代码可以放到一个方法中,减少主函数代码量。
电脑出拳即 int r=new Random().nextInt(3) 注意:该部分一定要写在for循环内部,否则无法实现每次不同的随机数。
通过if判断双方出拳是否相等 if(a==0&&r==0) else if(a==0&&r==1) else if(a==0&&r==2) 即可实现猜拳,if内直接输出相关语句即可
②记录胜负: 定义猜拳方法为int ,通过返回值记录相关比赛的胜负情况 ,可以用0--失败;1--获胜;2--平局 进行记录,在主函数中对相应抛出的数字记录即可
if(a==0&&r==0){
System.out.println("The computer comes out with cloth,it was a draw. ")
return 2
}
h=comp.compare(a,r) if (h==1)j++
登录后复制
③玩家决定局数: 定义一个数,在循环中不大于该数即可
④输出获胜、失败及平局: j、k即胜利和失败,平局数即n-j-k。
⑤统计结果,直接用if比较i、j的数字结果即可。
主函数部分:
package SS2_5
import java.util.*
public class Main {
public static void main(String args[]){
Scanner scanner=new Scanner(System.in)
Compare comp=new Compare()
int h=0,j=0,k=0
System.out.println("rules:0--cloth1--stone2--scissors.\nU can choose how many times you want to play:")
int n=scanner.nextInt()
for(int i=1i<=ni++){
System.out.print("It's the "+i+" round,your turn:")
int a=scanner.nextInt()
int r=new Random().nextInt(3)
switch (a){
case 0:
h=comp.compare(a,r)
break
case 1:
h=comp.compare(a,r)
break
case 2:
h=comp.compare(a,r)
break
default:
System.out.println("Wrong number!")
break
}
if (h==1)
j++
else if(h==0)
k++
}
System.out.println("The total times you won are "+j+",The draw times are "+(n-j-k)+".")
if(j>k)
System.out.println("You are the final winner")
else if(k>j)
System.out.println("The computer is the winner.")
if(j==k)
System.out.println("The final result is draw")
}
}
登录后复制
compare方法部分
package SS2_5
public class Compare {
public int compare(int a,int r){
int counter=0
if(a==0&&r==0){
System.out.println("The computer comes out with cloth,it was a draw. ")
return 2
}
else if(a==0&&r==1){
System.out.println("The computer comes out with stone, you won. ")
return 1
}
else if(a==0&&r==2){
System.out.println("The computer comes out with scissor,you lost. ")
return 0
}
else if(a==1&&r==0){
System.out.println("The computer comes out with cloth,you lost. ")
return 0
}
else if(a==1&&r==1){
System.out.println("The computer comes out with stone,it was a draw. ")
return 2
}
else if(a==1&&r==2){
System.out.println("The computer comes out with scissors,you won. ")
return 1
}
else if(a==2&&r==0){
System.out.println("The computer comes out with cloth,you won. ")
return 1
}
else if(a==2&&r==1){
System.out.println("The computer comes out with stone,you lost. ")
return 0
}
else if(a==2&&r==2){
System.out.println("The computer comes out with scissors,it was a draw. ")
return 2
}
else
return 0
}
}
登录后复制
java
704拖拉机
精选推荐
广告
java写简单的猜拳游戏
2下载·0评论
2016年7月27日
用Java编写的猜拳小游戏
2029阅读·0评论·0点赞
2021年3月7日
Java猜拳游戏和Random的应用
21阅读·0评论·0点赞
2022年10月24日
java实现完整版猜拳小游戏
25下载·0评论
2018年11月22日
用python实现功能猜拳
1137阅读·2评论·3点赞
2022年7月14日
java猜拳switch计分制_java----猜拳(10局分胜负)
117阅读·0评论·1点赞
2021年3月15日
二手拖拉机交易市场,你还在高价买吗?
精选推荐
广告
利用Java编写简单的猜拳游戏
911阅读·0评论·1点赞
2022年9月8日
Java简单实现猜拳游戏
1.1W阅读·1评论·2点赞
2022年1月23日
java猜拳游戏代码_Java实现简单猜拳游戏
4496阅读·0评论·0点赞
2021年3月1日
用java来写一个简单的猜拳小游戏
890阅读·1评论·1点赞
2022年7月26日
java实现猜拳游戏
3180阅读·2评论·1点赞
2022年5月4日
JAVA编写猜拳游戏
3037阅读·3评论·3点赞
2021年3月16日
[Java教程]17.实战,趣味猜拳小游戏
8040阅读·2评论·3点赞
2020年6月24日
怎么用java实现人机猜拳?
1959阅读·6评论·9点赞
2021年7月22日
Java Random经典例子【猜拳游戏】
4318阅读·0评论·0点赞
2014年3月22日
java的人机猜拳代码_Java实现人机猜拳游戏
702阅读·0评论·2点赞
2021年3月12日
Java基础练习之猜拳游戏
363阅读·1评论·1点赞
2021年8月19日
用java写猜拳小游戏
1096阅读·0评论·1点赞
2021年9月1日
Java猜拳小游戏
97阅读·0评论·0点赞
2022年8月23日
java猜拳小游戏
500阅读·1评论·0点赞
2022年7月14日
我之前写了个猜拳游戏的源代码,不过没你想的这么精彩。你才给5分就给你你自己修改了,应该很简单的。要多给点分我可以帮你修改。import java.util.Scanner
import java.util.Random
public class caiquan
{
final int jiandao=0
final int shitou=1
final int bu=2
public static void main(String[] args)
{
String yn=y
while (yn.equals(y))
{
Scanner scanner = new Scanner(System.in)
System.out.println(欢迎玩猜拳游戏。请输入0,1,2:0表示剪刀,1表示石头,2表示布)
int a = scanner.nextInt()
Random rd = new Random()
int b = rd.nextInt(3)
switch (b)
{
case 0:
{
System.out.println(系统出的是剪刀)
switch(a)
{
case 0:System.out.println(平)break
case 1:System.out.println(赢)break
case 2:System.out.println(输)break
}
}
break
case 1:
{
System.out.println(系统出的是石头)
switch(a)
{
case 0:System.out.println(输)break
case 1:System.out.println(平)break
case 2:System.out.println(赢)break
}
}
break
case 2:
{
System.out.println(系统出的是布)
switch(a)
{
case 0:System.out.println(赢)break
case 1:System.out.println(输)break
case 2:System.out.println(平)break
}
}
}
Scanner ynn = new Scanner(System.in)
System.out.println(是否继续?是请输入y,否则输入n。)
yn=ynn.next()
}
}
}