代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
石头剪刀布游戏
作者:
Dezai.CN
/ 发布于
2011/7/13
/
1158
<div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> javax.swing.*; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.awt.BorderLayout; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.awt.GridLayout; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.awt.HeadlessException; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.awt.event.ActionEvent; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.awt.event.ActionListener; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.util.ArrayList; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.util.List; </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">import</font></strong></span><span> java.util.Random; </span></span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 石头剪刀布游戏,游戏介绍参见:</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* <p/></font></span> </span></div> <div><span><span class="comment"><font color="#008200">* http://en.wikipedia.org/wiki/Rock-paper-scissors</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* @author yiding.he</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> RockPaperScissors </span><span class="keyword"><strong><font color="#006699">extends</font></strong></span><span> JFrame { </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">protected</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">final</font></strong></span><span> JLabel messageLabel = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> JLabel(INITIAL_MESSAGE); </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">final</font></strong></span><span> GameProcessor gameProcessor = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> GameProcessor(); </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> List<JButton> buttons = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> ArrayList<JButton>(); </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">protected</font></strong></span><span> JPanel buttonsPanel; </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">static</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">final</font></strong></span><span> String INITIAL_MESSAGE = </span><span class="string"><font color="#0000ff">"我准备好了,出招吧 XD"</font></span><span>; </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> RockPaperScissors() </span><span class="keyword"><strong><font color="#006699">throws</font></strong></span><span> HeadlessException { </span></span></div> <div><span>initFrame(); </span></div> <div><span>initControls(); </span></div> <div></div> <div><span>restartGame(); </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 设置窗体</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> initFrame() { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.setSize(</span><span class="number"><font color="#c00000">300</font></span><span>, </span><span class="number"><font color="#c00000">120</font></span><span>); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.setLocation(</span><span class="number"><font color="#c00000">300</font></span><span>, </span><span class="number"><font color="#c00000">300</font></span><span>); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.setTitle(</span><span class="string"><font color="#0000ff">"野球拳"</font></span><span>); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.setDefaultCloseOperation(EXIT_ON_CLOSE); </span></span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 设置控件</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> initControls() { </span></span></div> <div><span>BorderLayout bl = <span class="keyword"><strong><font color="#006699">new</font></strong></span><span> BorderLayout(); </span></span></div> <div><span>bl.setVgap(<span class="number"><font color="#c00000">5</font></span><span>); </span></span></div> <div><span>getContentPane().setLayout(bl); </span></div> <div></div> <div><span>messageLabel.setBorder(BorderFactory.createEmptyBorder(<span class="number"><font color="#c00000">10</font></span><span>, </span><span class="number"><font color="#c00000">10</font></span><span>, </span><span class="number"><font color="#c00000">10</font></span><span>, </span><span class="number"><font color="#c00000">10</font></span><span>)); </span></span></div> <div><span>messageLabel.setHorizontalAlignment(SwingConstants.CENTER); </span></div> <div><span>getContentPane().add(messageLabel, BorderLayout.NORTH); </span></div> <div></div> <div><span>buttonsPanel = <span class="keyword"><strong><font color="#006699">new</font></strong></span><span> JPanel(</span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> GridLayout(</span><span class="number"><font color="#c00000">1</font></span><span>, GameItem.values().length, </span><span class="number"><font color="#c00000">5</font></span><span>, </span><span class="number"><font color="#c00000">0</font></span><span>)); </span></span></div> <div><span>getContentPane().add(buttonsPanel); </span></div> <div></div> <div><span>createButtons(); </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 创建按钮</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> createButtons() { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">for</font></strong></span><span> (GameItem item : GameItem.values()) { </span></span></div> <div><span>ItemButton button = <span class="keyword"><strong><font color="#006699">new</font></strong></span><span> ItemButton(item); </span></span></div> <div><span>buttons.add(button); </span></div> <div><span>buttonsPanel.add(button); </span></div> <div><span>} </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 启用或禁用全部按钮</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* @param enabled 启用或禁用</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> setButtonsEnabled(</span><span class="keyword"><strong><font color="#006699">boolean</font></strong></span><span> enabled) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">for</font></strong></span><span> (JButton button : buttons) { </span></span></div> <div><span>button.setEnabled(enabled); </span></div> <div><span>} </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 处理并显示游戏结果</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* @param gameItem 玩家选择</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> processAndShowGameResult(GameItem gameItem) { </span></span></div> <div><span>String result = gameProcessor.process(gameItem); </span></div> <div><span>messageLabel.setText(result); </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 重置游戏界面</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> restartGame() { </span></span></div> <div><span>messageLabel.setText(INITIAL_MESSAGE); </span></div> <div><span>gameProcessor.reset(); </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/////////////////////////////////////////////////////////</font></span><span> </span></span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 游戏逻辑处理</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">static</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> GameProcessor { </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> GameItem item; </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> Random r = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> Random(); </span></span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 重置游戏,机器生成自己的选项</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> reset() { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">int</font></strong></span><span> index = r.nextInt(GameItem.values().length); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.item = GameItem.values()[index]; </span></span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 处理玩家输入的选项,得出本局结果</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* @param gameItem 玩家选项</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* @return 本局结果</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> String process(GameItem gameItem) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">int</font></strong></span><span> result = item.compareWith(gameItem); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">if</font></strong></span><span> (result > </span><span class="number"><font color="#c00000">0</font></span><span>) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"哈哈,你输了,我出的是"</font></span><span> + item.getLabel(); </span></span></div> <div><span>} <span class="keyword"><strong><font color="#006699">else</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">if</font></strong></span><span> (result < </span><span class="number"><font color="#c00000">0</font></span><span>) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"啊,我出了个"</font></span><span> + item.getLabel() + </span><span class="string"><font color="#0000ff">",不小心让你赢了一次……"</font></span><span>; </span></span></div> <div><span>} <span class="keyword"><strong><font color="#006699">else</font></strong></span><span> { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="string"><font color="#0000ff">"嘿,我出的也是"</font></span><span> + item.getLabel() + </span><span class="string"><font color="#0000ff">",打个平手!"</font></span><span>; </span></span></div> <div><span>} </span></div> <div><span>} </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/////////////////////////////////////////////////////////</font></span><span> </span></span></div> <div></div> <div><span><span class="comment"><font color="#008200">/**</font></span> </span></div> <div><span><span class="comment"><font color="#008200">* 用户选择按钮,每个 ItemButton 对应一个 GameItem</font></span> </span></div> <div><span><span class="comment"><font color="#008200">*/</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> ItemButton </span><span class="keyword"><strong><font color="#006699">extends</font></strong></span><span> JButton { </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> GameItem item; </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> GameItem getGameItem() { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> item; </span></span></div> <div><span>} </span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> ItemButton(String text) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">super</font></strong></span><span>(text); </span></span></div> <div><span>} </span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> ItemButton(GameItem item) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>(item.getLabel()); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.item = item; </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.addActionListener(</span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> ActionListener() { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> actionPerformed(</span><span class="keyword"><strong><font color="#006699">final</font></strong></span><span> ActionEvent e) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> Thread() { </span></span></div> <div></div> <div><span><span class="annotation"><font color="#646464">@Override</font></span><span> </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> run() { </span></span></div> <div><span>ItemButton button = (ItemButton) e.getSource(); </span></div> <div></div> <div><span>processAndShowGameResult(button.getGameItem()); </span></div> <div><span>sleepForAWhile(); </span></div> <div><span>restartGame(); </span></div> <div><span>} </span></div> <div><span>}.start(); </span></div> <div><span>} </span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> sleepForAWhile() { </span></span></div> <div><span>setButtonsEnabled(<span class="keyword"><strong><font color="#006699">false</font></strong></span><span>); </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">try</font></strong></span><span> { </span></span></div> <div><span>Thread.sleep(<span class="number"><font color="#c00000">2000</font></span><span>); </span></span></div> <div><span>} <span class="keyword"><strong><font color="#006699">catch</font></strong></span><span> (InterruptedException e1) { </span></span></div> <div><span>e1.printStackTrace(); </span></div> <div><span>} </span></div> <div><span>setButtonsEnabled(<span class="keyword"><strong><font color="#006699">true</font></strong></span><span>); </span></span></div> <div><span>} </span></div> <div><span>}); </span></div> <div><span>} </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">/////////////////////////////////////////////////////////</font></span><span> </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">static</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">enum</font></strong></span><span> GameItem { </span></span></div> <div></div> <div><span>Rock(<span class="string"><font color="#0000ff">"石头"</font></span><span>), Scissor(</span><span class="string"><font color="#0000ff">"剪刀"</font></span><span>), Paper(</span><span class="string"><font color="#0000ff">"布"</font></span><span>); </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> String label; </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> String getLabel() { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> label; </span></span></div> <div><span>} </span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">private</font></strong></span><span> GameItem(String label) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span>.label = label; </span></span></div> <div><span>} </span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">int</font></strong></span><span> compareWith(GameItem item) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">if</font></strong></span><span> (</span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span> == item) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="number"><font color="#c00000">0</font></span><span>; </span></span></div> <div><span>} <span class="keyword"><strong><font color="#006699">else</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">if</font></strong></span><span> ((</span><span class="keyword"><strong><font color="#006699">this</font></strong></span><span> == Rock && item == Scissor) || </span></span></div> <div><span>(<span class="keyword"><strong><font color="#006699">this</font></strong></span><span> == Scissor && item == Paper) || </span></span></div> <div><span>(<span class="keyword"><strong><font color="#006699">this</font></strong></span><span> == Paper && item == Rock)) { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> </span><span class="number"><font color="#c00000">1</font></span><span>; </span></span></div> <div><span>} <span class="keyword"><strong><font color="#006699">else</font></strong></span><span> { </span></span></div> <div><span><span class="keyword"><strong><font color="#006699">return</font></strong></span><span> -</span><span class="number"><font color="#c00000">1</font></span><span>; </span></span></div> <div><span>} </span></div> <div><span>} </span></div> <div><span>} </span></div> <div></div> <div><span><span class="comment"><font color="#008200">//////////////////////////////////////////////////////////</font></span><span> </span></span></div> <div></div> <div><span><span class="keyword"><strong><font color="#006699">public</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">static</font></strong></span><span> </span><span class="keyword"><strong><font color="#006699">void</font></strong></span><span> main(String[] args) </span><span class="keyword"><strong><font color="#006699">throws</font></strong></span><span> Exception { </span></span></div> <div><span>UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); </span></div> <div><span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> RockPaperScissors().setVisible(</span><span class="keyword"><strong><font color="#006699">true</font></strong></span><span>); </span></span></div> <div><span>} </span></div> <div><span>} </span></div>
试试其它关键字
石头剪刀布
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
实现测量程序运行时间及cpu使用时间
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3