人机猜拳小游戏
人机猜拳小游戏

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. 游戏继续进行,直到达到预定的胜利分数或时间,以确定最终的胜利者。
术语和技巧:
- 猜拳小游戏中的术语包括“剪刀”、“石头”和“布”,玩家需要根据对手的可能动作来做出最佳选择。
- 技巧包括观察对手的习惯动作、随机选择手势以及尝试预测对手的心理。
创造性和想象力:
玩家可以尝试不同的策略,如心理战术、变换手势顺序、以及观察对手的眼神和动作来预测对手的手势。
此外,可以尝试与多个玩家一起玩,增加游戏的挑
战性和乐趣。
总之,猜拳小游戏简单易上手,但也充满了技巧和策略。
通过灵活运用自己的想象力和创造性,玩家可以享受到这个简单而有趣的游戏带来的乐趣和挑战。
JAVA人机猜拳小游戏代码

JAVA人机猜拳小游戏代码//JAVA人机猜拳小游戏代码 import java.util.Scanner; public class guess{public static void main(String[] args){Scanner in=new Scanner(System.in);System.out.println("-----猜拳游戏-------"); System.out.println("请出拳(1.剪刀 2.石头 3.布)"); int person=in.nextInt();int computer=(int)(Math.random()*3)+1;String Marks="拳头";//这是给人做一个标记;String Marks2="拳头";//这是给电脑做一个标记;switch(person){case 1:Marks="拳头";break;case 2:Marks="石头";break;case 3:Marks="布";break;}switch(computer){case 1:Marks2="拳头";break;case 2:Marks2="石头";break;case 3:Marks2="布";break;}if(person==computer){System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"---平局");}elseif(person==1&&computer==2||person==2&&computer==3||person==3&&computer==1){System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"—_—你输了~");}else{System.out.println("你出的是:"+Marks+"电脑出的是:"+Marks2+"^_^你赢了~");}}}//应用说明:只要把代码复制到TXT写字板再把扩展名改为JAVA就行了;。
人机猜拳小游戏

Java程序设计基础实验报告班级:学号:姓名:实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。
人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。
有基本的UI界面。
实验内容:1、问题分析过程:实验针对java的具体应用,设计了猜拳小游戏。
根据游戏的规则,玩家可以和电脑进行对战。
成学的主要功能是使用标准的JDK进行编译和运行。
定义玩家自己选择性出拳,电脑随机出拳,赢的记10分,输的记0分,平局都记10分。
本程序设计了Game、Person、Player、等多个类,通过程序设定的规则来实现游戏。
<登陆界面)(初始界面)<游戏界面)2、主要实现代码:******************************// LoginFramepackage com.hsj.client。
import javax.swing.SwingUtilities。
import java.awt.BorderLayout。
import javax.swing.JPanel。
import javax.swing.JFrame。
import javax.swing.JLabel。
import java.awt.Rectangle。
import javax.swing.JComboBox。
import javax.swing.JScrollPane。
import javax.swing.JButton。
import com.hsj.domain.Game。
/*** 猜拳小游戏的登录界面* @author hsj* @version 1.0**/public class LoginFrame extends JFrame {private static final long serialVersionUID = 1L。
/*** JFrame窗体的内容面板*/private JPanel jContentPane = null。
Java实现人机对战猜拳游戏

Java实现⼈机对战猜拳游戏本⽂实例为⼤家分享了Java实现⼈机对战猜拳游戏的具体代码,供⼤家参考,具体内容如下通过控制台⽅式实现⼀个⼈机对战的猜拳游戏1.⽤户通过输⼊(2.剪⼑ 0.⽯头 5.布)2.机器随机⽣成(2.剪⼑ 0.⽯头 5.布)3.胜者积分4.n 局以后通过积分的多少判定胜负。
开发⼯具:IDEA分析:1.在这个猜拳游戏⾥⾸先要解决的是机器⼈如何出拳?解决:通过预设⼀个字符串,然后通过Random类的nextInt⽅法获取到⼀个随机整数,将这个整数作为字符串的下标,再通过循环的⽅法来组成⼀个随机数。
⽣成对应的出拳情况2.⽣成的随机数如何⽐较?解决:使⽤equals()进⾏⽐较3.如何积分?解决:先给⼈机各初始积分为0分,每⽐较⼀次就记⼀次分,这⾥赢⼀局记10分完整代码如下:import java.util.Random;import java.util.Scanner;public class MoraTest {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("--- 猜拳游戏 ---");System.out.println("你想和机器⼈玩多少局:请输⼊(1-100)");//输⼊轮数int number = input.nextInt();System.out.println("请输⼊对应数值:\n0-⽯头 2-剪⼑ 5-布");int userIntegral = 0;//⽤户积分int robotIntegral = 0;//机器⼈积分for (int i = 0; i < number; i++) {String num = getRandom(1);//获取随机数String userNum = input.next();//输⼊出拳的值String u = putFist(userNum);//根据⽤户输⼊的值给对应的剪⼑、⽯头、布System.out.println("⽤户的出拳为:"+u);String n = putFist(num);//根据机器类随机⽣成的数值给对应的剪⼑、⽯头、布System.out.println("机器⼈出拳为:"+n);//如果⽤户出⽯头if ("0".equals(userNum)) {if ("2".equals(num)) {//如果机器⼈出剪⼑,⽤户获胜userIntegral += 10;System.out.println("⽤户获胜!积10分!");} else if ("5".equals(num)) {//如果机器出布,机器⼈获胜robotIntegral += 10;System.out.println("机器⼈获胜!积10分!");} else {//如果机器出⽯头,则平局,不积分System.out.println("平局!");}} else if ("2".equals(userNum)) {//如果⽤户出剪⼑if ("2".equals(num)) {//如果机器⼈也出剪⼑,则平局System.out.println("平局!");} else if ("5".equals(num)) {//如果机器出布,⽤户获胜userIntegral += 10;System.out.println("⽤户获胜!积10分!");} else {//如果机器出⽯头,机器⼈获胜robotIntegral += 10;System.out.println("机器⼈获胜!积10分!");}} else {//如果⽤户出布if ("2".equals(num)) {//如果机器⼈出剪⼑,机器⼈获胜robotIntegral += 10;System.out.println("机器⼈获胜!积10分!");} else if ("5".equals(num)) {//如果机器出布,则平局System.out.println("平局!");} else { //如果机器出⽯头,⽤户获胜userIntegral += 10;System.out.println("⽤户获胜!积10分!");}}num = null;}System.out.println("****************");System.out.println("战⽃结束,查看分数:");System.out.println("⽤户总积分:"+userIntegral+"分");System.out.println("机器⼈总积分:"+robotIntegral+"分");if (userIntegral > robotIntegral){System.out.println("经过"+number+ "局后,最终的胜利者是:⽤户!");} else if (userIntegral == robotIntegral) {System.out.println("经过"+number+ "局后,你们打成了平局");} else {System.out.println("经过"+number+ "局后,最终的胜利者是:机器⼈!");}}public static String putFist(String s){String fist = null;if ("0".equals(s)){fist = "拳头";} else if ("2".equals(s)) {fist = "剪⼑";} else if ("5".equals(s)){fist = "布";} else {System.err.println("你输⼊的不对!");return null;}return fist;}//拳头属性//0-⽯头 2-剪⼑ 5-布public static String getRandom(int length) {String fistNum = "520";//创建⼀个新的随机数⽣成器。
人机猜拳游戏课程设计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.教学进度:按照教材的章节顺序进行教学,确保每个章节都有足够的学习时间。
java人机猜拳-石头剪刀布

java人机猜拳1.首先定义一个用户类:代码如下package mypackage;import java.util.*;public class Person {String name="";int score;public int showFist(){System.out.println("请出拳:1.剪刀2.石头3.布(输入相应数字)");Scanner input =new Scanner(System.in);int number=input.nextInt();switch(number){case 1:System.out.println("玩家出:剪刀");return number;case 2:System.out.println("玩家出:石头");return number;case 3:System.out.println("玩家出:布");return number;default:System.out.println("你出拳:剪刀");return number;}}}2.定义一个计算机类package mypackage;public class Computer {int max =3;int min =1;int number= (int)(Math.random()*(max-min))+min;int score;String name="电脑";public int showcomputer(){switch(number){case 1:System.out.println("电脑出:剪刀");return number;case 2:System.out.println("电脑出;石头");return number;case 3:System.out.println("电脑出:布");return number;default:System.out.println("电脑出:剪刀");return number;}}}3.创建一个游戏类package mypackage;import java.util.*;public class StartGame{public int Initial(){System.out.println("----------欢迎进入游戏世界----------");System.out.println("");System.out.println("\t****************");System.out.println("\t** 猜拳,开始**\t\t");System.out.println("\t****************");System.out.println("");System.out.println("出拳规则:1.剪刀2.石头3.布");System.out.println("请选择对方角色(1.刘备2.孙权3.曹操):");Scanner input =new Scanner(System.in);int number=input.nextInt();switch(number){case 1:System.out.print("刘备");return number;case 2:System.out.print("孙权");return number;case 3:System.out.print("曹操");return number;default:System.out.print("你选择了刘备作战");return number;}}public static void main(String[] args){//完善游戏类的startGame()方法,实现一局对战Computer computer =new Computer();Person player =new Person();StartGame come =new StartGame();Scanner input =new Scanner(System.in);come.Initial();System.out.println("");System.out.println("要开始么?y/n\n\n");String con =input.next();int count=0;while(con.equalsIgnoreCase("y")){int perFist=player.showFist();int compFist=computer.showcomputer();System.out.println("双方对战次数:" + count);if((perFist==1&&compFist==1)||(perFist==2&&compFist==2)||(perFist==3&&com pFist==3)){System.out.println("结果:平局,真衰!");count++;}elseif((perFist==1&&compFist==3)||(perFist==2&&compFist==1)||(perFist==3&&compFist ==2)){System.out.println("结果:恭喜,你赢了!");player.score++;}else{System.out.println("结果说,你输了,真笨!\n");count++;computer.score++;}System.out.println(+ "积分为:" + player.score+ "\t\t" + + "积分为:" + computer.score);System.out.println("是否继续?y/n");con =input.next();}while(con.equals("n")){if(player.score > computer.score) {System.out.println("最终结果:" + + "在" + count + "回合中战胜了" + );break;}else if(player.score < computer.score) {System.out.println("最终结果:" + + "在" + count + "回合中战胜了" + );break;}else {System.out.println("最终结果:" + + "在" + count + "回合中和" + + "战平");break;}}}}本代码归武汉市江岸区百步亭50号熊盼所有,未经武汉市江岸区百步亭50号熊盼允许,不得转载、复制。
猜拳小游戏

猜拳小游戏
游戏规则很简单:石头胜剪刀,剪刀胜布,布胜石头。
玩家们轮流
出手,同时展示出他们选择的手势。
根据两个玩家的手势,确定胜负,然后重新开始新的一轮。
玩家在进行游戏时,需要注意一些技巧和策略。
首先,可以尝试观
察对手的习惯,然后选择能够击败对手的手势。
其次,可以尝试随
机选择手势,以防对手猜测自己的下一步动作。
另外,可以尝试在
出手前制造一些干扰,让对手分心,从而获得优势。
为了增加游戏的乐趣和挑战,玩家可以尝试添加一些变化和规则。
例如,可以设定时间限制,让玩家在规定的时间内做出决定,增加
游戏的紧张感。
另外,可以增加更多的手势选项,如火、水、风等,从而增加游戏的变数和策略性。
总的来说,猜拳小游戏是一种简单而有趣的游戏,通过简单的规则
和策略,玩家可以享受到其中的乐趣和挑战。
希望玩家们可以尝试
不同的策略和方法,从而让游戏更加丰富多彩。
猜拳小游戏

猜拳小游戏
猜拳小游戏是一种简单而有趣的游戏,通常由两个人玩,在游戏开始时,每个
参与者同时展示出一只手,并根据出示的手势来判断输赢。
在这个游戏中,石头、剪刀、布是三种常见的手势,分别代表着胜、负、平局。
游戏规则
1.石头击剪刀,剪刀剪布,布包石头。
根据这个规则来判断胜负。
2.若两个人展示出相同的手势,则为平局,需要重新比划直到分出胜负。
3.猜拳游戏可以进行多轮,比较多轮后,获胜次数多的玩家为胜者。
小游戏的乐趣
猜拳小游戏虽然规则简单,玩法却变化多样,可以用于解闷、拉近人与人之间
的距离,增加趣味性。
即使对手不是人类,只要对方能作出随机手势,也能和机器进行猜拳游戏。
猜拳的智谋
在猜拳小游戏中,心理战术也是一门重要的技巧。
通过观察对手的习惯和心理
状态,可以在一定程度上猜到对手下一步会出的手势,从而取得胜利。
但在对手无法预知的情况下,游戏的胜负更多地取决于玩家的运气。
总结
猜拳小游戏是一种简单而有趣的游戏,不论是作为消遣娱乐,还是作为锻炼观
察力和心理战术的手段,都具有一定的娱乐和智慧性。
在享受游戏过程的同时,也可以拉近与他人的距离,增进彼此之间的默契和友谊。
希望大家能够在猜拳小游戏中感受到快乐和共鸣,享受游戏的乐趣!。
青少年科技创新会猜拳的机器人

PART 3
结果分析
结果分析
通过研究和实 验,我们可以 得出以下结论 :猜拳机器人 在图像识别和 决策方面表现 出色
它能够准确地 识别出对手的 手势,并根据 当前状态和历 史数据做出合 理的决策
然而,机器人 在执行模块和 反馈模块方面 还存在一些不 足
例如,机械臂 的精度和速度 还需要提高, 以应对不同的 情况和对手
青少年科技创新— 会猜拳的机器人
....
-
青少年科技创新会猜拳的机器人
1
青少年科技创新是培养未来科技人才 的重要平台,鼓励和激发青少年的创
新思维和实践能力
在这个领域中,机器人的发展尤为引 人注目
2
3
今天,我们就来讨论一个有趣的机器 人项目——猜拳机器人
PART 1
背景介绍
背景介绍
猜拳,又称"石头、剪刀、布",是
决策模块:根据对手的手势和自己的当 前状态,判断出最佳的出拳顺序。这需 要用到复杂的算法和机器学习技术
执行模块:根据决策模块的输出,控制 机械臂执行相应的手势动作
反馈模块:在出拳后,通过传感器获取 结果,将信息反馈给决策模块,以便调 整策略
研究内容
3. 算法优化
为了提高机器人的胜率,我们还 需要不断优化决策模块的算法。 这可能涉及到深度学习和强化学 习等技术。通过对大量数据进行 训练和学习,让机器人能够更好 地理解和预测对手的行为,从而 做出更明智的决策。此外,我们 还可以引入蒙特卡洛树搜索 (MCTS)等先进算法,用于优化决 策过程
03
虽然目前的猜拳机器人已经取得了一 定的成果,但仍有很大的提升空间
06
期待更多的青少年科技创新人才能 够加入到这个领域中来
基于Java的猜拳小游戏设计

目录绪论............................................... 错误!未定义书签。
一、背景与意义..................................... 错误!未定义书签。
二、设计原理与方案................................. 错误!未定义书签。
一)方案....................................... 错误!未定义书签。
二)设计思路................................... 错误!未定义书签。
三)系统分析................................... 错误!未定义书签。
四)程序概要设计............................... 错误!未定义书签。
五)工作流程图................................ 错误!未定义书签。
六)程序框图.................................. 错误!未定义书签。
七)程序中所用类说明.......................... 错误!未定义书签。
八)程序运行效果及存在的问题................... 错误!未定义书签。
三、项目实现....................................... 错误!未定义书签。
一)程序用到的类库简介......................... 错误!未定义书签。
二)游戏主程序设计............................. 错误!未定义书签。
三)主界面PigPanel类......................... 错误!未定义书签。
四)具体实现.................................. 错误!未定义书签。
四、运行结果....................................... 错误!未定义书签。
猜拳小游戏

