`
juda
  • 浏览: 3260 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

星际争霸代码及流程解释

阅读更多

      北京限制牌照了,这政策让我蛋疼的不行,说点丧气话,一个欺负程序员的公司能坚持多少年,一个欺负老百姓的××能统治多少年。我觉得GWY有必要从程序员队伍里面选拔人才,太脑残了,想问题怎么就这么简单。牢骚发完了,代码解释搞起,那哥们发了代码和截图就跑了,赞他的分享精神。这里来解释下这段代码,顺便跟大家交流下关于Swing开发程序的心得,请多多指教。

      先来看程序运行的情况,有个感性的认识。

    

 

1初始化界面

      接着如果点击Single Player 的话进入下一个界面:

 

2 Single Player界面

 

好了先到这里,我们来看一些程序的代码结构:

 

3 代码结构

这个代码的入口在包test下,如下图4,你不要告诉我不知道怎么运行,那我就蛋疼了。

 

4 测试运行类TestGameCore.java

 

大家运行下就能看到本文开始的两个界面了,ok,大家应该有个感性认识了,那咱们开始介绍对应代码,首先是TestGameCore.java,先看入口main函数:

 

public static void main(String[] args) throws Exception {

   

1.if(args.length>0){Constant.IP = args[0];}

2.else{Constant.IP =netAddress.getLocalHost().getHostAddress();}     

3.new TestGameCore().run();

}

前面的两行是得到本机IP地址,这里先不细介绍了,以后介绍关于网络部分的内容的时候我们再来做介绍。最后一行是TestGameCore().run(),这里创建了一个匿名对象并直接调用了TestGameCore类的run()方法,这个run方法是在TestGameCore的父类FullGameCore里定义的,接下来我们进入FullGameCore这个类的定义了,看看run方法里有什么,下面是它的代码:

public void run() {

        try {

        1.    init();

        2.  gameLoop();

        }

        finally {

            screen.restoreScreen();

            lazilyExit();

        }

}

从上面的代码,我们可以知道它接下来要运行init 函数与gameLoop函数,那么我们把这两个函数的代码粘贴过来:

///////////////////

public void init() {

        screen = new ScreenManager();

DisplayMode displayMode=screen.findFirstCompatibleMode(POSSIBLE_MODES);

        screen.setFullScreen(displayMode);

        JFrame frame = screen.getFullScreenWindow();

        frame.setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));

        frame.setBackground(Color.white);

        frame.setForeground(Color.white);

        frame.setTitle("JStarCraft");

        frame.setIconImage(ResourceManager.loadImage("title.png"));

        isRunning = true;

        frame.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(

              ResourceManager.loadImage("cur.png"), new Point(0, 0), "cur"));

    NullRepaintManager.install();

       frame.setLayout(null);

       ((JComponent) frame.getContentPane()).setOpaque(true);

      

    }

这个函数主要完成初始化屏幕的工作,每行的代码的意思以后再详细解释,大家只需要知道当我们需要画画的时候需要画板和笔,这里的工作相当于给了我们一个画板,而且画板上有若干纸张。

下面的这个函数gameLoop完成什么功能呢,大家可以看到主体是一个while循环,这里大家就应该能知道这个函数就是按照一定的时间频率来刷新屏幕。

public void gameLoop() {

        long startTime = System.currentTimeMillis();

        long currTime = startTime;

 

        while (isRunning) {

            long elapsedTime =

                System.currentTimeMillis() - currTime;

            currTime += elapsedTime;

 

            // update

            update(elapsedTime);

 

            // draw the screen

            Graphics2D g = screen.getGraphics();

            draw(g);

            g.dispose();

            screen.update();

//            System.out.println(elapsedTime);

//             don't take a nap! run as fast as possible

            try {

                Thread.sleep(5);

            }

            catch (InterruptedException ex) { }

        }

    }

                                        未完

分享到:
评论

相关推荐

    Java源码包100个设计实例.zip

    EJB 模拟银行ATM流程及操作源代码 ejbCreate函数用于初始化一个EJB实例 EJB中JNDI的使用源码例子 EJB的真实世界模型(源代码).rar ftp文件传输 ftp简易服务器.rar HAHA CHAT Java仿QQ聊天程序源代码.rar html 标记...

    JAVA上百实例源码以及开源项目源代码

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean...

    java源码包---java 源码 大量 实例

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean...

    JAVA上百实例源码以及开源项目

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean...

    java源码包2

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证...

    java源码包3

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证...

    java源码包4

    EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    基于Unity3D多平台网络斗地主的设计与实现毕业设计.doc

    比较 大型的游戏有:反恐精英、星际争霸、使命召唤,生化危机等。当然也涌现了诸多经典 的网络小游戏,比如麻将、拖拉机、中国象棋等。此外手机游戏,如愤怒的小鸟、保卫 萝卜、FlappyBird、切水果、捕鱼达人等也...

Global site tag (gtag.js) - Google Analytics