论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

五子棋手机网络对战游戏(论文+程序)

5.3 游戏的功能流程图

进入游戏后,首先显示的是菜单,有2个命令选项:进入游戏和操作说明;一个按钮:退出程序。选择进入游戏这个命令,则进入到用户登录窗口,如果登录成功,则跳转到游戏界面,如果登录失败,则跳出警告窗口,3秒后返回到登录窗口。也可以从登录窗口退出程序。如果选择操作说明命令,则显示操作说明界面,按返回按钮,又回来主菜单。游戏的功能流程如图所示

内容来自论文无忧网 www.paper51.com

内容来自论文无忧网 www.paper51.com

图4功能流程图

http://www.paper51.com

5.4 游戏的实现

内容来自论文无忧网 www.paper51.com

5.4.1 主类Omok的实现

内容来自论文无忧网 www.paper51.com

MIDlet是最核心的类。MIDlet程序有三种状态:

http://www.paper51.com

1、  暂停状态 copyright paper51.com

2、  运行状态 内容来自www.paper51.com

3、  销毁状态 内容来自论文无忧网 www.paper51.com

J2ME程序都是从MIDlet类开始执行。系统在执行MIDlet程序时,首先构造一个MIDlet类型的对象,然后使程序进入到暂停状态,按照生命周期的规定,系统会自动调用MIDlet对象的startApp方法使程序进入到运行状态,开始程序的执行。 内容来自论文无忧网 www.paper51.com

内容来自www.paper51.com

图5 开始界面

paper51.com

首先,先要创建MIDlet类型的对象,下面来看对象的构造方法: 内容来自论文无忧网 www.paper51.com

public Omok() {

copyright paper51.com

       startCmd = new Command("Start", Command.SCREEN, 2); http://www.paper51.com

       exitCmd  = newCommand("Exit", Command.EXIT, 3); 内容来自www.paper51.com

      theCanvas = new OmokCanvas(); 内容来自www.paper51.com

       theOne=new main();

内容来自论文无忧网 www.paper51.com

        display=Display.getDisplay(this); 内容来自www.paper51.com

       help=new Help(this);

copyright paper51.com

       logo=new Logo(this); 内容来自www.paper51.com

       instance=this;

http://www.paper51.com

    }

内容来自www.paper51.com

在这个构造器中,创建了一个Display对象用于显示,然后,又创建了一个画布的实例。

http://www.paper51.com

Display类有两个最主要的作用:

内容来自论文无忧网 www.paper51.com

1、  获得屏幕的属性。例如屏幕是否是彩色的,以及支持的颜色数量等信息。 内容来自www.paper51.com

2、  控制屏幕的显示。例如使屏幕显示某个指定界面或者获得当前的显示界面等。 paper51.com

其中,特别是第二个作用使用的更加频繁。 copyright paper51.com

当程序启动的时候,则调用了程序的startApp方法,用来显示画面:

http://www.paper51.com

public void startApp() { paper51.com

       theCanvas.addCommand(startCmd);

内容来自论文无忧网 www.paper51.com

       theCanvas.addCommand(exitCmd); 内容来自论文无忧网 www.paper51.com

      theCanvas.setCommandListener(this);

paper51.com

       display.setCurrent(theOne); 内容来自论文无忧网 www.paper51.com

    } 内容来自论文无忧网 www.paper51.com

这个方法的作用是把在构造器中创建的画布对象设置为当前屏幕上需要显示的画面。 http://www.paper51.com

当调用destroyApp 这个方法的时候,则退出程序。

内容来自论文无忧网 www.paper51.com

public void destroyApp(boolean unconditional) copyright paper51.com

{

内容来自论文无忧网 www.paper51.com

       exit(); copyright paper51.com

 } http://www.paper51.com

public void exit() paper51.com

{

内容来自www.paper51.com

       System.gc();

paper51.com

       notifyDestroyed();

copyright paper51.com

 }

http://www.paper51.com

退出程序的时候,要实行垃圾回收,释放掉不再使用的内存。 内容来自论文无忧网 www.paper51.com

5.4.2 游戏登录界面以及操作说明界面的实现

内容来自论文无忧网 www.paper51.com

这两个类的实现都是继承了Form类,来添加各种组件的。下面是效果图:

内容来自论文无忧网 www.paper51.com

paper51.com

图6 Form界面效果图

内容来自论文无忧网 www.paper51.com

下面先来分析logo类: 内容来自www.paper51.com

class Logo   extends Form    implements CommandListener

内容来自论文无忧网 www.paper51.com