猜拳小游戏猜拳是一种简单而有趣的游戏,通常需要两名玩家参与。
游戏的目标是通过猜测对手下一次出拳的手势来获胜。
规则和玩法如下:1. 参与游戏的两名玩家同时伸出手臂,用手指做出以下三种手势之一:剪刀、石头或布。
剪刀形状是用食指和中指伸出,石头形状是用拳头握紧,布形状是用手掌打开。
2. 在每一轮开始时,玩家们会默默地决定他们下一次出拳的手势,并同时展示出来。
3. 根据以下规则判断胜负:- 剪刀胜布:剪刀可以剪破布。
- 石头胜剪刀:石头可以砸碎剪刀。
- 布胜石头:布可以包裹住石头。
4. 如果两名玩家出拳相同,则这一轮为平局,需要重新进行。
5. 游戏继续进行多轮,直到其中一名玩家达到预定的胜利条件(例如,先达到3胜)。
术语和技巧:1. 出拳顺序:玩家可以选择按照固定的顺序出拳,也可以根据对手的出拳情况来调整策略。
例如,如果对手连续出剪刀,你可以选择出石头来获得胜利。
2. 心理战术:玩家可以利用心理战术来迷惑对手。
例如,你可以故意改变自己的出拳模式,以使对手无法预测你的下一步。
3. 观察对手:观察对手的出拳模式和习惯可以帮助你预测他们的下一步。
例如,如果对手在输掉一轮后经常改变出拳方式,你可以尝试预测他们的下一步。
4. 策略调整:根据对手的表现,你可以调整自己的策略。
如果你的对手经常出石头,你可以选择出布来获得胜利。
创造性和想象力:除了基本的剪刀、石头、布之外,你还可以引入其他手势或规则来增加游戏的创造性和挑战性。
例如,你可以添加蜥蜴和斯波克这两个手势,其中蜥蜴吃掉纸,纸包住斯波克,斯波克摧毁石头,石头砸碎剪刀,剪刀剪断蜥蜴。
此外,你还可以尝试增加更多玩家,例如3人或4人猜拳游戏,或者创建一个环形游戏,每个玩家都与周围的玩家进行对战。
总之,猜拳是一种简单而有趣的游戏,可以通过策略、观察和心理战术来增加挑战性和乐趣。
通过引入创造性的规则和手势,你可以使游戏更加多样化和有趣。
享受猜拳游戏的过程,并尽量预测和击败对手!。
项目3-人机猜拳PPT课件

