1.项目简介

设计并实现一个和计算机交互的剪刀、石头、布游戏。人和计算机各选择一项,然后决出胜负。程序必须随机选取一项但不表示出来,然后提示用户选择。当用户选择后,程序同时显示出计算机和用户的选择并且输出游戏结果。游戏一直进行直到用户退出为止,并且输出双方输赢次数和总局数。

2.功能描述

根据题目要求建立一个Panel类Main1用于存储图片和组件。在类中申请3个panel,第一个用于存放图片,第二个用于存放按键,最后将这两个放进panel3中。在panel1中的图片需要根据panel2中按键触发的事件进行相应的改变。电脑和用户都有石头、剪刀和布三张图片进行变化。每次在用户点击按键石头或剪刀或布后电脑会根据随机数产生器发出的随机数进行相应的“出拳”,然后和用户选择的“出拳”进行比较输赢。当用户选择后,两者的出拳图会显示在panel1中,并出现信息说明当前游戏总次数和用户和电脑各自的胜出次数。用户可以再一次游戏介绍后继续点击按键进行多次游戏,每次重复上面功能。

代码:

Panel类Main1的建立

class Main1 extends JPanel{private JPanel panel1,panel2,panel3;private JLabel computer,vs,person;private ImageIcon ShiTou1,JianDao1,Bu1,kong;private JButton shitou2,jianDao2,bu2;private Random number;private int total=0,c=0,p=0;public Main1(){number=new Random();ShiTou1=new ImageIcon("石头.jpg");//定义图片JianDao1=new ImageIcon("剪刀.jpg");Bu1=new ImageIcon("布.jpg");kong=new ImageIcon("VS.jpg");person=new JLabel(new ImageIcon("玩家.jpg"));vs=new JLabel(kong);computer=new JLabel(new ImageIcon("电脑.jpg"));panel1=new JPanel();//定义面板panel1.setBackground(Color.BLACK);panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS));panel1.add(person);panel1.add(vs);panel1.add(computer);panel1.setPreferredSize(new Dimension(400, 200));shitou2=new JButton("石头");shitou2.addActionListener(new Mouse());jianDao2=new JButton("剪刀");jianDao2.addActionListener(new Mouse());bu2=new JButton("布");bu2.addActionListener(new Mouse());panel2=new JPanel();panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS));panel2.add(shitou2);panel2.add(jianDao2);panel2.add(bu2);panel2.setPreferredSize(new Dimension(400, 200));panel2.setBackground(new Color(100, 100, 100));panel3=new JPanel();panel3.setBackground(new Color(100, 100, 100));panel3.setLayout(new BoxLayout(panel3, BoxLayout.Y_AXIS));panel3.add(panel1);panel3.add(panel2);add(panel3);panel3.setPreferredSize(new Dimension(500, 300));}private class Mouse implements ActionListener{//负责创建监视器的类public void actionPerformed(ActionEvent event){//监视器int num=number.nextInt(3);if(event.getSource()==shitou2){person.setIcon(ShiTou1);if(num==0){total=total+1;vs.setIcon(kong);p=p+1;computer.setIcon(JianDao1);}if(num==1){total=total+1;vs.setIcon(kong);computer.setIcon(ShiTou1);}if(num==2){total=total+1;c=c+1;vs.setIcon(kong);computer.setIcon(Bu1);}}if(event.getSource()==jianDao2){person.setIcon(JianDao1);if(num==0){total=total+1;vs.setIcon(kong);computer.setIcon(JianDao1);}if(num==1){total=total+1;c=c+1;vs.setIcon(kong);computer.setIcon(ShiTou1);}if(num==2){total=total+1;p=p+1;vs.setIcon(kong);computer.setIcon(Bu1);}}if(event.getSource()==bu2){person.setIcon(Bu1);if(num==0){total=total+1;vs.setIcon(kong);c=c+1;computer.setIcon(JianDao1);}if(num==1){total=total+1;vs.setIcon(kong);p=p+1;computer.setIcon(ShiTou1);}if(num==2){total=total+1;vs.setIcon(kong);computer.setIcon(Bu1);}}if(event.getSource()==jianDao2||event.getSource()==shitou2||event.getSource()==bu2) {int again=JOptionPane.showConfirmDialog(panel2,"比赛共进行:"+total+"次,玩家胜"+p+"次,电脑胜:"+c+"次。 是否继续?","提示", JOptionPane.YES_NO_OPTION);if(again==JOptionPane.NO_OPTION)System.out.println("玩家胜:"+p+"次,输:"+c+"次,电脑胜:"+c+"次,输:"+p+"次,共进行:"+total+"次");if(again==JOptionPane.NO_OPTION)System.exit(0);}}}
}

主类Main

public class Main{public static void main(String[] args){Main1 test=new Main1();JFrame frame=new JFrame("石头剪刀布");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(test);frame.pack();frame.setVisible(true);//窗口可见}
}

3.项目亮点

1.使用BoxLayout布局

2.确认框操作

3.ActionEvent事件

4.自动调节窗口适应组件大小及布局

4.功能截图

JAVA课程设计--石头剪刀布相关推荐

