人机猜拳思路
十五二十猜拳怎么玩

十五二十猜拳怎么玩
十五二十猜拳怎么玩
每人两只手,两个人加起来最多是20,双方每次出没有(双手握拳伸出为没有),5(一手握拳一手伸直为5),10(双手伸直为10)这三种数字,同时报一个比自己手上出的数字大或相同的数字,如果双方出的加起来等于自己报的数字,自己就赢。
推算一下,报的最小数字是0,因为双方都可能出没有。
最大是20,因为双方都可能出10。
举例:如果你出没有并报没有,那如果对方也出没有,你就赢了。
而如果你出没有报没有,对方出几报几,对方就赢。
总之大规则就是双方手上加起来总和等于哪方嘴里喊的,哪方就赢。
如果双方手上加起来不等于双方任何一方嘴上喊的,哪就没有输赢,继续猜。
一般来说,这种猜拳赢的几率是比较大的,因为包含的数字只有5个。
所以大多是三盘两负的才喝,如果每赢一次输家都喝,那猜不了十分钟就会有人醉倒在地上。
我国最普及的喝酒猜拳跟这个差不多,不过包含的数字可多了,从2到10。
而且是单手。
很不容易猜中,一般在中原及北方各地比较盛行。
十五二十则是东南方甚至港澳台比较流行的。
人机猜拳小游戏

