手机编程与手机游戏设计_第6讲游戏编程和网络操作

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第6讲简单应用编程计算中心张曙光主讲介绍:„张曙光„武汉大学计算中心„电话:18986213082„Email:18986213082@126.com„公邮:whuandroid@126.com2011年10月11日星期二本讲学习目标„各种布局的设计(主要是表格布局的设计过程)„用户和界面的交互代码„简单游戏的设计和编程„了解网络操作(http)„了解Android应用真机调试的方法6.1简单游戏设计„前面介绍了界面控件和事件处理的知识„在上述基础上,本讲先介绍表格类的游戏,这类游戏的特点是游戏元素可以按照表格布置6.2表格类游戏设计„表格类游戏的特点是游戏元素可以按照表格布置„早期的表格类游戏代表作是”Bejeweled”6.2表格类游戏设计„“Bejeweled”是PopCap公司第一个游戏,大约在1998年„JohnVechey是PopCap创始人之一,也是PurdueUniversity的一个辍学的学生(学习不好),“Bejeweled”来自JohnVechey的创意„BrianFiete是JohnVechey选修电脑课时的同学,那门课考试的第一名,是“Bejeweled”程序设计„上网聊天时认识了JasonKapalka,JasonKapalka找来了许多的钻石图案„三个人大约花了4天完成了这个游戏的第一版.„这三个人成立了PopCap公司6.2表格类游戏设计„“2001年,”Bejeweled”上线销售的第一个月,“Bejeweled”赚到了35000美元,第二个月40000美元。JohnVechey知道,这种状况不会持续很久,不过这些钱已经足够了。John,Brian和Jason拿着钱去阿根廷度假了,他们在那里天天喝酒,一连过了4个月。直到Yahoo聘请他们开发新游戏时,才重新回到美国。„著名游戏“植物大战僵尸”,也是PopCap软件公司的作品6.2表格类游戏设计„后面N种连连看,其创意应该来自”Bejeweled”6.2表格类游戏设计„数独游戏也可以看为表格游戏,这个游戏风靡美国,日本(sudoku)。是一款训练头脑的游戏。6.2表格类游戏设计„数独也叫九宫格数独,一位前任法官(Waynegould)1997年到日本旅游时无意中发现了它,他花了6年时间编写了这个游戏代码,放到网上,从此风靡全球。6.3表格类游戏”捏泡泡”设计„本讲为一个完整的简单的游戏设计,但包含了游戏设计的大部分内容„游戏的内容就是”捏泡泡”6.3表格类游戏”捏泡泡”设计„1.1游戏创意设计„”捏泡泡”游戏号称史上最无聊的游戏,目的就是让你想起那些被塞在纸箱子里,给电子产品防震,又不幸被你一个一个捏爆的玩意儿。„现在它有了电子版,操作鼠标把上面的泡泡一个一个点爆,游戏就结束了……„我们主要注意游戏设计的过程6.3表格类游戏”捏泡泡”设计„”捏泡泡”的界面,右图有菜单6.3表格类游戏”捏泡泡”设计„1.2,界面设计,主界面为一个Activity新建工程,取名Bubble,工程要包括Activity6.3表格类游戏”捏泡泡”设计„1.3,布局设计,表格布局新建表格布局文件stage.xml?xmlversion=1.0encoding=utf-8?TableLayoutxmlns:android=:layout_height=fill_parentandroid:layout_width=fill_parentandroid:id=@+id/container2android:clipChildren=trueandroid:background=@drawable/bg/TableLayout6.3表格类游戏”捏泡泡”设计„1.4,美工设计„这个属于多媒体课程内容。„背景图设计,取名bg.gif„每个单元格上绘制有”泡泡”图片,图片设计,每个单元格的图片包括泡泡的初始状态,爆炸态图片。6.3表格类游戏”捏泡泡”设计„最左边的图是”泡泡”图片的初始状态,每个单元格的都一样„为了逼真效果,”泡泡”捏破后的状态应该不一样,其它图表示的”泡泡”捏破后的状态,这个在代码编写时要考虑„这些图和bg.gif等都放在res/drawable文件夹中6.3表格类游戏”捏泡泡”设计„1.5,游戏音乐设计„当泡泡被捏破时,有声音产生.要设计声音效果文件„声音效果文件的制作也是多媒体课程的问题6.3表格类游戏”捏泡泡”设计„android支持的声音文件类型包括.mp3sound1.mp3sound2.mp3sound3.mp3sound4.mp3sound5.mp3多个声音文件也是考虑不同的声音效果„在工程的res文件夹下新建一个文件夹raw,用于保存声音效果文件6.3表格类游戏”捏泡泡”设计„2.1代码设计,用代码做布局设计„布局内容和前面的可视化的布局内容是一样的.即先有TabLayout,然后把多个TableRow按行的形式作为TabLayout的子元素.最后在每个TableRow中加上同样多的子元素ImageView.„上面是布局的过程,具体的写代码会复杂一点.„这一点和前面不一样,前面使用可视化工具,用xml文件描述布局6.3表格类游戏”捏泡泡”设计„首先考虑泡泡的行列数privateintcolumnCount=7;privateintrowCount=9;„用代码把常态下的泡泡贴在TabLayout的单元格中用setContentView(R.layout.stage);显示布局注意:这时不用main.xml了6.3表格类游戏”捏泡泡”设计„2.1要引用类TableLayout对布局TabLayout操作(每一类布局都有对应的类操作,类似Button等界面控件的操作)„使用TableLayout的addView成员函数Addsachildview.(可以查docs)„把TableRow类的对象作为一个加到TableLayout中TableRowAlayoutthatarrangesitschildrenhorizontally.6.3表格类游戏”捏泡泡”设计„2.1初始化Layout的rowCount行importandroid.widget.TableLayout;importandroid.widget.TableRow;privateTableRow[]rows=newTableRow[rowCount];/**写一个函数initRows()初始化Layout的rowCount行*/privatevoidinitRows(){inti,l=rowCount;TableLayoutcontainer=(TableLayout)findViewById(R.id.container2);for(i=0;il;i++){rows[i]=newTableRow(this);container.addView(rows[i]);}}6.3表格类游戏”捏泡泡”设计„2.1图片操作对应的类是ImageView„查docs,6.3表格类游戏”捏泡泡”设计„2.1图片对应的类ImageView„给布局TabLayout的每个单元格画上初始的泡泡normal.gif,如果是一个ImageView,可以简单按以下方法做importandroid.widget.ImageView;publicImageViewrenderer;renderer=newImageView(this);renderer.setPadding(2,2,2,2);renderer.setImageResource(R.drawable.normal);这个过程把normal.gif关联到一个ImageView对象,要注意,多个单元格需要多个ImageView对象6.3表格类游戏”捏泡泡”设计„2.1给布局TabLayout的每个单元格画上初始的泡泡„因为TabLayout的每行是个TableRow类的对象,应该把columnCount=7个ImageViewrenderer加到每行的TableRow类的对象中6.3表格类游戏”捏泡泡”设计„2.1给布局TabLayout的每个单元格画上初始的泡泡„TableRow类继承于ViewGroup类的函数(查docs)addView(Viewchild,intwidth,intheight)AddsachildviewwiththisViewGroup'sdefaultlayoutparametersandthespecifiedwidthandheight.„TableRow和ViewGroup一样,可以带有多个孩子控件对象,所以addView可以把多个多个孩子控件对象加入到TableRow对象中6.3表格类游戏”捏泡泡”设计2.1把columnCount=7个ImageViewrenderer加到rowCount=9行的TableRow类的对象中的原理如下intcr,i,l=7*9;for(i=0;il;i++){cr=(int)Math.ceil(i/columnCount);rows[cr].addView(renderer[i],46,46);}这里renderer[i]表示多个ImageView对象cr=(int)Math.ceil(i/columnCount);这里是保证每个rows只有columnCount个子对象Math类描述见下页6.3表格类游戏”捏泡泡”设计Math类(查docs查,学习数学函数)ClassMathprovidesbasicmathconstantsandoperationssuchastrigonometricfunctions,hyperbolicfunctions,exponential,logarithms,etc.其中:publicstaticdoubleceil(doubled)„Returnsthedoubleconversionofthemostnegative(closesttonegativeinfinity)integervaluewhichisgreaterthantheargument.„Specialcases:„ceil(+0.0)=+0.0„ceil(-0.0)=-0.0„ceil((anythinginrange(-1,0))=-0.0„ceil(+infinity)=+infinity„ceil(-infinity)=-infinity„ceil(NaN)=NaN„Parameters„dthevaluewhoseclosestintegervaluehastobecomputed.Returns„theceilingoftheargument.6.3表格类游戏”捏泡泡”设计Math类(docs)ClassMathprovidesbasicmathconstantsandoperationssuchastrigonometricfunctions,hyperbolicfunctions,exponential,logarithms,etc.其中:publicstaticdoublerandom()„Returnsapseudo-randomnumberbetween0.0(inclusive)and1.0(exclusive).„Returns„apseudo-randomnumber.6.3表格类游戏”捏泡泡”设计„2.2泡泡的触摸事件处理„给布局TableLayout的每个单元格注册触摸监听器,首先编写触摸事件的监听器,然后每个单元格上的ImageView控件注册触摸事件的监听器.(代码见后页)6.3表格类游戏”捏泡泡”设计„2.2泡泡的触摸事件处理„触摸监事件听器编写importandroid.view.View.OnTouchListener;importandroid.view.MotionEvent;//解释一下OnTouchListene

1 / 65
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功