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

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

用户操作
[即时聊天] [发私信] [加为好友]
匿名不具ID:cping1982
149453次访问,排名522好友15人,关注者28
机密……
cping1982的文章
原创 138 篇
翻译 0 篇
转载 39 篇
评论 302 篇
鹏凌三千(cping1982)的公告
本博评论删除规则如下:

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

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

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

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

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

本人有效BLOG:

cping1982

ceponline

音乐:

风姿花传

ドラグ.スレイブ

ヒカルの碁

Believe

世界で一番ヤバイ恋

あんなに一緒だった

精忠报国

谁是大英雄

随遇而安

明天会吹什么风

逍遥游

爱江山更爱美人

最近评论
qingtianzhu:你好,我想购买你的软件,但是一直联系不上你,请告知联系方式,谢谢!
yao_ju_xian:看着挺好的啊,我现在也在学Java,不过我是学oracle那块的,我觉得你做的相当好了,能不能教教我啊?谢谢,我的邮箱是yaojuxian1988@yahoo.com.cn,非常感谢你能赐教!
.net:啥也不说支持楼主B/S小白
原理都不懂就在这里叽叽呀呀的
多回去看几年书吧
真像是在看笑话“呵呵”
如果易语言真有那么“好”没有中国人不支持的
可是(*^__^*) 嘻嘻……
明白的都明白
不明白的自己琢磨去吧
kiki820819:asdasd
kiki820819:asdasd
文章分类
收藏
    相册
    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

    原创 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[1]——风云初现收藏

    新一篇: 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[2]——踏破红尘 | 旧一篇:  人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[0]——月晕础润

        “本鹏”上接前文,继续来进行Java RPG开发讲座,上次我们谈到了JFrameJPanel合作进行界面开发,这次我们再结合实例继续讲解。

     

         在谈完Java中窗体和面板的使用后,接下来就要进入正题了。

     

        Java RPG游戏开发中地图的初步构建

       

    文件:Example1.Java

     

    package org.loon.chair.example1;

     

    import java.awt.Container;

     

    import javax.swing.JFrame;

    /**

     * Example1中窗体,用于显示地图。

     *

     * @author chenpeng

     *

     * Loon Framework in Game

     *

     */

     

    public class Example1 extends JFrame {

        public Example1() {

     

           // 默认的窗体名称

           setTitle("Example1[Java游戏中地图的描绘]");

     

           // 获得我们自定义面板[地图面板]的实例

           MyPanel panel = new MyPanel();

           Container contentPane = getContentPane();

           contentPane.add(panel);

     

           // 执行并构建窗体设定

           pack();

        }

     

        public static void main(String[] args) {

           Example1 e1 = new Example1();

           // 设定允许窗体关闭操作

           e1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

           // 显示窗体

           e1.setVisible(true);

        }

    }

     

     

    文件:MyPanel.Java

     

    package org.loon.chair.example1;

     

    import java.awt.Dimension;

    import java.awt.Graphics;

    import java.awt.Image;

     

    import javax.swing.ImageIcon;

    import javax.swing.JPanel;

     

    /**

     * Example1中自定义面板,用于描绘底层地图。

     *

     * @author chenpeng

     *

     * Loon Framework in Game

     *

     */

    public class MyPanel extends JPanel{

     

        //窗体的宽与高

        private static final int WIDTH = 480;

        private static final int HEIGHT = 480;

     

        //设定背景方格默认行数

        private static final int ROW = 15;

        //设定背景方格默认列数

        private static final int COL = 15;

       

        //单个图像大小,我默认采用32x32图形,可根据需要调整比例。

        //当时,始终应和窗体大小比例协调;比如32x32的图片,如何

        //一行设置15个,那么就是480,也就是本例子默认的窗体大小,

        //当然,我们也可以根据ROW*CS,COl*CS在初始化时自动调整

        //窗体大小,以后的例子中会用到类似情况。总之一句话,编程

        //[为目的而存在的],所有的方法,大家都可任意尝试和使用。

        private static final int CS = 32;

     

        //设定地图,通常在rpg类型游戏开发中,以[二维数组]对象为

        //基础进行地图处理,用以描绘出X坐标和Y坐标。实际上,即令

        //再华丽的RPG类游戏,都是从这些简单的X,Y坐标开始的。

        //PS:所谓[数组],大家可以简单的理解为即数据的集合,一维数组

        //仅包含X轴,而二维是由X,Y两个轴组成的,XY的交织点,即为

        //一条数据。

        private int[][] map = {

            {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,1,1,1,1,1,0,0,0,0,1},

            {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},

            {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},

            {1,0,0,0,0,1,0,0,0,1,0,0,0,0,1},

            {1,0,0,0,0,1,1,0,1,1,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,0,0,0,0,0,0,0,0,0,0,0,0,0,1},

            {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}};

     

        //设定显示图像对象

        private Image floorImage;

        private Image wallImage;

     

        public MyPanel() {

            //设定初始构造时面板大小

            setPreferredSize(new Dimension(WIDTH, HEIGHT));

     

            //于初始化时载入图形

            loadImage();

        }

     

        //描绘窗体,此处在默认JPanel基础上构建底层地图.

        public void paintComponent(Graphics g) {

            super.paintComponent(g);

     

            //画出地图

            drawMap(g);

        }

     

        /**

         * 载入图像

         *

         */

        private void loadImage() {

        //获得当前类对应的相对位置image文件夹下的地板图像[以下图像可用任意素材代替]

       

            ImageIcon icon = new ImageIcon(getClass().getResource("image/floor.gif"));

            //将地板图像实例付与floorImage

            floorImage = icon.getImage();

            //获得当前类对应的相对位置image文件夹下的墙体图像

            icon = new ImageIcon(getClass().getResource("image/wall.gif"));

            //将墙体图像实例付与wallImage

            wallImage = icon.getImage();

        }

       

        private void drawMap(Graphics g) {

        //Java或任何游戏开发中,算法都是最重要的一步,本例尽使用

        //简单的双层for循环进行地图描绘,

            for (int x = 0; x < ROW; x++) {

                for (int j = 0; j < COL; j++) {

                 

                    // switch作为java中的转换器,用于执行和()中数值相等

                  // case操作。请注意,在case操作中如果不以break退出

                  // 执行;switch函数将持续运算到最后一个case为止。

                    switch (map[x][j]) {

                       

                        case 0 : //map的标记为0时画出地板

                           //在指定位置[描绘]出我们所加载的图形,以下同

                            g.drawImage(floorImage, j * CS, x * CS, this);

                            break;

                 

                        case 1 : //map的标记为1时画出城墙

                            g.drawImage(wallImage, j * CS, x * CS, this);

                            break;

                         //我们可以依次类推出无数的背景组合,如定义椅子为2、宝座为3

                         //很容易即可勾勒出一张背景地图。  

                 

                        default: //当所有case值皆不匹配时,将执行此操作。

                           break;

                    }

                }

            }

        }

    }

     

     

     

    运行效果如下: