Java人机猜拳源代码

合集下载

Java五子棋游戏源代码(人机对战)

Java五子棋游戏源代码(人机对战)

//Java编程:五子棋游戏源代码import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;import java.io.PrintStream;import javax.swing.JComponent;import javax.swing.JPanel;/**main方法创建了ChessFrame类的一个实例对象(cf),*并启动屏幕显示显示该实例对象。

**/public class FiveChessAppletDemo {public static void main(String args[]){ChessFrame cf = new ChessFrame();cf.show();}}/**类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"};private String[] strmode={"人机对弈","人人对弈"};public static boolean iscomputer=true,checkcomputer=true; private int width,height;private ChessModel cm;private MainPanel mp;//构造五子棋游戏的主窗体public ChessFrame() {this.setTitle("五子棋游戏");cm=new ChessModel(1);mp=new MainPanel(cm);Container con=this.getContentPane();con.add(mp,"Center");this.setResizable(false);this.addWindowListener(new ChessWindowEvent());MapSize(20,15);JMenuBar mbar = new JMenuBar();this.setJMenuBar(mbar);JMenu gameMenu = new JMenu("游戏");mbar.add(makeMenu(gameMenu, new Object[] {"开局", "棋盘","模式", null, "退出"}, this));JMenu lookMenu =new JMenu("视图");mbar.add(makeMenu(lookMenu,new Object[] {"Metal","Motif","Windows"},this));JMenu helpMenu = new JMenu("帮助");mbar.add(makeMenu(helpMenu, new Object[] {"关于"}, this));}//构造五子棋游戏的主菜单public JMenu makeMenu(Object parent, Object items[], Object target){ JMenu m = null;if(parent instanceof JMenu)m = (JMenu)parent;else if(parent instanceof String)m = new JMenu((String)parent);elsereturn null;for(int i = 0; i < items.length; i++)if(items[i] == null)m.addSeparator();else if(items[i] == "棋盘"){JMenu jm = new JMenu("棋盘");ButtonGroup group=new ButtonGroup();JRadioButtonMenuItem rmenu;for (int j=0;j<strsize.length;j++){rmenu=makeRadioButtonMenuItem(strsize[j],target);if (j==0)rmenu.setSelected(true);jm.add(rmenu);group.add(rmenu);}m.add(jm);}else if(items[i] == "模式"){JMenu jm = new JMenu("模式");ButtonGroup group=new ButtonGroup();JRadioButtonMenuItem rmenu;for (int h=0;h<strmode.length;h++){rmenu=makeRadioButtonMenuItem(strmode[h],target);if(h==0)rmenu.setSelected(true);jm.add(rmenu);group.add(rmenu);}m.add(jm);}elsem.add(makeMenuItem(items[i], target));return m;}//构造五子棋游戏的菜单项public JMenuItem makeMenuItem(Object item, Object target){ JMenuItem r = null;if(item instanceof String)r = new JMenuItem((String)item);else if(item instanceof JMenuItem)r = (JMenuItem)item;elsereturn null;if(target instanceof ActionListener)r.addActionListener((ActionListener)target);return r;}//构造五子棋游戏的单选按钮式菜单项public JRadioButtonMenuItem makeRadioButtonMenuItem( Object item, Object target){JRadioButtonMenuItem r = null;if(item instanceof String)r = new JRadioButtonMenuItem((String)item);else if(item instanceof JRadioButtonMenuItem)r = (JRadioButtonMenuItem)item;elsereturn null;if(target instanceof ActionListener)r.addActionListener((ActionListener)target);return r;}public void MapSize(int w,int h){setSize(w * 20+50 , h * 20+100 );if(this.checkcomputer)this.iscomputer=true;elsethis.iscomputer=false;mp.setModel(cm);mp.repaint();}public boolean getiscomputer(){return this.iscomputer;}public void restart(){int modeChess = cm.getModeChess();if(modeChess <= 3 && modeChess >= 1){cm = new ChessModel(modeChess);MapSize(cm.getWidth(),cm.getHeight());}else{System.out.println("\u81EA\u5B9A\u4E49");}}public void actionPerformed(ActionEvent e){String arg=e.getActionCommand();try{if (arg.equals("Windows"))UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");else if(arg.equals("Motif"))UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");elseUIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities.updateComponentTreeUI(this);}catch(Exception ee){}if(arg.equals("20x15")){this.width=20;this.height=15;cm=new ChessModel(1);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("30x20")){this.width=30;this.height=20;cm=new ChessModel(2);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("40x30")){this.width=40;this.height=30;cm=new ChessModel(3);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("人机对弈")){this.checkcomputer=true;this.iscomputer=true;cm=new ChessModel(cm.getModeChess());MapSize(cm.getWidth(),cm.getHeight());SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("人人对弈")){this.checkcomputer=false;this.iscomputer=false;cm=new ChessModel(cm.getModeChess());MapSize(cm.getWidth(),cm.getHeight());SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("开局")){restart();}if(arg.equals("关于"))JOptionPane.showMessageDialog(this, "五子棋游戏测试版本", "关于", 0);if(arg.equals("退出"))System.exit(0);}}/**类ChessModel实现了整个五子棋程序算法的核心*/class ChessModel {//棋盘的宽度、高度、棋盘的模式(如20×15)private int width,height,modeChess;//棋盘方格的横向、纵向坐标private int x=0,y=0;//棋盘方格的横向、纵向坐标所对应的棋子颜色,//数组arrMapShow只有3个值:1,2,3,-5,//其中1代表该棋盘方格上下的棋子为黑子,//2代表该棋盘方格上下的棋子为白子,//3代表为该棋盘方格上没有棋子,//-5代表该棋盘方格不能够下棋子private int[][] arrMapShow;//交换棋手的标识,棋盘方格上是否有棋子的标识符private boolean isOdd,isExist;public ChessModel() {}//该构造方法根据不同的棋盘模式(modeChess)来构建对应大小的棋盘public ChessModel(int modeChess){this.isOdd=true;if(modeChess == 1){PanelInit(20, 15, modeChess);}if(modeChess == 2){PanelInit(30, 20, modeChess);}if(modeChess == 3){PanelInit(40, 30, modeChess);}}//按照棋盘模式构建棋盘大小private void PanelInit(int width, int height, int modeChess){this.width = width;this.height = height;this.modeChess = modeChess;arrMapShow = new int[width+1][height+1];for(int i = 0; i <= width; i++){for(int j = 0; j <= height; j++){arrMapShow[i][j] = -5;}}}//获取是否交换棋手的标识符public boolean getisOdd(){return this.isOdd;}//设置交换棋手的标识符public void setisOdd(boolean isodd){if(isodd)this.isOdd=true;elsethis.isOdd=false;}//获取某棋盘方格是否有棋子的标识值public boolean getisExist(){return this.isExist;}//获取棋盘宽度public int getWidth(){return this.width;}//获取棋盘高度public int getHeight(){return this.height;}//获取棋盘模式public int getModeChess(){return this.modeChess;}//获取棋盘方格上棋子的信息public int[][] getarrMapShow(){return arrMapShow;}//判断下子的横向、纵向坐标是否越界private boolean badxy(int x, int y){if(x >= width+20 || x < 0)return true;return y >= height+20 || y < 0;}//计算棋盘上某一方格上八个方向棋子的最大值,//这八个方向分别是:左、右、上、下、左上、左下、右上、右下public boolean chessExist(int i,int j){if(this.arrMapShow[i][j]==1 || this.arrMapShow[i][j]==2)return true;return false;}//判断该坐标位置是否可下棋子public void readyplay(int x,int y){if(badxy(x,y))return;if (chessExist(x,y))return;this.arrMapShow[x][y]=3;}//在该坐标位置下棋子public void play(int x,int y){if(badxy(x,y))return;if(chessExist(x,y)){this.isExist=true;return;}elsethis.isExist=false;if(getisOdd()){setisOdd(false);this.arrMapShow[x][y]=1;}else{setisOdd(true);this.arrMapShow[x][y]=2;}}//计算机走棋/**说明:用穷举法判断每一个坐标点的四个方向的的最大棋子数,*最后得出棋子数最大值的坐标,下子**/public void computerDo(int width,int height){int max_black,max_white,max_temp,max=0;setisOdd(true);System.out.println("计算机走棋...");for(int i = 0; i <= width; i++){for(int j = 0; j <= height; j++){if(!chessExist(i,j)){//算法判断是否下子max_white=checkMax(i,j,2);//判断白子的最大值max_black=checkMax(i,j,1);//判断黑子的最大值max_temp=Math.max(max_white,max_black);if(max_temp>max){max=max_temp;this.x=i;this.y=j;}}}}setX(this.x);setY(this.y);this.arrMapShow[this.x][this.y]=2;}//记录电脑下子后的横向坐标public void setX(int x){this.x=x;}//记录电脑下子后的纵向坐标public void setY(int y){this.y=y;}//获取电脑下子的横向坐标public int getX(){return this.x;}//获取电脑下子的纵向坐标public int getY(){return this.y;}//计算棋盘上某一方格上八个方向棋子的最大值,//这八个方向分别是:左、右、上、下、左上、左下、右上、右下public int checkMax(int x, int y,int black_or_white){int num=0,max_num,max_temp=0;int x_temp=x,y_temp=y;int x_temp1=x_temp,y_temp1=y_temp;//judge rightfor(int i=1;i<5;i++){x_temp1+=1;if(x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge leftx_temp1=x_temp;for(int i=1;i<5;i++){x_temp1-=1;if(x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num<5)max_temp=num;//judge upx_temp1=x_temp;y_temp1=y_temp;num=0;for(int i=1;i<5;i++){y_temp1-=1;if(y_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge downy_temp1=y_temp;for(int i=1;i<5;i++){y_temp1+=1;if(y_temp1>this.height)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num>max_temp&&num<5)max_temp=num;//judge left_upx_temp1=x_temp;y_temp1=y_temp;num=0;for(int i=1;i<5;i++){x_temp1-=1;y_temp1-=1;if(y_temp1<0 || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge right_downx_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<5;i++){x_temp1+=1;y_temp1+=1;if(y_temp1>this.height || x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num>max_temp&&num<5)max_temp=num;//judge right_upx_temp1=x_temp;y_temp1=y_temp;num=0;for(int i=1;i<5;i++){x_temp1+=1;y_temp1-=1;if(y_temp1<0 || x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge left_downx_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<5;i++){x_temp1-=1;y_temp1+=1;if(y_temp1>this.height || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num>max_temp&&num<5)max_temp=num;max_num=max_temp;return max_num;}//判断胜负public boolean judgeSuccess(int x,int y,boolean isodd){ int num=1;int arrvalue;int x_temp=x,y_temp=y;if(isodd)arrvalue=2;elsearrvalue=1;int x_temp1=x_temp,y_temp1=y_temp;//判断右边for(int i=1;i<6;i++){x_temp1+=1;if(x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)num++;elsebreak;}//判断左边x_temp1=x_temp;for(int i=1;i<6;i++){if(x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}if(num==5)return true;//判断上方x_temp1=x_temp;y_temp1=y_temp;num=1;for(int i=1;i<6;i++){y_temp1-=1;if(y_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}//判断下方y_temp1=y_temp;for(int i=1;i<6;i++){y_temp1+=1;if(y_temp1>this.height)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}if(num==5)return true;//判断左上x_temp1=x_temp;y_temp1=y_temp;num=1;for(int i=1;i<6;i++){x_temp1-=1;if(y_temp1<0 || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}//判断右下x_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<6;i++){x_temp1+=1;y_temp1+=1;if(y_temp1>this.height || x_temp1>this.width) break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}if(num==5)return true;//判断右上x_temp1=x_temp;y_temp1=y_temp;num=1;for(int i=1;i<6;i++){x_temp1+=1;y_temp1-=1;if(y_temp1<0 || x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}//判断左下x_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<6;i++){x_temp1-=1;y_temp1+=1;if(y_temp1>this.height || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)num++;elsebreak;}if(num==5)return true;return false;}//赢棋后的提示public void showSuccess(JPanel jp){JOptionPane.showMessageDialog(jp,"你赢了,好厉害!","win",RMATION_MESSAGE);}//输棋后的提示public void showDefeat(JPanel jp){JOptionPane.showMessageDialog(jp,"你输了,请重新开始!","lost",RMATION_MESSAGE);}}/**类MainPanel主要完成如下功能:*1、构建一个面板,在该面板上画上棋盘;*2、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等)**/class MainPanel extends JPanelimplements MouseListener,MouseMotionListener{private int width,height;//棋盘的宽度和高度private ChessModel cm;//根据棋盘模式设定面板的大小MainPanel(ChessModel mm){cm=mm;width=cm.getWidth();height=cm.getHeight();addMouseListener(this);}//根据棋盘模式设定棋盘的宽度和高度public void setModel(ChessModel mm){cm = mm;width = cm.getWidth();height = cm.getHeight();}//根据坐标计算出棋盘方格棋子的信息(如白子还是黑子),//然后调用draw方法在棋盘上画出相应的棋子public void paintComponent(Graphics g){super.paintComponent(g);for(int j = 0; j <= height; j++){for(int i = 0; i <= width; i++){int v = cm.getarrMapShow()[i][j];draw(g, i, j, v);}}}//根据提供的棋子信息(颜色、坐标)画棋子public void draw(Graphics g, int i, int j, int v){int x = 20 * i+20;int y = 20 * j+20;//画棋盘if(i!=width && j!=height){g.setColor(Color.white);g.drawRect(x,y,20,20);}//画黑色棋子if(v == 1 ){g.setColor(Color.gray);g.drawOval(x-8,y-8,16,16);g.setColor(Color.black);g.fillOval(x-8,y-8,16,16);}//画白色棋子if(v == 2 ){g.setColor(Color.gray);g.drawOval(x-8,y-8,16,16);g.setColor(Color.white);g.fillOval(x-8,y-8,16,16);}if(v ==3){g.setColor(Color.cyan);g.drawOval(x-8,y-8,16,16);}}//响应鼠标的点击事件,根据鼠标的点击来下棋,//根据下棋判断胜负等public void mousePressed(MouseEvent evt){int x = (evt.getX()-10) / 20;int y = (evt.getY()-10) / 20;System.out.println(x+" "+y);if (evt.getModifiers()==MouseEvent.BUTTON1_MASK){cm.play(x,y);System.out.println(cm.getisOdd()+" "+cm.getarrMapShow()[x][y]);repaint();if(cm.judgeSuccess(x,y,cm.getisOdd())){cm.showSuccess(this);evt.consume();ChessFrame.iscomputer=false;}//判断是否为人机对弈if(ChessFrame.iscomputer&&!cm.getisExist()){puterDo(cm.getWidth(),cm.getHeight());repaint();if(cm.judgeSuccess(cm.getX(),cm.getY(),cm.getisOdd())){cm.showDefeat(this);evt.consume();}}}}public void mouseClicked(MouseEvent evt){}public void mouseReleased(MouseEvent evt){}public void mouseEntered(MouseEvent mouseevt){}public void mouseExited(MouseEvent mouseevent){}public void mouseDragged(MouseEvent evt){}//响应鼠标的拖动事件public void mouseMoved(MouseEvent moveevt){int x = (moveevt.getX()-10) / 20;int y = (moveevt.getY()-10) / 20;cm.readyplay(x,y);repaint();}}class ChessWindowEvent extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0);}ChessWindowEvent(){}}。

Java猜拳小游戏程序设计实验报告

Java猜拳小游戏程序设计实验报告

班级:学号:姓名:实验题目:猜拳小游戏实验要求:用java编写一个人机对战的猜拳小游戏。

人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。

有简单的操作界面。

实验内容:1、问题分析过程:(1)首先分析猜拳游戏本身的玩法:人选择性出拳,电脑随机出拳,判断输赢,记录输赢情况。

(2)用面向对象的思想来分析:在游戏过程中有几个对象组成人电脑游戏规则属性:名字name,输赢次数(比分)score 行为:出拳ShowFirst()选择性属性:名字name,输赢次数(比分)score 行为:出拳showFist()随机Game类有哪些属性和行为呢?比赛结果calcResul()2、主要实现代码:import java.util.*; public cla StartGame { public static void main(String[]args){ Game start = new Game(;//实例化游戏类start.initial(; //调用初始化方法start.startGame(; //调用游戏开始方法start.showResult(; //调用游戏结果显示方法} } import java.util.*; public cla Person { String name;//名字属性int score;//积分属性//出拳方法public int showFist({System.out.print(\"\\n请出拳:1.剪刀2.石头3.布(输入相应数字):\"); Scanner input = new Scanner(System.in);int num = input.nextInt(;String fist = \"\";//保存出拳switch(num){ case 1:fist = \"剪刀\";break;case 2:fist = \"石头\";break;case 3:fist = \"布\";break;}System.out.println(name + \"出拳:\" + fist);return num; } } import java.util.*; public cla Game { //Person person; //甲方int count;//对战次数Person person = new Person(; //实例化用户类//初始化方法public int initial({count = 0;return count; } //游戏开始方法public void startGame({//显示游戏开始界面System.out.println(\" ---------------欢迎进入游戏世System.out.println(\"\\t\\t******************************\");System.out.println(\"\\t\\t**^_^ 猜拳,Start ^_^**\");System.out.println(\"\\t\\t*****************************\");界--------------\\n\");System.out.println(\"\\n\\n出拳规则:1.剪刀 2.石头 3.布\"); //选择计算机角色System.out.print(\"请输入你的姓名:\"); = input.next(;//显示对战双方if(con.equals(\"y\")){//判断是否开始String answer = \"y\";while(\"y\".equals(answer)){//循环条件是是否开始下一轮//出拳perFist = person.showFist(;//调用用户出拳方法//裁决System.out.println(\"结果:和局,真衰!\\n\"); //平局System.out.println(\"结果:恭喜, 你赢了!\\n\"); //用户赢person.score++;//累计用户积分}else{}} System.out.println(\"结果说:^_^,你输了,真笨!\\n\");//计算机赢//累计计算机积分 } count++;//累计对战次数System.out.print(\"是否开始下一轮(y/n):\"); answer = input.next(; }System.out.println(\"对战次数:\" + count); System.out.println(\"\\n姓名\\t得分\\n\" + + \"\\t\" + person.score//比较积分System.out.println(\"结果:打成平手,下次再和你一分高下!\");}}else{System.out.println(\"结果:呵呵,笨笨,下次加油哦!\");}String name;//名字属性 int score;//积分属性 //出拳方法public int showFist({ int num = (int)(Math.random(*3) + 1; String fist = \"\"; switch(num){ case 1:fist = \"剪刀\";break; case 2:fist = \"石头\";break; case 3:fist = \"布\";break;System.out.println(name + \"出拳:\" + fist);return num; } } 运行界面:3、实验心得体会:从本次课程设计的完成中,我发现我有很多不足的地方,最突出的是所掌握的知识太少,学到的知识应用不到实践中。

使用java实现猜拳小游戏

使用java实现猜拳小游戏

使⽤java实现猜拳⼩游戏本⽂实例为⼤家分享了java实现猜拳⼩游戏的具体代码,供⼤家参考,具体内容如下实现下图要求public class User {private String u_name;private int u_score;public User() {super();}public User(String name, int score) {super();this.u_name = name;this.u_score = score;}public String getName() {return u_name;}public void setName(String name) {this.u_name = name;}public int getScore() {return u_score;}public void setScore(int score) {this.u_score = score;}/*** 出拳⽅法* @param choice 选择的数字代表出拳(1:⽯头2:剪⼑3:布)case 2:str = "剪⼑";break;case 3:str = "布";break;default:System.out.println("未知错误");break;}return str;}}public class Computer {private String c_name;private int c_score;public String getName() {return c_name;}public void setName(String name) {this.c_name = name;}public int getScore() {return c_score;}public void setScore(int score) {this.c_score = score;}/*** 出拳⽅法* @param choice 选择的数字代表出拳(1:⽯头2:剪⼑3:布)case 2:str = "剪⼑";break;case 3:str = "布";break;default:System.out.println("未知错误");break;}return str;}}import java.util.Scanner;public class Game {Scanner input = new Scanner(System.in);private User user;private Computer computer;private int count;private int c_score;private int u_score;//初始化⽅法public void init(){user = new User();computer = new Computer();System.out.println("-----------------欢迎进⼊游戏世界------------------");System.out.println("\t **************************");System.out.println("\t\t** 猜拳,开始 **");System.out.println("\t **************************");System.out.println();System.out.println("出拳规则:1.⽯头 2.剪⼑ 3.布");System.out.print("请选择对⽅⾓⾊:(1:曹操 2:孙权 3:刘备):"); int key = input.nextInt();switch (key) {case 1:computer.setName("曹操");break;case 2:computer.setName("孙权");System.out.println("⾮法输⼊...");break;}System.out.print("请输⼊你的姓名:");user.setName(input.next());System.out.println(user.getName()+" VS "+computer.getName());begin();}//是否开始执⾏循环执⾏直到输⼊n结束public void begin(){System.out.print("要开始吗(y/n):");// boolean falg = true;String str = input.next();if(str.equals("y")){while(true){score();System.out.print("是否开始下⼀轮:(y/n)");String str1 = input.next();count++;if(str1.equals("y")){}else{// falg = false;break;}}}show();}//⼈和机器出拳并判断胜负此处计算⽐赛次数双⽅得分public void score(){System.out.print("请出拳:");int choice1 = input.nextInt();String str1 = user.chuQuan(choice1);int choice2 = (int)(Math.random()*3+1);String str2 = computer.chuQuan(choice2);System.out.println("你出拳"+str1);System.out.println(computer.getName()+"出拳"+str2);if(choice1 == choice2){System.out.println("结果:平局");}else if(choice2-choice1==-1||choice2-choice1==2){System.out.println("结果:"+computer.getName()+"获胜...");c_score++;computer.setScore(c_score);}else if(choice1-choice2==-1||choice1-choice2==2){System.out.println("结果:恭喜你,你获胜...");u_score++;user.setScore(u_score);}}//显⽰⽐赛结果并⽐较得得出最后胜负public void show(){System.out.println("--------------------------------");System.out.println(user.getName()+" VS "+computer.getName());System.out.println("对战次数:"+count+"\n\n");System.out.println("姓名\t得分");System.out.println(user.getName()+"\t"+user.getScore());System.out.println(computer.getName()+"\t"+computer.getScore()+"\n"); if(user.getScore()>computer.getScore()){System.out.println("结果:恭喜恭喜");}else if(user.getScore()<computer.getScore()){System.out.println("结果:再接再厉");}else{System.out.println("结果:平局");}System.out.println("--------------------------------");}}测试类Game game = new Game();game.init();}}这样猜拳⼩游戏就实现了。

java面向对象编程--猜拳小游戏

java面向对象编程--猜拳小游戏

java⾯向对象编程--猜拳⼩游戏java⾯向对象编程实现--猜拳⼩游戏⽬标⽬标:玩家在控制台和电脑猜拳,电脑每次都会随机出⽯头/剪⼑/布,直到玩家选择退出游戏。

记录并显⽰玩家和电脑猜拳的成绩。

设计思路分析电脑的随机猜拳可以使⽤随机数⽣成,这⾥规定 0表⽰⽯头,1 表⽰剪⼑,2 表⽰布。

为了显⽰清晰,可以设置⼀个⽅法将⽣成的随机数转换为对应⽯头/剪⼑/布。

玩家在控制台输⼊(⽯头/剪⼑/布),但玩家也可能输⼊别的数,所以这⾥需要做⼀个玩家的输⼊校验 ,并考虑给玩家退出游戏的选择。

记录的结果有玩家猜拳选择,电脑猜拳选择和胜负。

为了⽅便管理和显⽰,这⾥设计⼀个结果类。

⽤于记录猜拳的结果,因为猜拳次数可能不⽌⼀次,所以考虑将结果保存到集合中,这⾥使⽤ ArrayList集合。

具体代码实现如下:import java.util.ArrayList;import java.util.Scanner;public class FingerGuessingGame {//测试实现类public static void main(String[] args) {Tom tom = new Tom();tom.guess();}}//玩家类class Tom {Scanner sc = new Scanner(System.in);//猜拳public void guess() {System.out.println("----------猜拳游戏开始(-1退出)---------");//使⽤ArrayList保存结果ArrayList<GuessResult> results = new ArrayList<>();while (true) {//玩家输⼊String tomGuess = checkInput();//如果输⼊-1退出游戏if (tomGuess.equals("-1"))break;//⽣成0-2的随机数int num = (int) (Math.random() * 3);//将获取到的数字按照之前的规定转换为字符串String comGuess = convertComputerGuess(num);System.out.println("电脑出 " + comGuess);//判断输赢String isWin = winORLoose(tomGuess, comGuess);System.out.println(isWin);//将结果添加到集合中results.add(new GuessResult(tomGuess, comGuess, isWin));}//输出结果System.out.println("-------本次猜拳的结果------");System.out.println("玩家\t\t\t电脑\t\t\t胜负");for (GuessResult result : results) {System.out.println(result);}}//获取电脑猜拳结果public String convertComputerGuess(int num) {//0代表⽯头,1剪⼑,2布if (num == 0)return "⽯头";if (num == 1)return "剪⼑";if (num == 2)return "布";return "";}//玩家输⼊校验public String checkInput() {while (true) {System.out.println("你出(⽯头/剪⼑/布)-1退出:");String choice = sc.next();if (choice.equals("⽯头") || choice.equals("剪⼑") ||choice.equals("布") || choice.equals("-1")) {return choice;} elseSystem.out.println("你的输⼊有误! 请检查并重新输⼊:");}}//判断输赢public String winORLoose(String tomGuess, String comGuess) {if (tomGuess.equals("⽯头") && comGuess.equals("剪⼑"))return "赢";else if (tomGuess.equals("剪⼑") && comGuess.equals("布"))return "赢";else if (tomGuess.equals("布") && comGuess.equals("⽯头"))return "赢";else if (tomGuess.equals(comGuess))return "平⼿";elsereturn "输";}}//结果类⽤于记录猜拳的结果class GuessResult {private String tomGuess;private String ComGuess;private String isWin;public GuessResult(String tomGuess, String comGuess, String isWin) { this.tomGuess = tomGuess;ComGuess = comGuess;this.isWin = isWin;}@Overridepublic String toString() {returntomGuess +"\t\t\t"+ComGuess + "\t\t\t" +isWin ;}}。

人机猜拳小游戏

人机猜拳小游戏

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。

java13人机猜拳

java13人机猜拳

java13⼈机猜拳public class Demo01 {public static void main(String[] args) {/** 你同桌和你要玩游戏.* 1 剪⼑,2 ⽯头,3 布*/// 判断结果.// 1 剪⼑,2 ⽯头,3 布int a = 1;// 剪⼑int b = 2;// ⽯头if (a == 1 && b == 3 || a == 2 && b == 1 || a == 3 && b == 2) {// 你赢了.System.out.println("你赢了");} else if (a == 1 && b == 2 || a == 2 && b == 3 || a == 3 && b == 1) {// 你输了System.out.println("你输了");} else {// 平局System.out.println("平局");}// int a = 5;// int b = 2;// 5⽐2⼤.}}package com.jh.test01;import java.util.Scanner;/**** ⽤户名* 属性: 姓名,积分.* 功能:出拳的功能.*/public class User {// 属性:// 姓名String name;// 积分--分数int score;// 出拳的功能。

/** 1 剪⼑,2 ⽯头,3 布* 1: 返回值类型。

int* 2:参数列表 -- ⽆*//*** "1 剪⼑,2 ⽯头,3 布"* @return 出的拳*/public int userHand() {Scanner sc = new Scanner(System.in);System.out.println("请输⼊你出的⼩拳拳");System.out.println("1 剪⼑,2 ⽯头,3 布");int num = sc.nextInt();// 等值判断switch (num) {case 1:System.out.println("您输出了剪⼑");break;case 2:System.out.println("您输出了⽯头");break;case 3:System.out.println("您输出了布");break;default:break;}return num;}}package com.jh.test01;import java.util.Random;/*** 电脑类。

Java程序设计人机猜拳

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编程语言实现简单程序的能力;培养学生分析问题、解决问题的能力。

情感态度价值观目标:培养学生对计算机科学的兴趣和好奇心;培养学生勇于尝试、不断探索的精神。

二、教学内容本课程的教学内容主要包括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代码(可打印修改)
3
int tempy=j*24+58; g.drawImage(whiteImage1, tempx, tempy, 15, 15, this); } } } } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { if(canplay) { x=e.getX(); y=e.getY(); if(x>=18&&x<=379&&y>=58&&y<=580) { x=(x-18)/24; y=(y-58)/24; //判断该坐标是否有棋子,没有则放棋子,有则显示已经有棋子对话框 if(allqz[x][y]==0) { //玩家鼠标点击的坐标设置为放黑子标志 allqz[x][y]=1; message="白方走棋"; this.repaint(); boolean Winflag=this.Win(); if(Winflag) { JOptionPane .showMessageDialog(this, "游戏结束:"+(allqz[x] [y]==1?"黑方胜":"白方胜")); canplay=false; } if(canplay) { //电脑通过最优算法获得最能够阻止玩家的黑棋成为5连得坐标x,y 并把这个坐标设置为放白子标记 //allqz[x][y]=2;
//把棋盘清空---将allqz[][]全部数据清零 allqz=new int[15][15]; //将游戏信息提示变回出示位置 message="黑方先行"; this.repaint(); } } if(e.getX()>=401&&e.getX()<=469&&e.getY()>=151&&e.getY()<=179) { JOptionPane.showMessageDialog(this, "这是一个简易五子棋游戏,玩家 持黑棋,电脑持白棋,"); JOptionPane.showMessageDialog(this, "任一方先在棋盘上形成横向、竖 向、斜向的连续的相同颜色的五个(含五个以上)棋子的一方为胜!"); } if(e.getX()>=401&&e.getX()<=469&&e.getY()>=252&&e.getY()<=280) {

java人机猜拳-石头剪刀布

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号熊盼允许,不得转载、复制。

Java简易猜拳小游戏设计

Java简易猜拳小游戏设计

吉林工程技术师范学院C程序设计课程设计报告书设计题目:Java简易猜拳小游戏专业:信息管理与信息系统班级: X0841 ****:***学号: ********** ****:***信息工程学院2009年12月目录摘要: (03)第一章绪论 (05)第二章系统分析 (07)第三章总体设计 (09)第四章编码实现 (11)第五章调试与测试 (14)总结: (15)附录:1源代码 (20)2参考资料 (30)摘要面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。

作为一种新的的编程语言,Java很大程度推广了面向对象的思想。

随着计算机技术的发展,Java 的强大展现出它不可替代的作用。

Java的功能不仅体现在它网络方面的应用,对于应用程序设计、游戏设计等Java都能满足需求。

本文针对Java 的具体应用,设计了一个小游戏。

根据游戏的规则,用户将可以和计算机进行简单对战。

程序实现了友好的用户交互界面,让用户能很好地对游戏进行操作。

关键字:JAVA GUI 游戏ABSTRACTThe Object-Oriented Method is a method which apllies the Object-Oriented Design to the process of the software exploiture and directs the ploy of development. It extracts the prime of the Structured Design for Computer Programmers, deals matters with a folksy fashion, which is considered to be a grand new software-develop technique.As a new programming language, Java spread the Object-Oriented Design in a certain degree. With the development of the technique of computer, the insurmountable function of JAVA is exhibited for its’ mightiness. Not only applies in network, JAVA also can fulfill the requirement of the Application-Design and Game-Design.In this paper, to use the idiographic application of JAVA , I design a game called . Following the regular of the game, user can play a simple revalry with computer. This programme actualizes a folksy GUI mode, which will make user master game easily.Keywords: JAVA GUI Game第一章绪论面向对象(OOP)的程序设计认为:现实世界是由一组彼此相关并互通信息的实体——对象(Object)组成的。

JAVA人机猜拳小游戏代码

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

摘要面向对象方法是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,它吸取了结构化程序设计的精华,以更接近人们通常思维的方式来处理问题,是一种全新的软件开发技术。

作为一种新的的编程语言,Java很大程度推广了面向对象的思想。

随着计算机技术的发展,Java的强大展现出它不可替代的作用。

Java的功能不仅体现在它网络方面的应用,对于应用程序设计、游戏设计等Java都能满足需求。

本文针对Java 的具体应用,设计了一个小游戏。

根据游戏的规则,用户将可以和计算机进行简单对战。

程序实现了友好的用户交互界面,让用户能很好地对游戏进行操作。

关键字:JAVA GUI 游戏ABSTRACTThe Object-Oriented Method is a method which apllies the Object-Oriented Design to the process of the software exploiture and directs the ploy of development. It extracts the prime of the Structured Design for Computer Programmers, deals matters with a folksy fashion, which is considered to be a grand new software-develop technique.As a new programming language, Java spread the Object-Oriented Design in a certain degree. With the development of the technique of computer, the insurmountable function of JA V A is exhibited for its’ mightiness. Not only applies in network, JA V A also can fulfill the requirement of the Application-Design and Game-Design.In this paper, to use the idiographic application of JA V A , I design a game called . Following the regular of the game, user can play a simple revalry with computer. This programme actualizes a folksy GUI mode, which will make user master game easily. Keywords: JA V A GUI Game目录一、背景与意义........................................................................................... 错误!未定义书签。

Java五子棋游戏源代码(人机对战)

Java五子棋游戏源代码(人机对战)

//Java编程:五子棋游戏源代码import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;import java.io.PrintStream;import javax.swing.JComponent;import javax.swing.JPanel;/**main方法创建了ChessFrame类的一个实例对象(cf),*并启动屏幕显示显示该实例对象。

**/public class FiveChessAppletDemo {public static void main(String args[]){ChessFrame cf = new ChessFrame();cf.show();}}/**类ChessFrame主要功能是创建五子棋游戏主窗体和菜单**/class ChessFrame extends JFrame implements ActionListener { private String[] strsize={"20x15","30x20","40x30"};private String[] strmode={"人机对弈","人人对弈"};public static boolean iscomputer=true,checkcomputer=true; private int width,height;private ChessModel cm;private MainPanel mp;//构造五子棋游戏的主窗体public ChessFrame() {this.setTitle("五子棋游戏");cm=new ChessModel(1);mp=new MainPanel(cm);Container con=this.getContentPane();con.add(mp,"Center");this.setResizable(false);this.addWindowListener(new ChessWindowEvent());MapSize(20,15);JMenuBar mbar = new JMenuBar();this.setJMenuBar(mbar);JMenu gameMenu = new JMenu("游戏");mbar.add(makeMenu(gameMenu, new Object[] {"开局", "棋盘","模式", null, "退出"}, this));JMenu lookMenu =new JMenu("视图");mbar.add(makeMenu(lookMenu,new Object[] {"Metal","Motif","Windows"},this));JMenu helpMenu = new JMenu("帮助");mbar.add(makeMenu(helpMenu, new Object[] {"关于"}, this));}//构造五子棋游戏的主菜单public JMenu makeMenu(Object parent, Object items[], Object target){ JMenu m = null;if(parent instanceof JMenu)m = (JMenu)parent;else if(parent instanceof String)m = new JMenu((String)parent);elsereturn null;for(int i = 0; i < items.length; i++)if(items[i] == null)m.addSeparator();else if(items[i] == "棋盘"){JMenu jm = new JMenu("棋盘");ButtonGroup group=new ButtonGroup();JRadioButtonMenuItem rmenu;for (int j=0;j<strsize.length;j++){rmenu=makeRadioButtonMenuItem(strsize[j],target);if (j==0)rmenu.setSelected(true);jm.add(rmenu);group.add(rmenu);}m.add(jm);}else if(items[i] == "模式"){JMenu jm = new JMenu("模式");ButtonGroup group=new ButtonGroup();JRadioButtonMenuItem rmenu;for (int h=0;h<strmode.length;h++){rmenu=makeRadioButtonMenuItem(strmode[h],target);if(h==0)rmenu.setSelected(true);jm.add(rmenu);group.add(rmenu);}m.add(jm);}elsem.add(makeMenuItem(items[i], target));return m;}//构造五子棋游戏的菜单项public JMenuItem makeMenuItem(Object item, Object target){ JMenuItem r = null;if(item instanceof String)r = new JMenuItem((String)item);else if(item instanceof JMenuItem)r = (JMenuItem)item;elsereturn null;if(target instanceof ActionListener)r.addActionListener((ActionListener)target);return r;}//构造五子棋游戏的单选按钮式菜单项public JRadioButtonMenuItem makeRadioButtonMenuItem( Object item, Object target){JRadioButtonMenuItem r = null;if(item instanceof String)r = new JRadioButtonMenuItem((String)item);else if(item instanceof JRadioButtonMenuItem)r = (JRadioButtonMenuItem)item;elsereturn null;if(target instanceof ActionListener)r.addActionListener((ActionListener)target);return r;}public void MapSize(int w,int h){setSize(w * 20+50 , h * 20+100 );if(this.checkcomputer)this.iscomputer=true;elsethis.iscomputer=false;mp.setModel(cm);mp.repaint();}public boolean getiscomputer(){return this.iscomputer;}public void restart(){int modeChess = cm.getModeChess();if(modeChess <= 3 && modeChess >= 1){cm = new ChessModel(modeChess);MapSize(cm.getWidth(),cm.getHeight());}else{System.out.println("\u81EA\u5B9A\u4E49");}}public void actionPerformed(ActionEvent e){String arg=e.getActionCommand();try{if (arg.equals("Windows"))UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");else if(arg.equals("Motif"))UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");elseUIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel" ); SwingUtilities.updateComponentTreeUI(this);}catch(Exception ee){}if(arg.equals("20x15")){this.width=20;this.height=15;cm=new ChessModel(1);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("30x20")){this.width=30;this.height=20;cm=new ChessModel(2);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("40x30")){this.width=40;this.height=30;cm=new ChessModel(3);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("人机对弈")){this.checkcomputer=true;this.iscomputer=true;cm=new ChessModel(cm.getModeChess());MapSize(cm.getWidth(),cm.getHeight());SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("人人对弈")){this.checkcomputer=false;this.iscomputer=false;cm=new ChessModel(cm.getModeChess());MapSize(cm.getWidth(),cm.getHeight());SwingUtilities.updateComponentTreeUI(this);}if(arg.equals("开局")){restart();}if(arg.equals("关于"))JOptionPane.showMessageDialog(this, "五子棋游戏测试版本", "关于", 0);if(arg.equals("退出"))System.exit(0);}}/**类ChessModel实现了整个五子棋程序算法的核心*/class ChessModel {//棋盘的宽度、高度、棋盘的模式(如20×15)private int width,height,modeChess;//棋盘方格的横向、纵向坐标private int x=0,y=0;//棋盘方格的横向、纵向坐标所对应的棋子颜色,//数组arrMapShow只有3个值:1,2,3,-5,//其中1代表该棋盘方格上下的棋子为黑子,//2代表该棋盘方格上下的棋子为白子,//3代表为该棋盘方格上没有棋子,//-5代表该棋盘方格不能够下棋子private int[][] arrMapShow;//交换棋手的标识,棋盘方格上是否有棋子的标识符private boolean isOdd,isExist;public ChessModel() {}//该构造方法根据不同的棋盘模式(modeChess)来构建对应大小的棋盘public ChessModel(int modeChess){this.isOdd=true;if(modeChess == 1){PanelInit(20, 15, modeChess);}if(modeChess == 2){PanelInit(30, 20, modeChess);}if(modeChess == 3){PanelInit(40, 30, modeChess);}}//按照棋盘模式构建棋盘大小private void PanelInit(int width, int height, int modeChess){this.width = width;this.height = height;this.modeChess = modeChess;arrMapShow = new int[width+1][height+1];for(int i = 0; i <= width; i++){for(int j = 0; j <= height; j++){arrMapShow[i][j] = -5;}}}//获取是否交换棋手的标识符public boolean getisOdd(){return this.isOdd;}//设置交换棋手的标识符public void setisOdd(boolean isodd){if(isodd)this.isOdd=true;elsethis.isOdd=false;}//获取某棋盘方格是否有棋子的标识值public boolean getisExist(){return this.isExist;}//获取棋盘宽度public int getWidth(){return this.width;}//获取棋盘高度public int getHeight(){return this.height;}//获取棋盘模式public int getModeChess(){return this.modeChess;}//获取棋盘方格上棋子的信息public int[][] getarrMapShow(){return arrMapShow;}//判断下子的横向、纵向坐标是否越界private boolean badxy(int x, int y){if(x >= width+20 || x < 0)return true;return y >= height+20 || y < 0;}//计算棋盘上某一方格上八个方向棋子的最大值,//这八个方向分别是:左、右、上、下、左上、左下、右上、右下public boolean chessExist(int i,int j){if(this.arrMapShow[i][j]==1 || this.arrMapShow[i][j]==2)return true;return false;}//判断该坐标位置是否可下棋子public void readyplay(int x,int y){if(badxy(x,y))return;if (chessExist(x,y))return;this.arrMapShow[x][y]=3;}//在该坐标位置下棋子public void play(int x,int y){if(badxy(x,y))return;if(chessExist(x,y)){this.isExist=true;return;}elsethis.isExist=false;if(getisOdd()){setisOdd(false);this.arrMapShow[x][y]=1;}else{setisOdd(true);this.arrMapShow[x][y]=2;}}//计算机走棋/**说明:用穷举法判断每一个坐标点的四个方向的的最大棋子数,*最后得出棋子数最大值的坐标,下子**/public void computerDo(int width,int height){int max_black,max_white,max_temp,max=0;setisOdd(true);System.out.println("计算机走棋...");for(int i = 0; i <= width; i++){for(int j = 0; j <= height; j++){if(!chessExist(i,j)){//算法判断是否下子max_white=checkMax(i,j,2);//判断白子的最大值max_black=checkMax(i,j,1);//判断黑子的最大值max_temp=Math.max(max_white,max_black);if(max_temp>max){max=max_temp;this.x=i;this.y=j;}}}}setX(this.x);setY(this.y);this.arrMapShow[this.x][this.y]=2;}//记录电脑下子后的横向坐标public void setX(int x){this.x=x;}//记录电脑下子后的纵向坐标public void setY(int y){this.y=y;}//获取电脑下子的横向坐标public int getX(){return this.x;}//获取电脑下子的纵向坐标public int getY(){return this.y;}//计算棋盘上某一方格上八个方向棋子的最大值,//这八个方向分别是:左、右、上、下、左上、左下、右上、右下public int checkMax(int x, int y,int black_or_white){int num=0,max_num,max_temp=0;int x_temp=x,y_temp=y;int x_temp1=x_temp,y_temp1=y_temp;//judge rightfor(int i=1;i<5;i++){x_temp1+=1;if(x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge leftx_temp1=x_temp;for(int i=1;i<5;i++){x_temp1-=1;if(x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num<5)max_temp=num;//judge upx_temp1=x_temp;y_temp1=y_temp;num=0;for(int i=1;i<5;i++){y_temp1-=1;if(y_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge downy_temp1=y_temp;for(int i=1;i<5;i++){y_temp1+=1;if(y_temp1>this.height)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num>max_temp&&num<5)max_temp=num;//judge left_upx_temp1=x_temp;y_temp1=y_temp;num=0;for(int i=1;i<5;i++){x_temp1-=1;y_temp1-=1;if(y_temp1<0 || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge right_downx_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<5;i++){x_temp1+=1;y_temp1+=1;if(y_temp1>this.height || x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num>max_temp&&num<5)max_temp=num;//judge right_upx_temp1=x_temp;y_temp1=y_temp;num=0;for(int i=1;i<5;i++){x_temp1+=1;y_temp1-=1;if(y_temp1<0 || x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}//judge left_downx_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<5;i++){x_temp1-=1;y_temp1+=1;if(y_temp1>this.height || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==black_or_white) num++;elsebreak;}if(num>max_temp&&num<5)max_temp=num;max_num=max_temp;return max_num;}//判断胜负public boolean judgeSuccess(int x,int y,boolean isodd){ int num=1;int arrvalue;int x_temp=x,y_temp=y;if(isodd)arrvalue=2;elsearrvalue=1;int x_temp1=x_temp,y_temp1=y_temp;//判断右边for(int i=1;i<6;i++){x_temp1+=1;if(x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)num++;elsebreak;}//判断左边x_temp1=x_temp;for(int i=1;i<6;i++){if(x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}if(num==5)return true;//判断上方x_temp1=x_temp;y_temp1=y_temp;num=1;for(int i=1;i<6;i++){y_temp1-=1;if(y_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}//判断下方y_temp1=y_temp;for(int i=1;i<6;i++){y_temp1+=1;if(y_temp1>this.height)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}if(num==5)return true;//判断左上x_temp1=x_temp;y_temp1=y_temp;num=1;for(int i=1;i<6;i++){x_temp1-=1;if(y_temp1<0 || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}//判断右下x_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<6;i++){x_temp1+=1;y_temp1+=1;if(y_temp1>this.height || x_temp1>this.width) break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}if(num==5)return true;//判断右上x_temp1=x_temp;y_temp1=y_temp;num=1;for(int i=1;i<6;i++){x_temp1+=1;y_temp1-=1;if(y_temp1<0 || x_temp1>this.width)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue) num++;elsebreak;}//判断左下x_temp1=x_temp;y_temp1=y_temp;for(int i=1;i<6;i++){x_temp1-=1;y_temp1+=1;if(y_temp1>this.height || x_temp1<0)break;if(this.arrMapShow[x_temp1][y_temp1]==arrvalue)num++;elsebreak;}if(num==5)return true;return false;}//赢棋后的提示public void showSuccess(JPanel jp){JOptionPane.showMessageDialog(jp,"你赢了,好厉害!","win",RMATION_MESSAGE);}//输棋后的提示public void showDefeat(JPanel jp){JOptionPane.showMessageDialog(jp,"你输了,请重新开始!","lost",RMATION_MESSAGE);}}/**类MainPanel主要完成如下功能:*1、构建一个面板,在该面板上画上棋盘;*2、处理在该棋盘上的鼠标事件(如鼠标左键点击、鼠标右键点击、鼠标拖动等)**/class MainPanel extends JPanelimplements MouseListener,MouseMotionListener{private int width,height;//棋盘的宽度和高度private ChessModel cm;//根据棋盘模式设定面板的大小MainPanel(ChessModel mm){cm=mm;width=cm.getWidth();height=cm.getHeight();addMouseListener(this);}//根据棋盘模式设定棋盘的宽度和高度public void setModel(ChessModel mm){cm = mm;width = cm.getWidth();height = cm.getHeight();}//根据坐标计算出棋盘方格棋子的信息(如白子还是黑子),//然后调用draw方法在棋盘上画出相应的棋子public void paintComponent(Graphics g){super.paintComponent(g);for(int j = 0; j <= height; j++){for(int i = 0; i <= width; i++){int v = cm.getarrMapShow()[i][j];draw(g, i, j, v);}}}//根据提供的棋子信息(颜色、坐标)画棋子public void draw(Graphics g, int i, int j, int v){int x = 20 * i+20;int y = 20 * j+20;//画棋盘if(i!=width && j!=height){g.setColor(Color.white);g.drawRect(x,y,20,20);}//画黑色棋子if(v == 1 ){g.setColor(Color.gray);g.drawOval(x-8,y-8,16,16);g.setColor(Color.black);g.fillOval(x-8,y-8,16,16);}//画白色棋子if(v == 2 ){g.setColor(Color.gray);g.drawOval(x-8,y-8,16,16);g.setColor(Color.white);g.fillOval(x-8,y-8,16,16);}if(v ==3){g.setColor(Color.cyan);g.drawOval(x-8,y-8,16,16);}}//响应鼠标的点击事件,根据鼠标的点击来下棋,//根据下棋判断胜负等public void mousePressed(MouseEvent evt){int x = (evt.getX()-10) / 20;int y = (evt.getY()-10) / 20;System.out.println(x+" "+y);if (evt.getModifiers()==MouseEvent.BUTTON1_MASK){cm.play(x,y);System.out.println(cm.getisOdd()+" "+cm.getarrMapShow()[x][y]);repaint();if(cm.judgeSuccess(x,y,cm.getisOdd())){cm.showSuccess(this);evt.consume();ChessFrame.iscomputer=false;}//判断是否为人机对弈if(ChessFrame.iscomputer&&!cm.getisExist()){puterDo(cm.getWidth(),cm.getHeight());repaint();if(cm.judgeSuccess(cm.getX(),cm.getY(),cm.getisOdd())){cm.showDefeat(this);evt.consume();}}}}public void mouseClicked(MouseEvent evt){}public void mouseReleased(MouseEvent evt){}public void mouseEntered(MouseEvent mouseevt){}public void mouseExited(MouseEvent mouseevent){}public void mouseDragged(MouseEvent evt){}//响应鼠标的拖动事件public void mouseMoved(MouseEvent moveevt){int x = (moveevt.getX()-10) / 20;int y = (moveevt.getY()-10) / 20;cm.readyplay(x,y);repaint();}}class ChessWindowEvent extends WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(0);}ChessWindowEvent(){}}。

人机猜拳游戏

人机猜拳游戏

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的結果是:"+"双方势均力敌打成平局!!");}}。

python实现人和电脑猜拳的示例代码

python实现人和电脑猜拳的示例代码

python实现⼈和电脑猜拳的⽰例代码完成⼈机猜拳互动游戏的开发,⽤户通过控制台输⼊实现出拳,电脑通过程序中的随机数实现出拳,每⼀局结束后都要输出结果。

当⽤户输⼊n时停⽌游戏,并输出总结果。

import randomall = ['⽯头','剪⼑','布']computer = random.choice(['⽯头','剪⼑','布'])#所有赢了的情况win = [['⽯头','剪⼑'],['布','⽯头'],['剪⼑','布']]class Text():def func_play(self):ind = input('请输⼊【0】⽯头【1】剪⼑【2】布')if ind.isalpha():try:raise ValueError('请输⼊数字')except ValueError as v:print(v)elif ind.isdigit():ind = int(ind)if 0<=ind<=2:play = all[ind]print('你输⼊的是%s,电脑输⼊的是%s'%(play,computer))if play == computer:self.a = '平局'elif [play, computer] in win:self.a = '你赢了'else:self.a = '你输了'else:print('请输⼊0到2之间的数')print(self.a)def write_file(self):with open('wuhan.txt','a',encoding='utf-8') as f:f.write(self.a+'\n')while True:t = Text()t.func_play()t.write_file()到此这篇关于python 实现⼈和电脑猜拳的⽰例代码的⽂章就介绍到这了,更多相关python ⼈和电脑猜拳内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

猜拳(石头剪子布)前端HTML源代码,三种不同的实现方式

猜拳(石头剪子布)前端HTML源代码,三种不同的实现方式

<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>猜拳(石头剪子布) </title><script type="text/javascript">var userselect = 3;function userchk(val) {userselect = valvar userselectval = "请出招";switch (userselect) {case 0: userselectval = "你将要出招“布”"; break;case 1: userselectval = "你将要出招“石头”"; break;case 2: userselectval = "你将要出招“剪刀”"; break;}document.getElementById("userselectval").innerText= userselectval;document.getElementById("computerselectval").innerT ext = "";document.getElementById("movesval").innerText = "";}function Moves() {if (userselect < 0 || userselect > 2) {alert("请选择要出的招")return;}var movesval = "";var computerselect = parseInt((Math.random() * 1000) % 3);if (compare(computerselect, userselect) == 1) {movesval = "猜拳结果:你赢了";}if (compare(computerselect, userselect) == 0) {movesval = "猜拳结果:平局";}if (compare(computerselect, userselect) == -1) {movesval = "猜拳结果:你输了";}var computerselectval = "计算机出招";switch (computerselect) {case 0: computerselectval = "计算机出招“布”"; break;case 1: computerselectval = "计算机出招“石头”"; b reak;case 2: computerselectval = "计算机出招“剪刀”"; break;}document.getElementById("computerselectval").innerT ext = computerselectval;document.getElementById("movesval").innerText = movesval;alert(movesval);}//比较猜拳结果function compare(cpu, you) {var win = 0;switch (you - cpu) {case 2: { win = 1; break; }case 1: { win = -1; break; }case 0: { win = 0; break; }case -1: { win = 1; break; }case -2: { win = -1; break; }}return win;}function MovesRadio(){var computerselect = parseInt((Math.random() * 1000) % 3);var userselect = 3;for(var i=0;i<=2;i++){if(document.f1.r1[i].checked==true){userselect = i;}}if (compare(computerselect, userselect) == 1) {movesval = "猜拳结果:你赢了";}if (compare(computerselect, userselect) == 0) {movesval = "猜拳结果:平局";}if (compare(computerselect, userselect) == -1) {movesval = "猜拳结果:你输了";}var computerselectval = "计算机出招";switch (computerselect) {case 0: computerselectval = "计算机出招“布”"; break;case 1: computerselectval = "计算机出招“石头”"; break;case 2: computerselectval = "计算机出招“剪刀”"; break;}document.getElementById("radiocomputerselectval").i nnerText = computerselectval;document.getElementById("radiomovesval").innerText = movesval;alert(movesval);}var seluserselect = 1;function MovesSelect() {var computerselect = parseInt((Math.random() * 1000) % 3);var objsel = document.getElementById("select");var objselval =objsel.options[objsel.selectedIndex].value;seluserselect = parseInt(objselval);if (compare(computerselect, seluserselect) == 1) {movesval = "猜拳结果:你赢了";}if (compare(computerselect, seluserselect) == 0) {movesval = "猜拳结果:平局";}if (compare(computerselect, seluserselect) == -1) {movesval = "猜拳结果:你输了";}var computerselectval = "计算机出招";switch (computerselect) {case 0: computerselectval = "计算机出招“布”"; break;case 1: computerselectval = "计算机出招“石头”"; break;case 2: computerselectval = "计算机出招“剪刀”"; break;}document.getElementById("selcomputerselectval").inn erText = computerselectval;document.getElementById("selmovesval").innerText = movesval;alert(movesval);}</script></head><body><h3 align="center">猜拳(石头剪子布)点击按钮</h3><div align="center"><div align="center">请选择要出的招</div><input type="button" value="石头" onclick="userchk(1)" /><input type="button" value="剪子" onclick="userchk(2)" /><input type="button" value="布" onclick="userchk(0)" /><div id="userselectval">请出招</div><input type="button" name="button" id="button" value="出拳" onclick="Moves()" /><div id="computerselectval"></div><div id="movesval">结果</div></div><h3 align="center">猜拳(石头剪子布)单选按钮组</h3><form name="f1" id="f1" align="center"><input type="radio" name="r1" id="s1" value="1"checked="checked" />布<input type="radio" name="r1" id="s2" value="2" />石头<input type="radio" name="r1" id="s3" value="3" />剪子<div>请出招</div><input type="button" name="button" id="button" value="出拳" onclick="MovesRadio()" /><div id="radiocomputerselectval"></div><div id="radiomovesval">结果</div></form><h3 align="center">猜拳(石头剪子布)下拉列表</h3><div align="center"><div align="center">请选择要出的招</div><select id="select"><option value="1">石头</option><option value="2">剪子</option><option value="0">布</option></select><div>请出招</div><input type="button" name="button" id="button" value="出拳" onclick="MovesSelect()" /><div id="selcomputerselectval"></div><div id="selmovesval">结果</div></div></body></html>。

基于java实现人机猜拳游戏

基于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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
count=0;
}
public void startGame(){
System.out.println("*欢迎进入人机猜拳*");
System.out.println("***************");
System.out.println("****猜拳开始****");
Game game=new Game();
game.initial();
game.startGame();
}
}
count++;
}
System.out.println("是否开始下一轮?y/n");
con = in.next();
}
System.out.println( + "\tVS\t" + );
System.out.println("对战次数:" + count);
System.out.println("请猜拳(1-剪刀,2-石头,3-布(请选择:))");
Scanner in=new Scanner(System.in);
int show=in.nextInt();
switch(show){
case 1:
System.out.println("您出拳:剪刀");
int role=in.nextInt();
System.out.print("请输入您的名字");
=in.next();
switch(role){
case 1:
="刘备";
break;
case 2:
System.out.println("结果:*-*,你输了啊,嘿嘿!!");
} else if (computer.score == person.score) {
System.out.println("结果:*……*,唉!平局啊,好,下次再一决高下!!拜拜");
} else {
="孙权";
break;
case 3:
="曹操";
break;
}
System.out.println(+"VS"++"\n");
System.out.println("是否开始游戏(y/n)?");
System.out.println("结果:居然让你小子赢了!!再来再来!!");
}
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
/**
*
* @author
*
*/
public con;
Computer computer;
int count;//局数
public void initial(){
person=new Person();
computer=new Computer();
switch(show){
case 1:
System.out.println("电脑出拳:剪刀");
break;
case 2:
System.out.println("电脑出拳:石头");
break;
case 3:
System.out.println("电脑出拳:布");
System.out.println( + "\tVS\t" + );
System.out.println(computer.score + "\tVS\t" + person.score);
if (computer.score > person.score) {
/**
*
* @author student
*
*/
public class Computer {
String name="电脑";
int score=0;
public int showFist(){
int show=(int)(Math.random()*10)%3+1;
System.out.println("***************");
System.out.println("出拳规则:1.剪刀,2.石头,3.布");
Scanner in=new Scanner(System.in);
System.out.print("请选择对方角色:(1.刘备,2.孙权,3.曹操)");
count++;
}else if(perShow==1&&comShow==2||perShow==2&&comShow==3||perShow==3&&comShow==1){
System.out.println("真悲哀!您输了!");
computer.score++;
String con=in.next();
while(con.equals("y")){
int perShow=person.showFist();
int comShow=computer.showFist();
if(perShow==comShow){
System.out.println("真衰!平局!");
break;
}
return show;
}
}
import java.util.*;
/**
*
* @author student
*
*/
public class Person {
String name="匿名";
int score=0;
public int showFist(){
count++;
}else if(perShow==2&&comShow==1||perShow==3&&comShow==2||perShow==1&&comShow==3){
System.out.println("恭喜!你赢了!");
person.score++;
break;
case 2:
System.out.println("您出拳:石头");
break;
case 3:
System.out.println("您出拳:布");
break;
}
return show;
}
}
import java.util.*;
相关文档
最新文档