Java究竟怎么玩?http://blog.csdn.net/cping1982

菩提本无树,明镜亦非台,本来无一物,何处惹尘埃

匿名不具ID:cping1982
141423次访问,排名550好友14人,关注者18
机密……
cping1982的文章
原创 138 篇
翻译 0 篇
转载 39 篇
评论 297 篇
鹏凌三千(cping1982)的公告
本博评论删除规则如下:

1、辱骂性发言,无视其辱骂对象,一律删。

2、登录发表的评论,不违背第一条者一律不删。非登录发表的评论,过激者删。

3、若发生例外情况,则为CSDN博客系统自动删除。

声援SOFF|声援珊瑚虫:如果你是珊瑚虫用户,请坚决力挺声援珊瑚虫!

平生进退如飙风,一睨人才天下空。独向苍天横冷剑,何必生我惭英雄。

本人有效BLOG:

cping1982

ceponline

音乐:

风姿花传

ドラグ.スレイブ

ヒカルの碁

Believe

世界で一番ヤバイ恋

あんなに一緒だった

精忠报国

谁是大英雄

随遇而安

明天会吹什么风

逍遥游

爱江山更爱美人

最近评论
cping1982:您好,此问题我已经知道,预计在9月15日左右将更新系统,因此而给您带来不便,在此仅致以十二万分的歉意。
7号:老大,注册出问题了。重装系统就不能注册了!
cping1982:您好,请参阅软件中的pdf手册
gmf:这个具体怎么用啊
456 OUT!:完全满足[321 GO!]要求的目前似乎不多,好像Google Talk及Kmess(能与MSN互通)是这样的,其他如百度hi,skype都只能满足你部分要求。
文章分类
收藏
    相册
    Java的PC游戏开发
    Java中的A*(A star)寻径实现
    Java仿雷电及其源代码
    Java制作的类祖码游戏-数字祖码
    Java实现窗体中角色逐渐风化效果
    Java版吃豆游戏
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[2]——踏破红尘
    Java[伪]寻径追踪实现
    JAVA中[人工无脑]系统(chatbot)的实现
    Java中2.5D游戏(斜45度角)的设计与实现(1)
    Java中2.5D游戏(斜45度角)的设计与实现(2)
    Java仿太阁立志传5
    JAVA图形操作中FPS的计算(附带随机生成乱数球体用例)
    JAVA实现拼图游戏
    Java来做马里奥[0]—让精灵再次舞动
    Java来做马里奥[1]—木叶传承
    Java来做马里奥[2]—食不厌精
    Java来做马里奥[3]—杂兵登场
    Java模拟桌球打击处理及绘制
    Java汉诺塔测试
    Java炸弹人实现及源码
    人生如梦游戏间,JAVA游戏开源开发讲座[番外篇]之AVG开发——皮影
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[0]——月晕础润
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[1]——风云初现
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[3]——邯郸学步
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[5]——一树双花
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[6]——走马观花
    史上最扯Java图形绘制(J2SE)之一JAVA动画效果
    沉寂的国人开源项目
    bo-blog(blog系统,php项目)
    DockPanel Suite [Microsoft .NET Framework Winform UI]
    Hocate web framework[web框架]
    Loonframework-DAO[持久层框架]
    Loonframework-GAME[游戏框架,尚未发布]
    Loonframework-WEB[web框架,尚未发布]
    Luntbuild(软件管理工具)
    magike(php博客)
    myseelite(p2p流媒体系统,c++项目)
    newxy(新坐标)[web框架]
    opencrx(crm系统)
    redlion(web框架)
    x2blog(asp.net博客系统)
    YOYOPlayer(音乐播放器)
    袋鼠egg(服务器)
    经典Blog
    # gzfqh的专栏 →底层代码研究(病毒及汇编)(RSS)
    # java 3D 游戏编程(RSS)
    ApoGames(德国某人的Java游戏作品展示)
    Struts框架应用
    Struts框架应用~
    千里冰封[JAVA 浓香四溢]
    网络安全圈子
    经典站点
    Google
    IBM中国站
    JavaGame开发论坛
    JAVA开源大全
    Java爱好者
    Struts标签文档
    SUN 中国社区
    中国IT实验室
    数据库专区
    偶的其它应用实例
    C#将图像文件压缩为AVI文件播放
    Java&.Net虚拟机精简(GreenJVM&GreenDotNet发布)
    Java图形程序水纹倒映效果
    Java输出竖排古典文字
    .NET在线漫画下载程序
    C#转换AVI文件为BMP文件
    ClassLoader调用外部jar包
    ExtJS2.0开发与实践笔记[0]——初识ExtJS
    ExtJS2.0开发与实践笔记[1]——ExtJS中的Dialog与Form
    ExtJS2.0开发与实践笔记[2]——Ext中的Layout
    ExtJS2.0开发与实践笔记[3]——Ext中的Menu
    ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
    JavaFx实现(1)-渐变效果
    JavaFx实现(2)-随机图形绘制
    Java中DAO的实现
    Java中Image翻转操作
    Java中将byte[]转为Blob对象
    Java中的A*(A star)寻径实现
    Java制作绿色软件(GreenJVM_0.1.0发布)
    JAVA图形操作类
    Java图形程序中的对话逐字显示实现
    Java实现任意文件在bmp中的隐藏与导出
    JAVA实现可设置背景的MDI窗口
    Java实现嵌入式数据库(文本数据库)代码实例
    Java实现类Windows导航栏
    Java正则表达式入门
    JAVA版JAVA IDE环境(源码)
    JAVA线程池的简单实现及优先级设置
    Java自定义JSlider UI
    Java获得系统环境变量
    Java音乐播放类
    ResultSet转为实体对象
    SWT行,AWT/Swing也行系列(1)-实现半透明及不规则窗体
    在JTable中加载进度条及进行操作
    在Swing中使用Html标签
    在SWT中使用ChartDirector
    浅谈java.util.concurrent包的并发处理
    浅谈Java集合中Array(数组)的应用
    精简JRE体积
    通过exe启动class
    偶的文章
    《三国以后有几国》
    中国本土化编程(汉语编程)之我见
    从珊瑚虫事件,看为什么中国出不了比尔.盖茨
    佛与专家
    叹今人无气节而作歌
    国产开源项目的七宗罪
    对Hibernate使用之愚见
    对Java(J2SE PC)开发之怪现象之我见
    浅谈命名规范[纯属强辩]
    灭了珊瑚虫,下一个是谁?
    率性而作无题歌一首
    百度对“十进制网络”的官方态度
    耻民
    论番茄花园的倒掉
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 java汉诺塔测试收藏

    新一篇: C#转换AVI文件为BMP文件 | 旧一篇: Java模拟桌球打击处理及绘制

    汉诺塔问题[又称河内塔]是印度的一个古老的传说。

    据传开天辟地之神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。就是这看似简单的问题,却困扰了人们千年以上。

    后来,这个传说就演变为汉诺塔游戏,玩法如下:

    1.有三根杆子A,B,C。A杆上有若干碟子 
    2.每次移动一块碟子,小的只能叠在大的上面 
    3.把所有碟子从A杆全部移到C杆上

    经过研究发现,三圆盘的汉诺塔问题很好破解,就是按照移动规则向一个方向移动金片:
    如3阶汉诺塔的移动:A→C,A→B,C→B,A→C,B→A,B→C,A→C

    但每当增加一阶,移动的次数却会以倍数增加,因此每当圆盘增加到一定数量时,常人只能望而却步。

    而我们程序员却可以借助于计算机的运算性能,轻而易举地解决这一问题,汉诺塔问题也作为程序设计中的经典递归问题而存在下来。

    但是,实践和理论往往却有天壤之别,我们虽然可以运算出汉诺塔的结果,但是却未必能动手完成这一结果。不信?我这里给出了一个简单的汉诺塔实现,有兴趣的可以自己码盘子看看。

    package org.loon.test;

    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Frame;
    import java.awt.Graphics;
    import java.awt.Menu;
    import java.awt.MenuBar;
    import java.awt.MenuItem;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;

    /**
     * <p>
     * Title: LoonFramework
     * </p>
     * <p>
     * Description:java汉诺塔测试
     * </p>
     * <p>
     * Copyright: Copyright (c) 2007
     * </p>
     * <p>
     * Company: LoonFramework
     * </p>
     * 
     * 
    @author chenpeng
     * @email:ceponline@yahoo.com.cn
     * 
    @version 0.1
     
    */

    public class Hanio extends Frame {
        
    /**
         * 
         
    */

        
    private static final long serialVersionUID = 1L;

        
    private HanioDraw _hanioDraw;

        
    public static void main(String args[]) {
            
    new Hanio("java汉诺塔实现测试"350300);
        }


        
    public Hanio(String string, int width, int height) {
            
    super(string);

            _hanioDraw 
    = new HanioDraw();

            setResizable(
    false);// 设为用户不可改变窗体大小
            setSize(width, height);// 设置窗口大小
            setBackground(Color.WHITE);// 背景颜色设置为白色

            
    // 菜单
            MenuBar myMenu = new MenuBar();
            Menu sMenu 
    = new Menu("选择数量");

            MenuItem[] mItems 
    = new MenuItem[6];
            
    for (int i = 3; i <= 8; i++{
                mItems[i 
    - 3= new MenuItem(String.valueOf(i));
                mItems[i 
    - 3].addActionListener(new ActionListener() {
                    
    public void actionPerformed(ActionEvent e) {
                        _hanioDraw.init(Integer.parseInt(((MenuItem) e.getSource())
                                .getLabel().toString()));
                        repaint();
                    }

                }
    );
                sMenu.add(mItems[i 
    - 3]);
            }


            myMenu.add(sMenu);
            setMenuBar(myMenu);

            setLayout(
    null);
            
    // 加入窗体监听
            addWindowListener(new WindowAdapter() {
                
    public void windowClosing(WindowEvent e) {
                    System.exit(
    0);
                }

            }
    );
            
    // 加入鼠标监听
            addMouseListener(new MouseAdapter() {
                
    public void mouseClicked(MouseEvent e) {

                    Hanio hanio 
    = (Hanio) e.getSource();
                    Dimension frSize 
    = hanio.getSize();
                    
    int x = e.getX();
                    
    int w = frSize.width / 3;
                    
    if (x < w) {
                        hanio.getHanioDraw().click(
    0);
                    }
     else if (x < (2 * w)) {
                        hanio.getHanioDraw().click(
    1);
                    }
     else {
                        hanio.getHanioDraw().click(
    2);
                    }


                    hanio.repaint();

                }

            }
    );
            
    // 窗体居中
            setLocationRelativeTo(null);
            
    // 显示窗口
            setVisible(true);

        }


        
    public void paint(Graphics g) {

            
    final int OBJECT_H = 15;// 对象高
            final int OBJECT_W = 10;// 对象宽
            final int OBJECT_D = 90;// 对象间距
            final int OBJECT_S = 60;// 起始位置

            
    // 绘制图像
            int n;
            
    for (n = 0; n < 8; n++{
                
    if (_hanioDraw.getBlock(n, 0!= 0{
                    g.drawRect(OBJECT_S, 
    200 - n * OBJECT_H, OBJECT_W
                            
    * _hanioDraw.getBlock(n, 0), OBJECT_H);
                }

            }

            
    for (n = 0; n < 8; n++{
                
    if (_hanioDraw.getBlock(n, 1!= 0{
                    g.drawRect(OBJECT_D 
    + OBJECT_S, 200 - n * OBJECT_H, OBJECT_W
                            
    * _hanioDraw.getBlock(n, 1), OBJECT_H);
                }

            }

            
    for (n = 0; n < 8; n++{
                
    if (_hanioDraw.getBlock(n, 2!= 0{
                    g.drawRect(
    2 * OBJECT_D + OBJECT_S, 200 - n * OBJECT_H,
                            OBJECT_W 
    * _hanioDraw.getBlock(n, 2), OBJECT_H);
                }

            }


            
    if (_hanioDraw.getTop() != 0{
                g.drawRect(
    6060, OBJECT_W * _hanioDraw.getTop(), OBJECT_H);
            }

            
    if (_hanioDraw.goFull()) {
                g.drawString(
    "完成"100100);
            }


        }


        
    public HanioDraw getHanioDraw() {
            
    return _hanioDraw;
        }


        
    public void setHanioDraw(HanioDraw hd) {
            
    this._hanioDraw = hd;
        }


        
    class HanioDraw {

            
    private int _top;// 拿起的方块

            
    private int _size;// 总数

            
    private int[][] _room;// 用以存储位置

            
    private int[] _cache;// 缓存单个对象

            
    public HanioDraw() {
                _room 
    = new int[8][3];
                _cache 
    = new int[3];
                
    // 默认初始值
                init(3);
            }


            
    /**
             * 开始处理
             * 
             * 
    @param x
             
    */

            
    public void init(int x) {
                _size 
    = x - 1;
                
    for (int i = 0; i <= 2; i++{
                    
    for (int j = 0; j < 8; j++{
                        _room[j][i] 
    = 0;
                    }

                    _cache[i] 
    = -1;
                }

                
    for (int i = 0; i < x; ++i) {
                    _room[i][
    0= x - i;
                }

                _cache[
    0= x - 1;
                _top 
    = 0;
            }


            
    /**
             * 拿起目标对象
             * 
             * 
    @param x
             * 
    @return
             
    */

            
    boolean take(int x) {
                
    if (_cache[x] == -1)
                    
    return false;
                _top 
    = _room[_cache[x]][x];
                _room[_cache[x]][x] 
    = 0;
                _cache[x]
    --;
                
    return true;
            }


            
    /**
             * 拖动目标对象
             * 
             * 
    @param x
             * 
    @return
             
    */