移动互联导论项目总结报告

课程编号:B080106200

《移动互联导论》

项目总结报告

东北大学软件学院


小组划分

目录:

移动互联导论项目总结报告.........................................................................1

小组划分.........................................................................................................2

一:项目说明.................................................................................................4

1:做手游拼图原因.......................................................................................4

2:项目总论...................................................................................................4

3:项目背景...................................................................................................4

4:项目需求...................................................................................................5

5:项目可行性..................................................................................................5

二:概要设计.................................................................................................6

1:实现的功能...............................................................................................6

2:主页面布局...............................................................................................7

3:APP图标设计.........................................................................................     .8

三:详细设计.................................................................................................8

1:详细的类图...............................................................................................8

2:主要技术..................................................................................................10

四:数据设计................................................................................................12

1:APP自带的图片数据..............................................................................12

2:获取手机本地的图片数据......................................................................12

五:界面设计................................................................................................12

1:APP主界面..............................................................................................12

2:游戏界面..................................................................................................13

3:相机拼图拍照界面..................................................................................14

六:其他........................................................................................................14

1:遇到的问题及解决方案..........................................................................14

2:不足之处..................................................................................................15

3:总结..........................................................................................................15

一、项目说明

我们小组做的是一个手游,拼图游戏,我会从下面几个方面详细地加以说明:

1:手机游戏那么多,我们为何独独做拼图?

   现在由于手游市场的蓬勃发展,很多的手机游戏只是为了吸引人们的眼球,其中往往充斥着色情暴力,对青少年的发展很不利,社会上很多不良少年总是说由于受到暴力游戏的影响才会走上违法犯罪的道路,一款好的手机游戏是很重要的,我们做拼图游戏,就像象棋以及其他益智类游戏一样,对人有很大的好处,首先它可以增进手眼协调能力的发展,我们在玩拼图游戏的时候,就是双眼盯着图形,双手同时操作,这对我们的协同能力有帮助,其次它可以培养我们的观察力,培养耐心和专注力,玩拼图游戏时,我们要仔细观察每一个图片,发现它与众不同的特点,同时拼图游戏可能是6x6的,甚至是更高的,这需要我们不能急于求成,让我们做事更加的耐心,还提高了我们的专注力,对青少年的发展有很大的益处。

2:项目总论

我们还处在学生时代,以我们的技术能力做一个简单的游戏APP还是可以的,又可以从网上进行学习不懂的地方,最重要的从可行性来讲是可行的,采用XX技术,主要的功能有系统拼图,相册拼图,拍照拼图三大方面,并且有难易程度之分,就像傻瓜相机一样,操作起来很简单,在闲暇之余人们可以玩玩小游戏,放松一下。

3:项目背景

随着智能手机,平板电脑等智能终端设备的兴起,人们的生活越来越加的方便,当然软件的需求必不可少,甚至很多的人都变成了手机控,同学、朋友在一

起时往往都是每个人低头玩手机,而手机游戏则是最受欢迎的,腾讯的主要收入现在就是游戏,20##年都高达400亿左右,手机游戏的占得比重很高,20##年底阿里巴巴以1.2亿美元购买Kabam10%的股份(Kabam,美国一游戏公司,主要进行多人在线游戏开发),网易、百度、搜狐等国内互联网巨头也纷纷进行手机游戏的开发,手机游戏的市场非常大,国内的市值规模达到几千亿,我们小组做这个手机游戏,也迎合了市场潮流,既学习到了一些Android开发的一些知识,也算得上对自身的一个锻炼。

4:项目需求

   我们考虑到现在Android开发是一个热门的行业,甚至社会上一些热门的影视剧开播后,就会有相应的APP诞生,例如最近热播的电视剧《武媚娘传奇》,在360手机助手上立即就有了手机游戏武媚娘传奇,可以说手机游戏开发又是Android开发中的重头戏,我们向自己身边的同学朋友询问了他们对手机游戏的看法,并且在问卷之星上做了一个问卷调查,最后得出了一个结论,手机游戏很受欢迎,需求量非常的大。

5:项目可行性

我们的项目可行性主要包括四个方面:

a:人力可行性。手机游戏成为一些国家新的经济增长点,例如芬兰,有150多家手机游戏公司,开发出了愤怒的小鸟、部落战争、心灵杀手等风靡世界的游戏,而他们的开发团队多者也不过数十人,少者往往只是几个人,只要团队配合好的话,又可以从网上借鉴一些Android开发的实例,人力可行性是没有问题的。

b:资金可行性。当前大学生就业面临很严重的形势,国家鼓励大学生创业,并给予一定的帮助,手机APP开发是大学生创业的重点,就如我们东北大学上届的学长做的飞送,大学生做APP最主要的原因就是本身并没有很多的收入 ,而手机APP的开发不需要特别多的资金,一台PC机就可以,需要的不是大量的资金,

需要的是时间和精力。

c:技术可行性。正是由于Android的开发比较热门,因此网上的教程特别的多,在我们的开发过程中遇到不懂得地方,主要的解决方法就是上网查询,并且我们项目小组的同学在老师的实验室待过,而且Android开发过程中主要应用到了java知识,而我们大二的时候已经学过了Java,有一定的基础,用Java做过一些实验,技术问题可以解决。

d:市场可行性。我们做这个游戏,主要是为了完成老师课堂上的作业,同时也是为了学习一些Android开发过程中的知识,并且我们做的只是一个初品,对市场的可行性取决于我们以后的完善和改进程度。

  

二、概要设计

我们设计过程中的的开发流程:功能实现—>页面布局—>图标设计

1:实现的功能。

                                       动漫拼图

                  系统拼图   风景拼图

                     人物拼图

功能          相册拼图(获取手机本地SD卡图库和文件中的图片)

                                        拍摄照片

         相机拼图

                                         开始拼图

a:系统拼图。它包括三种类别的拼图:动漫拼图、风景拼图、人物拼图,这三种类别拼图的图片是手机APP自带的,用户打开APP后,点击图片直接就可以进行游戏,当然这也是大多数拼图游戏的特点,可直接操作。

b:相册拼图。我们的相册拼图是手机APP自动获取手机本地SD卡中的图片,它可以从你的图库或文件中选取,随机的把这些图片进行分割,分成几个小的模块,进行游戏。

c:相机拼图。当你打开APP后,你会进入布局好的页面,点击相机拼图,你必须先用自己的手机拍摄照片,然后在点击开始拼图,你会发现要拼的图片就是你自己刚刚拍摄好的图片,真正实现了你想拼什么就拼什么,只要你能找得到它的照片。

2:主页面布局

                

3:图标设计

                         

   我们APP的图标就是一个拼图的形状,这样设计主要是简单明了,玩家看到这个图标直接据知道了这款APP是干什么的。

这款拼图游戏的特点:动画效果、拼图方式、难易程度

a:动画效果。当你在进行游戏时,点住图片,该图片会立即显示出酒红色的背景。

b:拼图方式。大多数的拼图游戏都是按左右上下的方式来移动的,或者留出一个空格,而我们这款游戏则是360度,任何两个图片都可以直接交换位置,方式与众不同。

c:难易程度。我们的拼图游戏是从3x3开始的,可以一直向NxN发展,但是鉴于分辨程度,我们的游戏难度直到7x7,并且我们的游戏是成功过了3x3这一关后,下一关的图片仍然不变,只是分割的块数增加了,而有的游戏则是每一关的图片都不同,当然成本也就增加了。

三、详细设计

1:详细的类图:

        

2:主要技术:

a:调用系统相机并使用所拍照片拼图:

    Intent intent2 = new Intent(PhotoActivity.this, CamActivity.class);

    StartActivity(intent2);

    Bundle bundle = data.getExtras();

    Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式

           

            PictureURL p1 = PictureURL.getP();

            p1.setBitmap(bitmap);