完成时间:25分钟
9/19
.
9
综合练习:人机猜拳
练习
• 阶段7:练习——完善游戏类的startGame()
需求说明
输入并保存用户姓名,游戏结束后显示 双方的各自得分
完成时间:20分钟
10/19
.
10
总结
提问
类和对象的关系是抽象和具体的关系 使用类的步骤如下
(1)定义类:使用关键字class。 (2)创建类的对象:使用关键字new。 (3)使用类的属性和方法:使用“.”操作符。
定义类的方法包括三个部分
(1)方法的名称 (2)方法返回值的类型 (3)方法的主体
类的方法调用,使用如下两种形式。
(1)同一个类中的方法,直接使用方法名 (2)不同类的方法,先创建对象,再使用“对象名.方法名”
在Java中,有成员变量和局部变量,它们的作用域各不相同
11/19
.
11
需求说明
创建游戏类Game 编写游戏类的初始化方法initial() 编写游戏类的开始游戏方法startGame()
完成时间:20分钟
6/19
.
6
综合练习:人机猜拳
练习
• 阶段4:练习——实现一局对战
需求说明
分别调用用户类和计算机类的出拳方法showFist(),接受返回值并比较, 给出胜负结果
完成时间:25分钟
人机猜拳
.
1
目标
类和对象之间的差异 方法定义 方法的返回值
.
2
综合练习:人机猜拳
• 任务
• 完成人机猜拳互动游戏的开发
• 主要功能
• 选取对战角色 • 猜拳 • 记录分数
3/19
.
人机猜拳游戏

package text3;//机器类import java.util.Random;public class Computer {private String name;int score;private int grade;public Computer() {super();}public void showFist() {Random r=new Random();grade=(r.nextInt(3))+1;if(grade==1){System.out.println("计算机出的是剪子");}else if(grade==2){System.out.println("计算机出的是石头");}else if(grade==3){System.out.println("计算机出的是布");}}public int showResult(){return grade;}public String getName() {return name;}public void setName(String name) { = name;}public int getComputerScore() {return score;}public void setComputerScore(int computerScore) { score = computerScore;}}//人类package text3;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.regex.Pattern;public class Customer {public static boolean isNumericRegex(String str) {// 正则表达式,判定输入的字符串是否是由数字组成的Pattern pattern = pile("^[+\\-]?((\\d*\\.\\d+)|(\\d+))$");java.util.regex.Matcher matcher = pattern.matcher(str.trim());return matcher.matches();}BufferedReader bin;private String name;int score;private int grade;public void showFirst(){bin=new BufferedReader(new InputStreamReader(System.in));String str = null;boolean b=true;while(b){try {System.out.println("输入数字代表出拳样式:");str = bin.readLine();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}if(!isNumericRegex(str)){System.out.println("请输入正确的数字!!");continue;}else{grade=Integer.parseInt(str);if(grade==1){System.out.println("你出的是:剪子");}else if(grade==2){System.out.println("你出的是:石头");}else if(grade==3){System.out.println("你出的是:布");}b=false;}}}public int showResult(){return grade;}public Customer() {super();}public String getName() {return name;}public void setName(String name) { = name;}public int getCustomerScore() {return score;}public void setCustomerScore(int customerScore) {score = customerScore;}}//测试类package text3;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Scanner;public class Games {int m = 0;int n = 0;int j=0;static Games games;static Scanner scanner=new Scanner(System.in);static BufferedReader bin=new BufferedReader(new InputStreamReader(System.in));static Customer customer=new Customer();static Computer computer=new Computer();int gameCount;public int computerNumber(){n++;return n;}public int customerNumber(){m++;return m;}public int averageNumber(){j++;return j;}public void innit(){}public void startGame(Customer customer,Computer computer){customer.showFirst();computer.showFist();}public void showResult(Customer customer,Computer computer){ boolean b=true;while(b){if(customer.showResult()==computer.showResult()){System.out.println("平局!");games.averageNumber();b=false;}else if (customer.showResult()==computer.showResult()+2||customer.showResult()+1==computer.showResult()){ System.out.println("计算机赢了");puterNumber();computer.score=computer.score+10;b=false;}else {System.out.println("恭喜!"+customer.getName()+"赢了!");games.customerNumber();customer.score=customer.score+10;b=false;}}}public int calcResult(){++gameCount;return gameCount;}public static void main(String[] args) {games=new Games();System.out.println("---------欢迎进入人机猜拳游戏--------"+"\n");//System.out.println("******************************");System.out.println("游戏的规则是:1 剪子2 石头3 布"+"\n");System.out.println("请输入用户名:");try {customer.setName(bin.readLine());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}boolean b=true;while(b){System.out.println("是否开始y/s");String s=scanner.nextLine();if(s.equals("y")){System.out.println("请出拳1 剪子2 石头3布");games.startGame(customer, computer);games.showResult(customer, computer);games.calcResult();}else if(s.endsWith("s"))b=false;elseSystem.out.println("请选择正确的信息来完成游戏!!");}System.out.print("总共进行了:"+(games.calcResult()-1)+"次比赛"+"\n");System.out.println("计算机赢了:"+(puterNumber()-1)+"次"+"\n"+customer.getName()+"赢了:"+(games.customerNumber()-1)+"次"+"\n"+"平局:"+(games.averageNumber()-1)+"局");System.out.println("计算机的总得分是:"+computer.score);System.out.println(customer.getName()+"的得分是:"+customer.score);if((puterNumber()-1)>(games.customerNumber()-1)){System.out.println(customer.getName()+"\tVS\t计算机的结果是:计算机获胜!!");}else if((puterNumber()-1)<(games.customerNumber()-1))System.out.println(customer.getName()+"\tVS\t计算机\t的結果是:"+customer.getName()+"获胜!!\t恭喜恭喜!!");elseSystem.out.println(customer.getName()+"\tVS\t计算机\t的結果是:"+"双方势均力敌打成平局!!");}}。
猜拳小游戏

猜拳小游戏猜拳小游戏是一种简单而有趣的游戏,通常由两名玩家进行。
游戏的目标是通过选择不同的手势来战胜对手,从而赢得比赛。
规则:1. 游戏开始时,两名玩家同时出拳,可以选择石头、剪刀或布中的一种手势。
2. 石头胜剪刀,剪刀胜布,布胜石头。
如果两名玩家出的手势相同,则为平局。
3. 每轮比赛结束后,根据手势的胜负情况,获胜者将得到一定的分数,平局则不得分。
4. 游戏通常进行多轮,最终根据分数决定胜负。
玩法:1. 两名玩家面对面坐下,可以用手势或口头表示出拳的手势。
2. 在每轮比赛开始前,玩家们要同时倒计时,例如“1、2、3、猜!”。
3. 在“猜!”的同时,玩家们出拳,展示他们的手势。
4. 根据规则判断每轮的胜负,并记录得分。
5. 继续进行多轮比赛,直到达到预定的轮数或时间结束。
6. 最后,根据得分高低决定胜负,得分高的玩家获胜。
术语和技巧:1. 石头、剪刀、布:游戏中的三种手势,分别表示石头、剪刀和布。
2. 平局:当两名玩家出相同手势时,这一轮比赛称为平局。
3. 策略:玩家可以根据对手的习惯和表现来选择手势,以增加胜算。
例如,如果对手经常选择石头,可以选择布来战胜对手。
4. 心理战:通过模糊对手的判断,例如故意改变自己的习惯手势,来获得优势。
创造性和想象力:1. 可以增加更多的手势选项,例如加入蜥蜴和斯波克,这是电视剧《星际迷航》中的一个变种,使游戏更加多样化和有趣。
2. 添加特殊规则,例如“炸弹”手势,可以战胜任何手势,但使用后需要等待几轮才能再次使用。
3. 设定特殊的胜利条件,例如连胜三局以上的玩家可以获得额外的分数奖励。
4. 在游戏中引入角色扮演元素,例如玩家可以选择不同的游戏角色,每个角色有特定的技能和能力,可以影响游戏的结果。
通过以上的规则、玩法和创造性想法,猜拳小游戏可以变得更加有趣、有挑战性,并且能够激发玩家的想象力和策略思考。
第12章指导学习:人机猜拳