  1. JAVA课程设计——石头剪刀布

    设计题目--石头剪刀布游戏 1.问题描述 用 JAVA 语言设计如下界面的石头剪刀布游戏.游戏的一方点击界面上石头.剪刀.布按钮,游戏的另一方计算机随机选择,然后给出游戏结果. 2.基本要求 按照下面 ...

  2. java课程设计指导记录表_JAVA课程设计指导书ofr2012级.doc

    JAVA课程设计指导书ofr2012级 <Java面向对象程序设计> 课程设计指导书 专 业: XXX软服XX班 指导教师: XXXX 计算机与信息工程学院 2013年12月26日 一.目 ...

  3. JAVA课程设计——“小羊吃蓝莓”小游戏

    JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...

  4. Java课程设计基于ssm的微信小程序

    Java课程设计, 基于ssm的微信小程序 后端涉及技术spring.mysql等 效果查看请扫一扫 喜欢可以点赞哟

  5. ATM柜员机JAVA课程设计_ATM柜员机学年论文设计(Java课程设计)

    内容简介: ATM柜员机学年论文设计(Java课程设计),共23页,4599字,附源程序. 一. 程序介绍3 二. 开发环境搭建3 1. MyEclipse 5.5.1 GA安装3 2. MyEcli ...

  6. java中国象棋网络对弈,java课程设计---中国象棋对弈系统

    java课程设计---中国象棋对弈系统 1 目目 录录 摘要 1 关键字 1 正文 2 1.程序设计说明. 2 1.1 程序的设计及实现 2 1.1.1搜索引擎的实现(engine包) . 2 1.1 ...

  7. 计算器小程序java课程设计,java课程设计----计算器小程序报告.doc

    java课程设计----计算器小程序报告.doc #####学院JAVA语言课程设计报告小程序计算器系统管理班级:#######姓名:#####指导老师:###时间:2012年6月25日至6月29日2 ...

  8. ATM柜员机JAVA课程设计_JAVA课程设计报告银行ATM机系统.doc

    JAVA课程设计报告银行ATM机系统 Java课程设计报告 题 目 银行ATM机系统 所在院系 软件学院 学生姓名 金磊 专 业 R机械+软件 班 级 R机械094 学 号 2011年 7 月 15日 ...

  9. java课程设计 考试系统,java课程设计考试系统.

    java课程设计考试系统.Tag内容描述: 1.目 录 第一章第一章 引言引言 3 1 1目的 3 1 2名词解释 3 1 3参考资料 3 1 4文档结构 3 第第 2 章章远景远景 4 2 1项目概 ...

最新文章

  1. day09_读写分离_组件介绍
  2. 自定义对话框JDialog的使用实例
  3. axios请求接口http_axios调用接口
  4. 直接导入用户信息到discuz ucenter.
  5. IPC$概念及入侵方式研究
  6. 20 条非常实用的 Python 代码,建议收藏!
  7. wmsys.WM_CONCAT
  8. chrome vue.js插件文档_神级宝库!GitHub 标星 1.2w+,Chrome 最天秀的插件都在这里啦!...
  9. 牛客IOI周赛16-普及组
  10. netbeans字体与颜色配置模板相关网站
  11. 三角形周长最短问题_2019年中考数学压轴题分析——最短路径问题8:造桥选址...
  12. Java基础学习总结(4)——对象转型
  13. 一线城市程序员平均工资11770元,你拖后腿了吗?
  14. Javascript面向对象特性
  15. leetcode77
  16. ASP.NET的Session会导致的性能问题
  17. UDS常用诊断服务介绍
  18. 1.1计算机解决问题的过程教案,1.1 计算机解决问题的过程
  19. 单条视频播放超7000万,网红界“大油田”如何掀起快手流量浪潮?
  20. 使用Go语言完成文件夹的MD5计算

热门文章

  1. 想考云计算类的证书考哪个比较好?
  2. 微信小程序实战项目《带源码》——仿计算器
  3. UI 组件 | Toggle
  4. spring-clound升级springboot1.x到springboot2.x学习
  5. 立个Flag,掌握三种通信中用的DL网络
  6. 手机二要素api接口是什么?有哪些使用场景?一文带你搞清楚
  7. 马虎员工公厕遗失重要文件崩溃大哭,菜鸟裹裹和高德地图立功找回
  8. 2020年集五福攻略:集五福不再难搞
  9. 离线计算平台在汽车之家的演进之路
  10. XP系统密码修改策略管理