b:获取手机本地图片进行拼图:

                Intent intent = new Intent();

                /* 开启Pictures画面Type设定为image */

                intent.setType("image/*");

                /* 使用Intent.ACTION_GET_CONTENT这个Action */

                intent.setAction(Intent.ACTION_GET_CONTENT);

                startActivityForResult(intent, 0);

   

                   Uri uri = data.getData();

                    Log.e("uri", uri.toString());

                    ContentResolver cr = this.getContentResolver();

                    try {

                        Bitmap bitmap01 = BitmapFactory.decodeStream(cr

                                .openInputStream(uri));

                        /* 将Bitmap设定到ImageView */

                        // imageView.setImageBitmap(bitmap01);

                        Intent intent = new Intent(MainActivity.this,

                                ChoImagActivity.class);

                        startActivity(intent);

                        PictureURL p = PictureURL.getP();

                        p.setBitmap(bitmap01);

c:切割图片:

   for (int i = 0; i < piece; i++)

        {

            for (int j = 0; j < piece; j++)

            {

                ImagePiece imagePiece = new ImagePiece();

                imagePiece.index = j + i * piece;

               

                Log.e("TAG", "imagePiece.index" + (j + i * piece));

               

                int xValue = j * pieceWidth;

                int yValue = i * pieceWidth;

               

                imagePiece.bitmap = Bitmap.createBitmap(bitmap, xValue, yValue,

                        pieceWidth, pieceWidth);

                pieces.add(imagePiece);

            }

        }

d:交换被点击的两个小图块的位置:

     privatevoid exchangeView()

        {

                    mFirst.setColorFilter(null);

            String firstTag = (String) mFirst.getTag();

            String secondTag = (String) mSecond.getTag();

                                                     

            //得到在list中索引位置

            String[] firstImageIndex = firstTag.split("_");

            String[] secondImageIndex = secondTag.split("_");

                                                    

            mFirst.setImageBitmap(mItemBitmaps.get(Integer

                    .parseInt(secondImageIndex[0])).bitmap);

            mSecond.setImageBitmap(mItemBitmaps.get(Integer

                    .parseInt(firstImageIndex[0])).bitmap);

            mFirst.setTag(secondTag);

            mSecond.setTag(firstTag);

                                                    

                                                                               mFirst = mSecond = null;                                                                      

            checkSuccess();

        }

e:使用单例模式,声明单例类从外部获取onActivityResult()方法的变量的值:

       publicclass PictureURL {

     Bitmap bitmap=null;

     

     String pathString = null;

        public Bitmap getBitmap() {

            return bitmap;

        }

        publicvoid setBitmap(Bitmap bitmap) {

            this.bitmap = bitmap;

        }

        private PictureURL(){

           

        }

        privatestatic PictureURL p=null;

        publicstatic PictureURL getP(){

            if(p==null){

                p=new PictureURL();

            }

            returnp;

        }         

}

四、数据设计

   我们的拼图游戏是面向任何人的,不存在登陆注册等功能,我们的数据主要就是图片,这些图片又分为三类,APP自带的,从手机本地SD卡获取的,手机拍摄的照片,当然后两者的存储地方都一样。

1:APP自带的图片数据。由于我们做的只是一个初品,设置APP自带的图片数据并不是很多,因此这些图片放在Android的资源文件夹(res)当中。

2:从手机本地SD卡获取的图片数据。声明一个单例类,把它作为一个存储图片路径的中转站,先把图片的信息传给单例类,然后单例类把这个图片的信息传给负责分割图片的那个类。

五、界面设计

我们页面,这里主要介绍其中的四个:

1:APP主界面:

                     

我们的APP与手机界面大小适应,主要的功能非常的清楚明了,点击相应的图片就是相应的功能,并且退出游戏的button在右下角,也符合人们的操作习惯,使用起来简单。

2:游戏界面:

            

这是我们的游戏界面,左上角是可以选择的关数,玩家可以根据自己喜欢难易的程度来选择,右上角是完整图片的缩小版,玩家实在过不了关,可以参照这样容易过关,上面两个图片分别是不同的关数,玩家过玩第一关,接下来的就依次是4x4直到7x7,难度逐渐的增大。

              

  

3:相机拼图拍照界面:

                  

这是我们的相机拼图,有一个背景图片,左下角,右下角依次拍摄照片,开始拼图,当点击button拍摄照片时,会调用手机的相机功能进行拍照,之后点击开始拼图,就会出现已经分割好的你刚拍摄的照片,玩家就可以游戏,这也是我们与其他拼图游戏的不同之处。

六、其他

1:遇到的问题及解决方案:

a:不懂得把从APP自带的,手机本地SD卡以及拍摄获取的图片信息传给负责分割图片的那个类?

   解决的方案:声明一个单例类,把它作为一个存储图片路径的中转站,先把图片的信息传给单例类,然后单例类把这个图片的信息传给负责分割图片的那个类。

b:我们想直接点击关卡,例如点击第七关,就可以直接把这关的图片分割成相应的7x7,这个功能实现了点击关卡的跳转,但图片并没有按相应的关卡分割成相应的块数。而不选取关卡,直接完成3x3,就可以玩下一关,图片却分割成了相应的块数。这个功能我们还没有找到解决的方案,有待改进。

2:据我们而言,觉得我们游戏还有以下几个不足之处:

a:界面不和谐,布局不是很合理,页面的图片按钮与手机屏幕的各个边缘的距离不好看。

b:手机APP自身所带的图片过少,同一个图片玩过几次很可能玩腻,而如果APP自身带大量的图片,这些图片的存放我们不知道要如何处理。

c:比较单调,在我们玩拼图游戏的时候,没有背景音乐。

d:最大的问题就是无法保存当前游戏的进度,每晚一次都要从新开始,操作麻烦。

当然或许我们的拼图游戏还有其他各种各样的毛病,这些毛病也就是我们以后要改进完善的。

3:总结:做完这个游戏我们才发现,Android的开发并不像我们想象的那么简单,一个简单的APP可能很容易就做出来了,但是不一定受欢迎,从页面布局,详细功能,甚至一些很小的细节,button的大小形状,甚至APP的图标名称都要深思熟虑,就如一个斗地主游戏,既要分各种各样的关卡,还要能让很多人同时在线对局,甚至个人中心,保存游戏进度,背景音乐......各种细节做起来很复杂。我们只有通过不断地进行Android APP的开发才可以锻炼自己的技术,学习到更多的知识。多动脑,勤动手,善于借助外部的力量,多实践,积累大量的开发经验对我们很重要。