- 浏览: 113727 次
- 性别:
- 来自: 深圳
博客专栏
-
告诉你什么是优雅的代码
浏览量:23542
最新评论
-
wfm0105:
不支持小数
告诉你什么是优雅的代码(6)------阿拉伯钱数转换为中文形式 -
wfm0105:
daisy_rainbow 写道 不懂这些数组里 ...
告诉你什么是优雅的代码(4)-----智力题的解法(答案) -
恒之疆:
无敌模式有问题
告诉你什么是优雅的代码(11)----html5 之XXOO棋 -
Shengli_fu:
...
告诉你什么是优雅的代码 -
Shengli_fu:
...
告诉你什么是优雅的代码(5)------ 百度之星也是普通人(答案)
国庆长假百无聊赖,于是玩玩3366的游戏。
玩到一款小游戏http://www.3366.com/game/28866.shtml,觉得不错,挺适合我们这种高IQ的人玩。
出于职业敏感,开始想象这个游戏是怎么实现的。
发现很简单,或许能写个出来也未可知。于是说干就干,1小时写好了内核。
本来想搞个swing版的出来,苦于没有小中华那些神奇刀法,所以还没有写。只搞了个控制台版的出来。
不过对于深谙MVC设计模式的我而言,良好的设计使得程序转移到任何的V上都是轻而易举的事情。
今天抽空重拾swing的剩余记忆,发现快遗忘殆尽,举步维艰,花了大半天时间,好不容易终于打造好了swing版。
期间一直无法显示图片浪费了我的大好光阴,头发掉了一大把,教训深刻,大家谨记不磨刀就不要砍柴。
闲话休提,先来上几张图:
你猜珍珠,我猜笑脸。
以下是UI部分代码,可运行文件提供下载,直接双击运行。
大家玩玩吧,看你能找回笑脸不。
玩到一款小游戏http://www.3366.com/game/28866.shtml,觉得不错,挺适合我们这种高IQ的人玩。
出于职业敏感,开始想象这个游戏是怎么实现的。
发现很简单,或许能写个出来也未可知。于是说干就干,1小时写好了内核。
本来想搞个swing版的出来,苦于没有小中华那些神奇刀法,所以还没有写。只搞了个控制台版的出来。
不过对于深谙MVC设计模式的我而言,良好的设计使得程序转移到任何的V上都是轻而易举的事情。
今天抽空重拾swing的剩余记忆,发现快遗忘殆尽,举步维艰,花了大半天时间,好不容易终于打造好了swing版。
期间一直无法显示图片浪费了我的大好光阴,头发掉了一大把,教训深刻,大家谨记不磨刀就不要砍柴。
闲话休提,先来上几张图:
你猜珍珠,我猜笑脸。
以下是UI部分代码,可运行文件提供下载,直接双击运行。
大家玩玩吧,看你能找回笑脸不。
package app.guesspos; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.border.BevelBorder; /** * 创建时间:Oct 9, 2010 9:06:19 AM * 项目名称:Test * @author D.Jun * @version 1.0 * @since JDK 1.6 * 文件名称:GameFrame.java * 类说明: */ //VS4E -- DO NOT REMOVE THIS LINE! public class GameFrame extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JPanel jPanel0; private JPanel jPanel1; private JButton jButton0; private JButton jButton1; private Map model = new Map(); private JButton[][] btns; private int chance = 4; private int row; private int col; private static final String PREFERRED_LOOK_AND_FEEL = "javax.swing.plaf.metal.MetalLookAndFeel"; public GameFrame() { initComponents(); } private void initComponents() { this.setTitle("Designed By YangGuo"); add(getJPanel0(), BorderLayout.NORTH); add(getJPanel1(), BorderLayout.CENTER); this.resetTitle(); setSize(560, 650); } private JButton getJButton1() { if (jButton1 == null) { jButton1 = new JButton(); jButton1.setBackground(new Color(255,0,0)); jButton1.setForeground(new Color(255,255,255)); } return jButton1; } private JButton getJButton0() { if (jButton0 == null) { jButton0 = new JButton(); jButton0.setBackground(new Color(255,0,0)); jButton0.setForeground(new Color(255,255,255)); } return jButton0; } private JPanel getJPanel1() { if (jPanel1 == null) { jPanel1 = new JPanel(); // jPanel1.setBackground(Color.blue); jPanel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED, null, null, null, null)); row = model.getHeight(); col = model.getWidth(); jPanel1.setLayout(new GridLayout(row, col,1,1)); btns = new JButton[row][col]; for (int i = 0; i < row; i++) { btns[i] = new JButton[col]; for (int j = 0; j < col; j++) { btns[i][j] = new JButton(); jPanel1.add(btns[i][j]); } } paintMap(); } return jPanel1; } private void paintMap() { ImageIcon sad = new ImageIcon(getClass().getResource("/app/guesspos/sad.jpg")); model.createMap(); for (int i = 0; i < row ; i++) { for (int j = 0; j < col; j++) { JButton obj = btns[i][j]; obj.setText(""); obj.removeActionListener(this); obj.setIcon(null); obj.setEnabled(false); if(!model.isEmpty(i, j)){ obj.setEnabled(true); obj.setIcon(sad); obj.addActionListener(this); obj.setActionCommand(i + "," + j); } } } } private JPanel getJPanel0() { if (jPanel0 == null) { jPanel0 = new JPanel(); jPanel0.setBackground(Color.yellow); jPanel0.setPreferredSize(new Dimension(100, 100)); jPanel0.setLayout(new FlowLayout()); jPanel0.add(getJButton0()); jPanel0.add(getJButton1()); } return jPanel0; } private static void installLnF() { try { String lnfClassname = PREFERRED_LOOK_AND_FEEL; if (lnfClassname == null) lnfClassname = UIManager.getCrossPlatformLookAndFeelClassName(); UIManager.setLookAndFeel(lnfClassname); } catch (Exception e) { System.err.println("Cannot install " + PREFERRED_LOOK_AND_FEEL + " on this platform:" + e.getMessage()); } } /** * Main entry of the class. * Note: This class is only created so that you can easily preview the result at runtime. * It is not expected to be managed by the designer. * You can modify it as you like. */ public static void main(String[] args) { installLnF(); System.out.println(System.getProperty("user.dir")); SwingUtilities.invokeLater(new Runnable() { public void run() { GameFrame frame = new GameFrame(); frame.setDefaultCloseOperation(GameFrame.EXIT_ON_CLOSE); frame.setTitle("GameFrame"); frame.getContentPane().setPreferredSize(frame.getSize()); frame.pack(); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } public void actionPerformed(ActionEvent e) { if(e.getSource() instanceof JButton){ System.out.println(chance); chance--; JButton btn = (JButton)e.getSource(); btn.setIcon(null); String index = btn.getActionCommand(); int row = Integer.parseInt(index.split(",")[0]); int col = Integer.parseInt(index.split(",")[1]); // JOptionPane.showMessageDialog(this, index); int dis = model.farFrom(row, col); if(dis == 0){ btn.setIcon(new ImageIcon(this.getClass().getResource("/app/guesspos/smile.jpg"))); JOptionPane.showMessageDialog(this, "Congratulation! Go on!"); model.nextStep(); chance = 4; this.paintMap(); } else { btn.setEnabled(false); btn.setText("" + dis); if(chance == 0){ int play = JOptionPane.showConfirmDialog(this, "Game Over! Play again?"); if(play != 0){ this.dispose(); } else{ model.setStep(1); chance = 4; this.paintMap(); } } } this.resetTitle(); } } private void resetTitle() { jButton0.setText("step " + model.getStep() ); jButton1.setText("chance: " + chance); } }
- FindSmile.jar (15.6 KB)
- 下载次数: 60
发表评论
-
shiro 整合dwz 解决登录跳转问题
2014-02-26 11:07 5715在dwz界面操作会话超时时,有两种处理方法。一种是跳 ... -
html5--笑傲弈林
2011-06-24 17:39 2517结合笔者发过的ht ... -
Ice中间件研究
2011-06-17 15:02 10541Ice中间件研究 简介 Ic ... -
朝花夕拾-----中国象棋
2011-03-10 22:51 2082整理文件,发现昔日写的中国象棋程序,把玩一番,直叹今不如昔,锋 ... -
告诉你什么是优雅的设计(2)--------重构EasyMonitor
2011-01-20 17:33 2295EasyMonitor1.0出来后不久,玩着玩着,我就敏锐 ... -
告诉你什么是优雅的设计(1)--------EasyMonitor1.0
2011-01-19 17:44 2706公司里不知哪个“专家”做的项目,总把tomcat ... -
还原javaeye的崇高文化
2010-12-07 18:57 1532平时对帖子的质量比较苛刻,对一些没内容帖子不免冷嘲热讽。 本来 ... -
html5-贪食蛇
2010-11-30 14:09 1494随着HTML5的插入触碰到RIA的G点,b/s的生产力将进一步 ... -
告诉你什么是优雅的代码(10)----鬼斧神工
2010-11-03 16:06 2420最近逛javaeye得出的体会就是现在的弟弟妹妹确实都很强。动 ... -
告诉你什么是优雅的代码(8)-----排列组合专题
2010-09-25 14:20 6226http://www.iteye.com/topic/7703 ... -
JAVA程序员情书
2010-09-21 11:55 3692根据网络同名情书改编,版权所有,盗版不究。 我能抽象出整个 ... -
告诉你什么是优雅的代码(7)-----银行作业调度系统
2010-09-20 11:51 2391公告:C1000,请到1号窗口办理,估计用时48秒。 公 ... -
告诉你什么是优雅的代码(6)------阿拉伯钱数转换为中文形式
2010-09-19 14:08 3272http://www.iteye.com/topic/7668 ... -
告诉你什么是优雅的代码(5)------ 百度之星也是普通人(答案)
2010-09-19 09:49 2923最近在写优雅代码系列 ... -
世人谓我太疯癫,我笑世人看不穿
2010-09-17 17:44 1366你来迟了。 首先来看下这个系统的使用方法: publ ... -
告诉你什么是优雅的代码(5)------ 百度之星也是普通人
2010-09-14 16:34 2077今天在挖掘《优雅代码》系列的题材的时候,发现一贴http:// ... -
告诉你什么是优雅的代码(4)-----智力题的解法(答案)
2010-09-08 16:08 2723以下智力题摘自某一帖子。在纸上画了一下之后有了答案。出于职业敏 ... -
告诉你什么是优雅的代码(4)-----智力题的解法
2010-09-08 10:43 1933以下智力题摘自某一帖子。在纸上画了一下之后有了答案。出于职业敏 ... -
告诉你什么是优雅的代码(3)------山寨拼音分词
2010-09-06 16:27 4579早上看见一帖《拼音语法检查》,感觉比较啰嗦,也比较低效。于是自 ... -
用hibernate也能玩出jdbc的感觉
2010-09-03 15:20 1434相信大家都看了那篇《用jdbc也能玩出hibernate的 ...
相关推荐
《编译原理-山寨版-简化C语言编译器-简单易学》是一个面向初学者的编译原理教程,由一位国内知名IT公司的技术专家撰写。这个教程的特点是使用通俗易懂的语言,避免了深入复杂的理论和公式,使得非专业背景的读者也能...
【标题】"山寨版--当当网源程序"揭示了一个基于Java Web技术的网上购物平台的实现,旨在模仿知名电商网站当当网的功能与用户体验。这个项目采用了经典的Java技术栈,包括JavaServer Pages (JSP)、Struts框架以及...
**JAVA山寨版聊天源代码详解** 在JAVA编程领域,网络编程是不可或缺的一部分,尤其是在开发实时交互的应用程序,如聊天软件时。"JAVA山寨版聊天源代码"是一个学习和理解JAVA网络编程的好资源,它提供了从基础到进阶...
VC6编译,需要安装较新的...其他部分没有封装,有些win32下使用toolbar,slider,listview的代码对菜鸟也有帮助。还有文件关联的内容,说穿了就是修改注册表,让后强制刷新explorer.exe。 Email:175444525@qq.com
标题中的“山寨版QQ 源代码 QQ2010界面”指的是一个非官方的、模仿QQ2010版本用户界面的软件项目,它的源代码是使用Java编程语言编写的。这个项目可能是为了教学目的,如描述中提到的“韩顺平JAVA教程视频配套源代码...
【山寨版QQ源代码】是一个项目,旨在模仿QQ即时通讯软件的功能和架构,提供在网络环境中运行的服务。这个项目包括了服务器端和客户端两大部分,旨在实现一个与正版QQ相似但可能具有不同特性和功能的通信平台。从描述...
总结来说,"消灭星星山寨版-我代表星星消灭你"利用HTML5技术和Lufylegend框架,为玩家提供了一款跨平台、互动性强的消除类游戏。开发者通过Canvas绘制游戏画面,JavaScript编写游戏逻辑,结合Lufylegend提供的便利...
《钛合金眼的试炼-最强眼力山寨版》是一款基于HTML5技术开发的微信推广小游戏,它利用了LufyLegend游戏引擎,为玩家带来了纯天然的网页游戏体验。这款小游戏不仅在视觉上对玩家的“眼力”提出了挑战,而且在技术层面...
9. **兼容性处理**:为了让软件能在不同设备和操作系统上运行,源码中可能包含了各种兼容性处理代码,这有助于我们理解跨平台开发的技巧。 10. **错误处理与日志记录**:良好的错误处理和日志记录系统对于调试和...
国产版stlinkv2固件更新工具,更新到V2.J33.S7,可以在keil535上使用 https://blog.csdn.net/A18149287626/article/details/120729777
《山寨版QQ——Java实现详解》 在信息技术领域,编程语言的选择往往决定了软件的特性和应用范围。Java作为一门跨平台、面向对象的编程语言,因其强大的可移植性和丰富的类库,深受开发者喜爱。本篇文章将围绕一个...
《山寨版QQ——韩顺平循序渐进学Java》是一个基于韩顺平老师的Java教学视频创作的项目,旨在帮助学习者深入理解Java编程语言,尤其是网络编程和GUI设计方面。这个项目分为两大部分:QQ客户端和服务器端,涵盖了基础...
《山寨版WAR3游戏源代码》是一份针对经典游戏魔兽争霸3(WAR3)的仿制版本的游戏源代码。源代码是程序的核心部分,它包含了编写游戏的各种指令和逻辑,对于学习游戏开发和编程的人来说,这是一个宝贵的教育资源。...
【标题】:“山寨版[超级马里奥]是男人就玩过一关”指的是一个非官方制作、模仿原版《超级马里奥》游戏的版本,这类游戏通常由小型开发团队或者个人开发者制作,旨在致敬经典游戏,但也可能包含一些创新元素或趣味性...
【标题】:“山寨版QQ代码”揭示了Java编程在软件开发中的应用 在编程领域,尤其是Java编程中,"山寨版QQ代码"通常指的是开发者为了学习和理解即时通讯软件(如QQ)的工作原理,尝试用Java语言实现的一个简化版本。...
本资源提供了一个“山寨版QQ聊天”的Java源代码,对于初学者和正在完成课程设计的学生来说,是一个很好的实践项目。下面我们将深入探讨这个项目中涉及的主要Java技术和QQ聊天功能的实现原理。 1. **Java基础**: -...
qq登入器 山寨版+源代码
9. **安全性与隐私**:山寨版QQ必须遵守法律法规,尊重用户隐私。数据加密、用户权限控制和安全审计是必不可少的环节。 10. **性能优化**:随着用户数量的增长,服务器性能优化变得至关重要。这可能涉及负载均衡、...