Java程序设计基础实验报告班级:学号:姓名:实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。
人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。
有基本的UI界面。
实验内容:1、问题分析过程:实验针对java的具体应用,设计了猜拳小游戏。
根据游戏的规则,玩家可以和电脑进行对战。
成学的主要功能是使用标准的JDK进行编译和运行。
定义玩家自己选择性出拳,电脑随机出拳,赢的记10分,输的记0分,平局都记10分。
本程序设计了Game、Person、Player、等多个类,通过程序设定的规则来实现游戏。
(登陆界面)(初始界面)(游戏界面)2、主要实现代码:******************************oString();"="+playerName);etName());etName());造函数的特点:* A:函数名和类名相同* B:函数没有返回类型,即使void也不行* 2.构造函数什么时候被执行:在用户实例化对象时编译器自动调用的,用户无法调用* 3.构造函数完成什么样的工作:在用户实例化对象时完成实例变量(被static的变量)的初始化工作**/public LoginFrame() {etScreenSize();etResource[index]);return new ImageIcon(url);}/*** 根据选手索引的猜拳状态创建ImageIcon对象* @param player_index 选手索引* @param state 猜拳状态,0:初始状态,1:赢状态;2:平局;3:输状态* @return ImageIcon对象*/public ImageIcon getPlayerIcon(int player_index,int state){URL url=getClass().getResource[player_index][state]);return new ImageIcon(url);}public static String getResult(Player userPlayer,Player computerPlayer){count++;int differ=()();int state=0;etPlayerIcon, 0));jContentPane = new JPanel();(null);etMorraIcon (new Game().getMorraIcon ;(new Game().getPlayerIcon(img_index, + "");+ "");+ "");}/*** 恢复游戏初始状态*/private void setInit() {=false;=0;本类型的默认值: byte(1) 0 short(2) 0 int(4) 0 long(8) 0 * char(2) '\0' boolean(2) false* float(4) double* 2.引用类型的默认值:null** 基本类型和引用类型的区别:* 基本类型是在栈内存中存放数据值* 引用类型是在栈内存中存放引用地址,在堆内存中存放数据值的* @author hsj* @version**/public class Person {private String name;private int age;public Person(String name, int age) {super();= name;= age;}public Person() {例化Person类型的对象Person p1=new Person("张三",20);用display()函数完成成员变量的输出工作//段落注释的快捷键:ctrl+shift+o/*();();*/}}3、实验心得体会:通过这次java实验。
猜拳的使用技巧

猜拳的使用技巧
1. 观察对方:观察对方出拳的习惯和规律,有助于预测下一次出拳的可能性。
2. 节奏变化:尝试改变出拳的速度和节奏,创造出意想不到的出拳方式,使对手难以预测。
3. 心理战术:可以通过言语或肢体语言激怒对手或干扰其思维,从而达到取胜的目的。
4. 策略:可以在前几局中示弱,让对手看出自己的出拳规律或状态,然后在后几局中反击取胜。
5. 集中注意力:不要分散注意力,专注于对手的出拳和身体语言,以及自己的出拳速度和节奏等因素。
6. 短期记忆:试着记住对手的出拳次数和规律,以此为基础进行反应和下一步的出拳。
7. 调整状态:处理好心理和情绪上的问题,以保持最佳状态进行比赛。
猜拳技巧有哪些

猜拳技巧有哪些猜拳技巧有哪些猜拳技巧有哪些 1首先,需要区分1V1(一对一)还是1VN(和一群人一起)情景。
1V1取胜逻辑第一次出拳,正常情况下大部分人的手在落下的时候一般是握着的,也就是和石头一样。
猜拳中石头和剪刀布是不一样的,因为石头是把拇指都收拢在一起,普通人的心理(潜意识)是出拳时手的形态应该有一定改变,也就是说第一次出拳大概率会选择剪刀或者布。
而在普通人思维当中剪刀相对于布更具攻击性也更顺手(回想一下各种照片上的剪刀手造型),尤其是女生,据我观察,90%的女生第一次出拳都会选择出剪刀。
所以,针对1V1的情况,第一次出拳建议使用石头来针对众多的剪刀们。
1VN取胜逻辑在对多人猜拳时,第一次千万别出石头!和1V1情况不同,因为多人参与情况下,知道出石头胜率高的人出现的几率会增大,这个时候大概率会出现前几盘剪刀石头布同出不分胜负的情况,参与人员会不断调整自己的出拳策略,但是一般最后都是出布的胜利。
直到最后变成1V1,又可以回到出石头的策略上来。
最后,如果你完全不知道我在说些什么的话,就记住下面两点就可以了:1.1V1的时候出石头;2.1VN的时候出布。
猜拳技巧有哪些 2之所以说“公平”,是因为从表面上来看,出石头、剪刀和布的概率均为1/3,因此每局游戏胜负平的概率也各为1/3,所以看起来,对阵双方的赢面是一样的。
然而,人毕竟不是机器,我们的决策,会受到各种因素的干扰,体现在RPS游戏中,便是,我们并不能做到每一个决策都是相同的概率——在单局游戏中,我们对石头、剪刀、布中的某一个决策会有所偏好。
在多局游戏中,我们在某回合的决策会受到上一回合决策以及胜负结果的影响。
那么,我们究竟更喜欢石头、剪刀、布中的哪一个呢? 上局游戏的胜负,又是如何影响我们对下局游戏的决策的呢?也巧,还真有人正儿八经地研究过这个问题——浙江大学实验社会科学实验室王志坚研究员、浙江工商大学公共管理学院许彬教授和中国科学院理论物理研究所周海军研究员对曾对这个问题进行了长达4年的研究,他们的成果 Socialcycling and conditional responses in the Rock-Paper-Scissors Game 在2014年12月24日入选了《麻省理工科技评论》2014年度最佳成果(Best of 2014)。
四选项猜拳 必胜法

四选项猜拳必胜法
秘笈一:闭着眼睛出拳
因为猜拳规则简单,所以要想赢对手,运气和心理因素就显得非常重要。
这其中,运气是我们所不能控制。
剩下的,就只有好好地利用心理战术了。
秘笈二:让对手以为你要出剪刀
当然这个“剪刀”只是例子而已,你也可以让对手以为你要出“石头”或“布”。
如果对手以为你会出剪刀,那么他一定会出石头,因此你出布的话就赢定了。
秘笈三:直接出布
有统计数据显示,猜拳游戏中,出布的概率是29.6%,出剪刀的概率是35%,出石头的概率是35.4%。
因为出石头的概率要稍微高出那么一点,所以出布的话,能赢的概率也会稍微高出那么一点。
Java程序设计人机猜拳

Java程序设计实验报告班级:11060341X 学号:50 姓名:马一桃实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。
人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。
有简单的操作界面。
实验内容:1、问题分析过程:人机猜拳:人可以通过选择出拳,通过键盘输入相应数字来实现。
电脑那么随机性出拳,由电脑产生随即数来实现。
通过游戏规那么判断双方的输赢,显示当局的输赢情况,并记录当局的分数,并各方的输赢情况。
游戏完毕时显示双方的分数以及输赢情况。
面向的对象有人、电脑以及游戏规那么。
人、电脑都有实现自己出拳的方法,同时还要有判断各方输赢的方法。
2、主要实现代码:〔要求有必要的注释〕:import java.util.Scanner; //通过import语句引入Scanner类public class Game{public static void main(String args[]){int x=0; //用户的初始分数为0int y=0; //电脑的初始分数为0int z=0; //开场时决战次数为0System.out.println("\n");System.out.println("猜拳游戏现在开场,准备好了吗?");System.out.println("===========游戏规那么===========");System.out.println(" 胜利加一分,否那么不加分 ");System.out.println(" 当游戏完毕时分高者为胜 ");System.out.println("==============================");Scanner shuzi = new Scanner(System.in); //用户通过键盘输入System.out.println("是否要开场游戏?"+"\n"+" y/n");String m = shuzi.next();while(m.equals("y")) {System.out.println("请选择数字出拳:");System.out.println("1 石头 2 剪刀 3 布");int A = shuzi.nextInt(); //利用switch语句,用户实现出拳switch(A){case 1:System.out.println("我出拳: 石头");break;case 2:System.out.println("我出拳: 剪刀");break;case 3:System.out.println("我出拳: 布");break;}int B = (int)((Math.random()*10)%3 + 1); //电脑产生随机数,进展出拳 switch(B){case 1:System.out.println("电脑出拳: 石头");break;case 2:System.out.println("电脑出拳: 剪刀");break;case 3:System.out.println("电脑出拳: 布");break;}if(A==B){ //一局游戏判断输赢的过程System.out.println("哎呦,平局!再努力! ");z++;}else if(((A==1)&(B!=3))||((A==2)&(B!=1))||((A==3)&(B!=2))){System.out.println("不错嘛,赢了!");x++;z++;}else{System.out.println("唉,输了,得加油啊!");y++;z++;}System.out.println("\n");System.out.println("有种再来一局"+"\n"+"y/n");m = shuzi.next();}System.out.println("游戏完毕" );System.out.println("对战的次数为"+z);System.out.println("你的分数:" +x);System.out.println("电脑的分数:"+y);if(x>y){ //最终比游戏结果的判断System.out.println("噢耶!完胜电脑!");}else if(x==y){System.out.println("彼此彼此,水平相当么~");}else{System.out.println("不幸输了,改日再和你比赛!");}}}开场界面进展一局游戏结果游戏最终结果的判断3、实验心得体会:3.1出现的问题及解决方案〔1〕在编译源文件时,出现了这么个问题这是一个编码的问题。
人机猜拳游戏课程设计JAVA

人机猜拳游戏课程设计 JAVA一、教学目标本课程旨在通过学习Java编程语言,让学生掌握人机猜拳游戏的基本原理和实现方法。
具体目标如下:知识目标:使学生了解Java编程语言的基本语法和结构;理解人机猜拳游戏的规则和逻辑。
技能目标:培养学生使用Java编程语言实现简单程序的能力;培养学生分析问题、解决问题的能力。
情感态度价值观目标:培养学生对计算机科学的兴趣和好奇心;培养学生勇于尝试、不断探索的精神。
二、教学内容本课程的教学内容主要包括Java编程语言的基本语法和结构、人机猜拳游戏的规则和逻辑。
具体安排如下:第1-2课时:Java编程语言的基本语法和结构第3-4课时:人机猜拳游戏的规则和逻辑第5-6课时:使用Java编程语言实现人机猜拳游戏三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体安排如下:第1-2课时:采用讲授法,介绍Java编程语言的基本语法和结构。
第3-4课时:采用讨论法,引导学生探讨人机猜拳游戏的规则和逻辑。
第5-6课时:采用实验法,让学生动手实践,使用Java编程语言实现人机猜拳游戏。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:教材:《Java编程语言》参考书:《Java核心技术》多媒体资料:相关教学视频、案例分析实验设备:计算机、网络设备以上是本课程的教学设计,我们将根据实际情况进行调整和优化,以达到最佳教学效果。
五、教学评估为了全面、客观、公正地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:包括课堂参与度、提问回答、团队合作等,占总成绩的30%。
2.作业:包括编程练习、课后作业等,占总成绩的30%。
3.考试:包括期中和期末考试,占总成绩的40%。
以上评估方式将根据学生的实际表现进行调整,确保评估结果能够真实反映学生的学习成果。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保每个章节都有足够的学习时间。
人机猜拳

需求说明
游戏结束后,显示对战结果
提示
编写showResult( )方法, 比较二者的得分情况, 给出对战结果
综合练习:人机猜拳
练习
• 阶段7:练习——完善游戏类的startGame()
需求说明
输入并保存用户姓名,游戏 结束后显示双方的各自得分
综合练习:人机猜拳
练习
• 阶段4:练习——实现一局对战
需求说明
分别调用用户类和计算机类的出拳方法showFist(), 接受返回值并比较,给出胜负结果
综合练习:人机猜拳
练习
• 阶段5:练习——实现循环对战,并累计得分
需求说明
实现循环对战, 并且累加赢家的得分
综合练习:人机猜拳
练习
• 阶段6:练习——显示对战结果
指导学习:人机猜拳
加入尚学堂,一起进步!
综合练习:人机猜拳
• 任务
– 完成人机猜拳互动游戏的开发
• 主要功能
– 选取对战角色 – 猜拳 – 记录分数
综合练习:人机猜拳
练习
• 阶段1:练习——Βιβλιοθήκη 析业务,创建用户类需求说明
分析业务,抽象出类、类的 特征和行为 创建用户类
综合练习:人机猜拳
练习
• 阶段2:练习——创建计算机类
需求说明
创建计算机类Computer。实现计算机出拳
提示
产生一个1~3的随机数, 模拟计算机的出拳结果, 例如,产生2,显示“电脑出拳:石头”
综合练习:人机猜拳
练习
• 阶段3:练习——创建游戏类,选择对战对手
需求说明
创建游戏类Game 编写游戏类的初始化方法initial() 编写游戏类的开始游戏方法startGame()
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
先建立个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、printin("您出拳石头”);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="文U备";}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、printin("结果:与局,真衰!嘿嘿,等着瞧吧!\n"); //平局}elseif((perFist==1&&compFist==3)||(perFist==2&&compFist==1)||(perFist==3&&compFist==2)){ Sys tem、out、printin(" 结果:恭喜,您赢了!"); //用户赢person、score++;}eise{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();}}然后编译执行就0K 了希望能帮到您。