快速业务通道

创建Eclipse游戏插件,第3部分: 启动游戏 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
所以,我们需要把游戏部件初始化的部分隔离出来,好让这项工作能够进行。请修改 initGL 方法,并添加一个 initPieces 方法,如清单 21 所示。

清单 21. 初始化游戏部件

...      GLU.gluQuadricNormals(Bug.QUADRIC, GLU.GLU_SMOOTH);      GL.glEnable(GL.GL_TEXTURE_2D);      initPieces();    }    public void initPieces(){      this.gun = new Gun(0, 0, 12);      bugCount = \       ShootoutView.viewer.getTable().getItemCount();      this.bugs = new Bug[bugCount];      float tx = -Bug.RADIUS*bugCount;      for (int i = 0; i < this.bugs.length; i++){        this.bugs[i] = new Bug(COLOR[i % \         COLOR.length], tx, 0, -8);        tx += 2*Bug.RADIUS;      }      pow = new Pow();      bullets = new Bullet[25];      for(int i = 0; i < bullets.length; i++)        bullets[i] = new Bullet(this, .2f, -.2f, 9.5f);    }

我们采用了来自 initGL 方法的原始代码,创建了一个新方法 initPieces,然后把代码放在这个方法内。现在可以重新初始化游戏设置,供玩游戏使用。

创建Eclipse游戏插件,第3部分: 启动游戏(10)

时间:2011-02-10 IBM Tyler Anderson

释放部件

就像对部件初始化所做的那样,对释放部件也要做同样的事。请修改 dispose 方法,添加一个 disposePieces 方法,如清单 22 所示。

清单 22. 释放部件

public void disposePieces() {      this.gun.dispose();      for(int i = 0; i < bugs.length; i++)        bugs[i].dispose();      for(int i = 0; i < bullets.length; i++)        bullets[i].dispose();      pow.dispose();    }    public void dispose() {      GLU.gluDeleteQuadric(Gun.QUADRIC);      GLU.gluDeleteQuadric(Bullet.QUADRIC);      GLU.gluDeleteQuadric(Bug.QUADRIC);      disposePieces();      super.dispose();    }

我们只是删除了现有的释放代码,并把它们移动到 disposePieces 方法中。

重新开始游戏

现在添加了处理旧部件和初始化新部件的功能,可以在 ShootoutView 类中添加合适的功能了。请修改 ShootoutView 类中的以下代码段,如清单 23 所示。

清单 23. 重新开始游戏

...      startGameButton.setText("(Re)start Game");      startGameButton.addSelectionListener(new SelectionAdapter() {        public void widgetSelected(SelectionEvent event) { ...            if(!ShootoutView.this.sceneRunning){ ...              ShootoutView.this.sceneRunning = true;            }            else{              ShootoutView.this.scene.disposePieces();              ShootoutView.this.scene.initPieces();            }          } ...

如果布景已经启动运行,就需要重新初始化它,如 else 语句中的代码所示。这就行了!现在,只要杀死了所有虫子,就可以点击 “(Re)start Game” 按钮让它们全复活。下面简要总结一下如何才能让这个游戏与众不同。

要考虑的事情

OpenGL 是个强大的图形编程 API,在编程时还有多个选项可用。例如,可以利用它的 2 维特性,创建平面 2 维游戏,就像老式的 Atari 游戏做的那样。

正如

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号