第12章指导学习:人机猜拳◇本章工作任务完成人机互动版猜拳游戏的开发◇本章技能目标会定义类,描述类的属性和方法会创建和使用对象会使用包组织Java工程12.1 复习串讲12.1.1 难点突破表12-1中列出了本学习阶段的难点,这些技能你都掌握了吗?表12-1 难点突破记录难点感到疑惑的地方突破方法是否掌握二重循环结构类和对象之间的差异方法定义方法的返回值如果还存在疑惑,请写下你对这个技能感到疑惑的地方。
我们可以通过教材复习,或者从网上查找资料学习,或者和同学探讨,或者向老师请教等方法突破这些难点。
知道这个技能已经掌握,在“是否掌握”一栏中画上“√”。
这些技能是学习后面技能的基础,一定要在继续学习前全部突破。
如果在学习中遇到其他难点,也请填写在表中。
12.1.2 知识梳理下面我们对技能点做一梳理,以知识体系图的形式给出。
在下面的知识体系图中,?图标表示我们已经学过的知识;?图标表示部分学过或者学过相关知识,但需要巩固和深化;?图标是需要通过自学学习或了解的知识;?图标表示将在后续章节学习的知识。
1.知识梳理:二重循环图12.1展示了二重循环的知识体系图对于二重循环,我们主要学习了几种循环结构单一的二重嵌套使用,如while结构中套whille结构,for结构中套for结构,相互之间的嵌套循环在实际工作中也是常见的。
关于跳转语句continue和break在二重循环中的应用,continue跳出当前循环的当次循环,break跳出当前循环,进入到上级循环。
图12.1 二重循环的知识体系图2.知识梳理,初始Java的类图12.2展示了初学者应该理解的类的知识体系图图12.2 初始类的概念对象是存在的具体实体,对应于现实世界的实物,具有明确的状态和行为。
类是对具有相同状态和行为的对象的抽象,对象的状态和行为被封装在类中,在OOP中,状态称为属性,行为称为方法。
定义类的方法,首先要考虑方法的数据类型,其次就是方法的返回值,return语句后的数据类型一定与方法的类型相符合。
基于java实现人机猜拳游戏