这是类的声明,它继承了Form类,同时派生了一个接口,用来产生按钮事件。 内容来自www.paper51.com

Logo(Omokmidlet)

http://www.paper51.com

    {

copyright paper51.com

       super("");

http://www.paper51.com

       this.midlet = midlet;

paper51.com

UserName=newTextField("用户名","",9,TextField.ANY);

http://www.paper51.com

              UserPassword=newTextField("密   码","",9,TextField.PASSWORD); copyright paper51.com

              try{ 内容来自www.paper51.com

              img=newImageItem("",Image.createImage("/1.png"),ImageItem.LAYOUT_CENTER,"imageexplorer");} http://www.paper51.com

             catch(java.io.IOException e){}

http://www.paper51.com

              append(img);

copyright paper51.com

              append(UserName); http://www.paper51.com

              append(UserPassword); 内容来自www.paper51.com

       backCommand = new Command("登录", Command.BACK, 1);

内容来自www.paper51.com

         exit = new Command("退出", Command.EXIT, 1); copyright paper51.com

       addCommand(backCommand); copyright paper51.com

       //addCommand(exit); http://www.paper51.com

       setCommandListener(this); copyright paper51.com

} 内容来自www.paper51.com

这是他的构造方法,创建了2个输入框,并添加到Form上,并且还加上了2个按钮。

paper51.com

Help类的实现和它类似,因此不再详细介绍。 内容来自www.paper51.com

5.4.3游戏画布类的实现

paper51.com

在J2ME游戏编程中,Canvas类是最常用的类之一,该类提供了获得手机屏幕属性、绘制界面以及事件处理等很多实用的功能。 内容来自论文无忧网 www.paper51.com

Canvas类是Displayable的子类,在实际的使用过程,一般都通过继承Canvas来利用该类提供的功能。Canvas类是一个抽象类,继承该类的时候必须覆盖paint方法。来看游戏画面:

内容来自www.paper51.com

内容来自论文无忧网 www.paper51.com

图7 游戏运行效果图

copyright paper51.com

首先先看下它的构造方法:

copyright paper51.com

public OmokCanvas() {

http://www.paper51.com

       board = new OmokBoard();//创建画板 paper51.com

       cursor = new Cursor();//创建光标 内容来自论文无忧网 www.paper51.com

       connector = new ServerConnector(this);

copyright paper51.com

       setGameMode(INIT);//设置模式 内容来自www.paper51.com

}

http://www.paper51.com

在它里面,创建了画板,光标、连接器。并且设置了模式。

paper51.com

然后来看具有流程控制作用的setGameMode方法: http://www.paper51.com

private voidsetGameMode(int gameMode) { http://www.paper51.com

       this.gameMode = gameMode;

内容来自www.paper51.com

       switch(gameMode) {

内容来自www.paper51.com

           case INIT :

http://www.paper51.com

                                       id0= id1 = -1;//设置标记变量初始值 内容来自论文无忧网 www.paper51.com

                       row = col = 6;//初始化棋盘大小 paper51.com

                       board.init();

copyright paper51.com

                       break;

http://www.paper51.com

           case CONNECT : paper51.com

                                                     Threadcthread = new Thread() http://www.paper51.com

                                                     { 内容来自论文无忧网 www.paper51.com

                                     publicvoid run()

http://www.paper51.com

                                     {

内容来自论文无忧网 www.paper51.com

                                            repaint();

http://www.paper51.com

                                            if(islogin) copyright paper51.com

                                           {connect();

copyright paper51.com

                                          } copyright paper51.com

                           else

内容来自论文无忧网 www.paper51.com

                                            {loginGame();

copyright paper51.com

                                         }

http://www.paper51.com

                         }

内容来自论文无忧网 www.paper51.com

                       }; copyright paper51.com

                       cthread.start();

paper51.com

                       break; paper51.com

            case TURN0: 内容来自论文无忧网 www.paper51.com

                                                     cursor.setLocation(row, col); 内容来自www.paper51.com

                         break;

paper51.com

           case TURN1 :

内容来自论文无忧网 www.paper51.com

                                                           connector.receiveData(id0); 内容来自www.paper51.com

                        break; 内容来自论文无忧网 www.paper51.com

        }

copyright paper51.com

       repaint(); 内容来自www.paper51.com

    } 内容来自论文无忧网 www.paper51.com

在这里面,定义了4种状态时所要处理的事件,在这个程序中的别的方法里,当满足一定条件的时候,就开始设置那些状态变量,从而实现了流程的控制。 paper51.com

------分隔线----------------------------
联系方式