java控件猜拳代码 java猜拳代码简单

求JAVA人机猜拳的代码,类似一下界面 。自己纯手打java控件猜拳代码,老半天才弄出来啊
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
【java控件猜拳代码 java猜拳代码简单】import java.util.Random;
import javax.swing.AbstractAction;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Demo2 extends JFrame {
private JLabel lb1, lb2, lb3, lb4; // 提示标签
private JTextField ta1, ta2;// 两个文本框
private JButton b1, b2, b3; // 三个按钮
private JPanel p1, p2; // 两个JPanel面板
public Demo2() {
// 初始化所有组件
lb1 = new JLabel("欢迎使用人机猜拳程序");
lb2 = new JLabel("你出拳:");
lb3 = new JLabel("电脑出拳:");
lb4 = new JLabel("结果");
ta1 = new JTextField();
ta1.setPreferredSize(new Dimension(60, 60)); // 设置大小
ta1.setEditable(false);//设置不可编辑
ta2 = new JTextField();
ta2.setPreferredSize(new Dimension(60, 60));
ta2.setEditable(false);//设置不可编辑
b1 = new JButton("剪刀");
b2 = new JButton("石头");
b3 = new JButton("布");
p1 = new JPanel();
p2 = new JPanel();
// 设置第一个面板内容
Box box = Box.createVerticalBox();
Box box1 = Box.createHorizontalBox();
box1.add(lb2);
box1.add(ta1);
box1.add(lb3);
box1.add(ta2);
box.add(lb1);
box.add(Box.createVerticalStrut(40));
box.add(box1);
box.add(Box.createVerticalStrut(10));
box.add(lb4);
box.add(new JLabel());
p1.add(box);
// 设置第二个面板
p2.setLayout(new GridBagLayout()); // 使用GridBagLayout布局管理器
p2.setPreferredSize(new Dimension(0, 60));
GridBagConstraints g2 = new GridBagConstraints();
g2.fill = GridBagConstraints.BOTH;
g2.weightx = 1.0;
g2.weighty = 1.0;
g2.gridx = 0;
g2.gridy = 0;
p2.add(b1, g2);
g2.gridx = 1;
p2.add(b2, g2);
g2.gridx = 2;
p2.add(b3, g2);
//为3个按钮添加事件
b1.addActionListener(new buttonAction());
b2.addActionListener(new buttonAction());
b3.addActionListener(new buttonAction());
this.getContentPane().add(p1);
this.getContentPane().add(p2, BorderLayout.SOUTH);
this.setTitle("机器人猜拳游戏");
this.setSize(300, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
//事件类
class buttonAction extends AbstractAction{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1){
ta1.setText("剪刀");
init(ta1.getText());
}else if(e.getSource()==b2){
ta1.setText("石头");
init(ta1.getText());
}else if(e.getSource()==b3){
ta1.setText("布");
init(ta1.getText());
}
}
// 模拟电脑出拳java控件猜拳代码,产生三个随机数 。0代表剪刀java控件猜拳代码,1代表石头java控件猜拳代码,2代表布
public String getQuan(){
String str="";
int num=new Random().nextInt(3) ;
if(num==0){
str="剪刀";
}else if(num==1){
str="石头";
}else if(num==2){
str="布";
}
return str;
}
// 判断输赢方法
public String isying(String s1,String s2){
String s="";
if(s1.equals(s2)){
s="平局";
}else if(s1.equals("剪刀")s2.equals("布")){
s="你赢";
}else if(s1.equals("石头")s2.equals("剪刀")){
s="你赢";
}else if(s1.equals("布")s2.equals("石头")){
s="你赢";
}else{
s="电脑赢";
}
return s;
}
public void init(String wo){
String sy=""; // 保存输赢结果
String dncq=getQuan(); //电脑出拳
if(wo.equals(dncq)){
sy="平局";
}else if(wo.equals("剪刀")dncq.equals("布")){
sy="你赢";
}else if(wo.equals("石头")dncq.equals("剪刀")){
sy="你赢";
}else if(wo.equals("布")dncq.equals("石头")){
sy="你赢";
}else{
sy="电脑赢";
}
ta2.setText(dncq);// 电脑出拳
lb4.setText("结果:" sy);
}
}
public static void main(String[] args) {
new Demo2();
}
}
java代码猜拳游戏相关代码请教comp是电脑产生的随机数字(电脑出的拳),people 是人出的拳 。因为剪刀石头布只有 12 3
。如果电脑的数字比的你刚好大1,就是它比你的大 。如21,32对应就是(石头大于剪刀,布大于石头) 。但也有可能是剪刀大于布。那么剪刀的位子是1 , 布的位子是3. 所以当电脑数字减你的数字等于2时 就是(电脑出的布,你出的石头这样的情况了) 。
所以是if((comp-people)==-1||(comp-people)==2) 这两者结合就是你赢的时候
Java使用循环,实现猜拳游戏统计多少局及胜率?为了让游戏有参与感,并体现java面对对象的思想,我先创建一个Player选手类,包含选手的名字playerName还有出拳方法guess() 。出拳时采用随机获取0、1和2的方式分别代表石头、剪刀和布,代码如下:
public class Player {
private String playerName;
public Player(String playerName) {
this.playerName = playerName;
}
public String getPlayerName() {
return playerName;
}
//出拳方法 0-石头 1-剪刀 2-布
public int guess() {
//随机获取0、1、2
int num = new Random().nextInt(3);
if (num == 0) {
System.out.print("选手"this.playerName"出的是石头 ");
} else if (num == 1) {
System.out.print("选手"this.playerName"出的是剪刀 ");
} else if (num == 2) {
System.out.print("选手"this.playerName"出的是布 ");
}
return num;
}
}
然后在主类中,首先要输入对局的总数,然后创建两名选手进行pk , 在pk()方法中制定了获胜规则 , 详见代码注释 。最终统计并利用BigDecimal计算胜率(BigDecimal可以很完美的解决整数除法及其四舍五入保留小数的问题):
public class Main {
public static void main(String[] args) {
System.out.println("请输入本局局数:");
Scanner scanner = new Scanner(System.in);
int sum = scanner.nextInt();
//创建结果数组 , resultArray[0]代表p1的获胜局数,resultArray[1]代表p2的获胜局数,resultArray[2]代表平局局数
int[] resultArray = new int[3];
//创建两名选手
Player p1 = new Player("张三");
Player p2 = new Player("李四");
for (int i = 0; isum; i) {
//根据总局数进行pk
int result = pk(p1, p2);
if (result == 1) {
resultArray[0];
} else if (result == -1) {
resultArray[1];
} else {
resultArray[2];
}
}
System.out.println("");
System.out.println("最终结果统计:");
System.out.println("选手["p1.getPlayerName()"]获胜局数为:"resultArray[0]",胜率为:"
new BigDecimal(resultArray[0]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP))"%");
System.out.println("选手["p2.getPlayerName()"]获胜局数为:"resultArray[1]",胜率为:"
new BigDecimal(resultArray[1]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP))"%");
System.out.println("平局局数为:"resultArray[2]",平局率为:"
new BigDecimal(resultArray[2]).multiply(new BigDecimal(100).divide(new BigDecimal(sum), 2, BigDecimal.ROUND_HALF_UP))"%");
}
//0-石头 1-剪刀 2-布
//return 0:平局 1:p1获胜 -1:p2获胜
private static int pk(Player p1, Player p2) {
System.out.println("--------------------");
int a = p1.guess();
int b = p2.guess();
System.out.print("\n对局结果:");
//出拳相同平局
if (a == b) {
System.out.println("平局");
return 0;
}
//p1获胜条件:p1出石头时p2出剪刀,p1出剪刀时p2出步,p1出布时p2出石头
else if ((a == 0b == 1) || (a == 1b == 2) || (a == 2b == 0)) {
System.out.println("选手["p1.getPlayerName()"]获胜");
return 1;
}
//p2获胜条件:p1出石头时p2出布,p1出剪刀时p2出石头,p1出布时p2出剪刀
else if ((a == 0b == 2) || (a == 1b == 0) || (a == 2b == 1)) {
System.out.println("选手["p2.getPlayerName()"]获胜");
return -1;
} else {
//因为规定了随机数产生0、1、2,所以其实不会走到本分支
throw new IllegalArgumentException("本局无效");
}
}
}
对局5局的运行结果:
我这里就只能统计当前游戏的数据了,如果你想统计多局游戏总的胜率信息,那么需要将每一局的比赛结果写到txt文件里,最终根据txt文件内容统计即可 。
求一个java猜拳游戏程序package test;
import java.util.Random;
import java.util.Scanner;
/**
* 猜拳游戏思路
* 1、定义输入函数
* 2、提示用户输入猜拳数值
* 3、定义随机一个数作为电脑数值
* 4、判断[用户输入数值]与 [电脑随机数值]
* 5、能够相等就是打平,不能相等就利用、||逻辑符判断输赢
* 6、设定数值1-石头 2-剪刀3-布
*/
public class CaiQuanYouXi {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);//定义输入函数in,Scanner包功能,输入数值用java控件猜拳代码的
System.out.println("--------------猜拳游戏---------------");
System.out.println("请输入一个数值:1、石头 2、剪刀 3、布");//提示输入数值
System.out.println(" ");//空行
int x=in.nextInt();//让用户输入Xjava控件猜拳代码的数值
Random on=new Random();//定义电脑的随机数值的函数on
int y=on.nextInt(3) 1;//定义y随机函数数值范围(1--3)
if(x=4||x==0){//判断用户是否输入非1--3范围
System.out.println("亲,请正确输入:1、石头 2、剪刀 3、布 。你输入java控件猜拳代码了:" x);
}else{
/*下面是判断用户输入x的数值 嵌套if*/
if(x==y){
if(x==1){ //判断打平的情况
System.out.println("你:石头------电脑:石头PK:很幸运打平手");
}else if(x==2){
System.out.println("你:剪刀------电脑:剪刀PK:很幸运打平手");
}else {
System.out.println("你:布------电脑:布PK:很幸运打平手");
}
}else if(x==1y==2||x==2y==3||x==3y==1){ //开始判断赢的情况
if(x==1y==2){
System.out.println("你:石头------电脑:剪刀PK:恭喜您,赢了!");
}else if(x==2y==3){
System.out.println("你:剪刀------电脑:布PK:恭喜您,赢了!");
}else {
System.out.println("你:布------电脑:石头PK:恭喜您,赢了!");
}
}else {//开始判断输的情况
if(x==1y==3){
System.out.println("你:石头------电脑:布PK:很遗憾,输了!");
}else if(x==2y==1){
System.out.println("你:剪刀------电脑:石头PK:很遗憾,输了!");
}else {
System.out.println("你:布------电脑:剪刀PK:很遗憾,输了!");
}
}
}
}
}
运行后的效果展示java控件猜拳代码:
--------------猜拳游戏---------------
请输入一个数值:1、石头 2、剪刀 3、布
1
你:石头------电脑:布PK:很遗憾,输了!
--------------猜拳游戏---------------
请输入一个数值:1、石头 2、剪刀 3、布
4
亲,请正确输入:1、石头 2、剪刀 3、布 。你输入了:4
java控件猜拳代码的介绍就聊到这里吧 , 感谢你花时间阅读本站内容,更多关于java猜拳代码简单、java控件猜拳代码的信息别忘了在本站进行查找喔 。

    推荐阅读