基于java实现⼈机猜拳游戏本⽂实例为⼤家分享了java实现⼈机猜拳游戏的具体代码,供⼤家参考,具体内容如下完成⼈机猜拳互动游戏的开发,⽤户通过控制台输⼊实现出拳,电脑通过程序中的随机数实现出拳,每⼀局结束后都要输出结果。
当⽤户输⼊n时停⽌游戏,并输出总结果。
效果如图1-1所⽰。
图1-1⼈机猜拳游戏实现思路图1-2该项⽬的类图(1)创建出⽤户类。
定义⽤户类Customer,定义类的属性(name、score)和类的⽅法showFist()。
请思考getFist()中的switch语句该如何书写。
(2)创建计算机类Computer,实现计算机出拳。
计算机出拳是根据产⽣的随机数来决定出拳的具体内容。
这点的实现和⽤户类出拳类似,请⾃⼰完成。
(3)创建游戏类,实现选择对战对⼿Ø 创建游戏类Game,编写其属性。
属性有:甲⽅玩家、⼄⽅玩家和对战次数以及平⼿次数。
Ø 编写游戏类的开始游戏⽅法startGame(),实现的效果如下图1-3所⽰。
图1.3对战选⼿的选择(4)分别调⽤⽤户类和计算机类的出拳⽅法showFist(),接收返回值并⽐较,给出胜负结果,运⾏结果如下图1-4所⽰。
图1-4⽤户和电脑出拳对战(5)实现循环对战,效果如下图1-5所⽰。
图1-5实现循环对战(6)完善游戏类,显⽰对战结果,效果如下图1-6所⽰。
图1-6显⽰对战结果(7)建⽴测试类RunGame,调⽤Game类的startGame()⽅法。
代码实现Your 类代码(⽤以表⽰你出的招式)package chaiquan;public class your {public static int quan(int i){switch(i){case 1:System.out.println("你出拳:剪⼑");break;case 2:System.out.println("你出拳:⽯头");break;case 3:System.out.println("你出拳:布");break;default:System.out.println("输⼊错误,请重新输⼊");break;}return i;}}Customer 类(实现计算机随机出拳以及对胜负结果的判断)package chaiquan;public class Customer {static int scor=0;static int scor1=0;static int scor2=0;static int chuzhao;public static int showFist(){chuzhao= (int) (Math.random() * 3) + 1;return chuzhao;}public static int getFist(){switch(chuzhao){case 1:System.out.println("剪⼑");break;case 2:System.out.println("⽯头");break;case 3:System.out.println("布");break;}return chuzhao;}public static int play(int i){if(i==chuzhao){System.out.println("此局:和局,嘿嘿,等着瞧吧!");scor++;}else if(i==1&&chuzhao==2){System.out.println("此局:很遗憾,你输了");scor1++;}else if(i==1&&chuzhao==3){System.out.println("此局:恭喜,你赢了");scor2++;}else if(i==2&&chuzhao==1){System.out.println("此局:恭喜,你赢了");scor2++;}else if(i==2&&chuzhao==3){System.out.println("此局:很遗憾,你输了");scor1++;}else if(i==3&&chuzhao==1){System.out.println("此局:很遗憾,你输了");scor1++;}else if(i==3&&chuzhao==2){System.out.println("此局:恭喜,你赢了");scor2++;}return i;}}Game 类(开始游戏)package chaiquan;public class Game {public static void main(String[] args) {GameGame.startGame();}}GameGame类(游戏真正的执⾏进程)package chaiquan;import java.util.Scanner;public class GameGame {public static void startGame(){int iii=1;System.out.println("---------------欢迎进⼊游戏世界---------------\n\n\n\t\t********************\n\t\t****猜拳,开始****\n\t\t********************"); System.out.print("请选择你想和谁对战(1:刘备 2:孙权 3:曹操):");Scanner sc=new Scanner(System.in);int a=sc.nextInt();while(true){System.out.print("要开始吗?(y/n):");String b=sc.next();if(b.equals("n")){System.out.println("结束");return;}else if(b.equals("y")){while(true){System.out.print("请出拳:1.剪⼑ 2.⽯头 3.布(输⼊相应数字):");int c=sc.nextInt();Computer.quan(c);System.out.print(Qwe.getName1(a)+"出拳:");Customer.showFist();Customer.getFist();Customer.play(c);System.out.print("是否开始下⼀轮(y/n):");String m=sc.next();if(m.equals("y")){iii++;}else if(m.equals("n")){System.out.println("------------------------------------------");System.out.println(Qwe.getName1(a)+"VS玩家");System.out.println("对战次数:"+iii+"出拳⼀样的情况有"+Customer.scor+"次");if(Customer.scor1<Customer.scor2){System.out.println("结果:恭喜恭喜,你赢了");break;}else if(Customer.scor1==Customer.scor2){System.out.println("平局!");break;}else{System.out.println("很遗憾你输了!");break;}}else{System.out.println("输⼊错误,请重新输⼊;");break;}}}else{System.out.println("输⼊错误,请重新输⼊");continue;}}}}User 类(选择游戏玩家)package chaiquan;public class user {static String name;public static String getName1(int i){switch(i){case 1:name="刘备";break;case 2:name="孙权";break;case 3:name="曹操";break;}return name;}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
猜拳小游戏

猜拳小游戏
游戏的规则很简单: - 石头胜剪刀,剪刀胜布,布胜石头。
- 如果两个玩家出的手势一样,就是平局,需要重新出拳。
游戏的玩法也很简单: 1. 两名玩家同时出手势,一起喊出“猜拳!” 2. 根据上面的规则,确定哪个手势胜出。
3. 胜利的玩家获得一分,直到达到预定的分数或时间结束。
玩家可以使用一些技巧来增加游戏的乐趣和挑战性: - 观察对手的习惯,尝试预测对手的下一步手势。
- 通过改变出手势的顺序或频率来混淆对手。
- 在出手势时保持冷静,不要被对手的动作影响自己的选择。
猜拳小游戏虽然简单,但由于其随机性和对策略的需求,使得玩家可以尝试不同的方法和策略来增加游戏的乐趣和挑战性。
希望读者可以尝试玩这个有趣的小游戏,并享受其中的乐趣!。
猜拳小游戏

猜拳小游戏
猜拳小游戏是一种简单而有趣的游戏,通常由两名玩家进行。
游戏的目标是通过选择不同的手势来击败对手,以赢得比赛。
首先,让我们来了解一下游戏的规则和术语。
猜拳小游戏通常包括三种手势:剪刀、石头和布。
剪刀可以剪石头,石头可以砸扁布,布可以包住剪刀。
玩家需要在心中选择一个手势,然后在信号后同时展示出来。
玩家可以使用一些技巧来增加游戏的乐趣和挑战性。
例如,可以观察对手的习惯,然后尝试预测他们的下一个动作。
另外,可以尝试制造一些心理战术,例如改变自己的动作频率,以迷惑对手。
接下来,让我们来了解一下游戏的玩法。
游戏开始时,两名玩家站在一起,准备好展示自己的手势。
然后,他们会一起喊出“猜拳,开始!”的口号,然后同时展示自己选择的手势。
接着,根据两名玩家的手势来判断胜负,然后进行下一轮比赛,直到有一名玩家赢得比赛为止。
猜拳小游戏可以在不同的场合和环境中进行,例如在家中、学校或者户外活动中。
它既可以作为一种简单的娱乐方式,也可以作为一种锻炼观察力和心理战术的方式。
希望通过这些规则和技巧,你可以充分享受猜拳小游戏带来的乐趣和挑战。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南华大学计算机科学与技术学院实验报告(2013 ~ 2014 学年度第一学期)面向对象程序设课程名称实验名称人机猜拳游戏姓名唐龙学号*********** 专业船山软件班级13级1班地点8—410 教师夏石莹一、实验目的本课程设计所要求达到的目的:通过Java程序设计的一些重要理论基础来实现“人机猜拳小游戏”的功能。
通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果,逐步建立正确的全局观念。
二、实验设计与要求问题定义:创建小游戏,实现电脑与玩家之间互动猜拳这主要功能,并能显示设置的图片,增加美观。
研究意义:通过本次程序设计,我掌握了Java语言的基本运用,提高了理论结合实际能力。
设计要求:1)界面的左侧是电脑或者玩家的名字,让界面看起来一目了然。
2)系统界面的中间是电脑或者玩家出拳的图片。
图片可以生动形象得表示出电脑或者玩家出的拳,显示的图片在对话框中也相得益彰。
在图片的下方会显示,人机猜拳以后的输赢。
3)界面的右侧是三个剪刀石头布的按钮。
玩家通过按钮出拳,电脑随机出拳,猜拳的输赢结果在下方显示。
三、系统的主要功能1.可以通过按钮的方式,与电脑进行猜拳游戏,电脑随机出拳;2.可以显示出拳图片。
四、实验工具Windows 7;jdk1.6.0_21;eclipse五、项目实现首先建立一个Test类,如下:import java.awt.Color;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.AbstractButton;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;public class Test extends JFrame {JLabel jl,jl1;final JLabel jl2,jl3;JLabel jl4;public String person;public String m;int j;int i;final String[] arr = new String[3];public void Win(String person) {arr[0] = "石头";arr[1] = "剪刀";arr[2] = "布";person = arr[j];i = (int) (Math.random() * 3);String c = arr[i];//判断输赢if (c.equals(person)) {jl4.setText("平手");} else if (c.equals("剪刀") && person.equals("石头") || c.equals("石头")&& person.equals("布") || c.equals("布") && person.equals("剪刀")) {jl4.setText("你赢了");} else {jl4.setText("你输了");}}public Test() {JFrame jf = new JFrame();this.setSize(400, 300);this.setTitle("猜拳游戏");this.setLayout(null);jl = new JLabel("电脑出的是:");jl.setBounds(50, 50, 100, 50);this.add(jl);jl1 = new JLabel("你出的是:");jl1.setBounds(50, 120, 100, 50);this.add(jl1);// 电脑的出的拳标签jl2 = new JLabel();jl2.setBounds(150, 50, 100, 50);this.add(jl2);//我出的拳的标签jl3 = new JLabel();jl3.setBounds(150, 120, 100, 60);this.add(jl3);jl4 = new JLabel("");jl4.setBounds(150, 200, 100, 50);this.add(jl4);// 按钮final JButton btn = new JButton("石头");btn.setBounds(280, 50, 60, 40);this.add(btn);final JButton btn1 = new JButton("剪刀");btn1.setBounds(280, 105, 60, 40);this.add(btn1);final JButton btn2 = new JButton("布");btn2.setBounds(280, 160, 60, 40);this.add(btn2);//按钮事件监听btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { //如果你鼠标点击的是石头按钮j = 0;String b = btn.getActionCommand();jl3.setText(b);jl3.setIcon(newImageIcon(MyImg.class.getResource(j+".jpg")));Win(person);Test.this.jl2.setIcon(newImageIcon(MyImg.class.getResource (i+".jpg")));Test.this.jl2.setText(arr[i]);System.out.println(arr[i]);}});btn1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) { j = 1;String b1 = btn1.getActionCommand();jl3.setText(b1);jl3.setIcon(newImageIcon(MyImg.class.getResource(j+".jpg")));Win(person);Test.this.jl2.setIcon(newImageIcon(MyImg.class.getResource (i+".jpg")));Test.this.jl2.setText(arr[i]);System.out.println(arr[i]);// System.out.println(b);}});btn2.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) { j = 2;String b2 = btn2.getActionCommand();jl3.setText(b2);jl3.setIcon(newImageIcon(MyImg.class.getResource(j+".jpg")));Win(person);Test.this.jl2.setText(arr[i]);System.out.println(arr[i]);Test.this.jl2.setIcon(newImageIcon(MyImg.class.getResource (i+".jpg")));// System.out.println(b);}});this.setVisible(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(null);this.setResizable(false);}public static void main(String[] args) {Test t = new Test();}}再建立一个名为MyImg的类,把下面几张图片放到该类下图片名称自左向右依次为布、石头、剪刀。
六、运行结果图1 开始界面图2 游戏过程图3 游戏过程图4 游戏过程七、实验总结从这次设计中,首先我发现了自己有很多不足的地方,根本满足不了平时编写程序的需要。
此外,我对课程设计的要求与方法不够熟练。
所以,我们要在以后的学习中,要养成好的实践习惯。
对以后的学习有很大的帮助。
这个游戏虽然很小,但是所用的专业知识很多,更全面。