您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 资本运营 > 手机编程与手机游戏设计_第6讲游戏编程和网络操作
第6讲简单应用编程计算中心张曙光主讲介绍:张曙光武汉大学计算中心电话:18986213082Email: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.0ceil(-0.0)=-0.0ceil((anythinginrange(-1,0))=-0.0ceil(+infinity)=+infinityceil(-infinity)=-infinityceil(NaN)=NaNParametersdthevaluewhoseclosestintegervaluehastobecomputed.Returnstheceilingoftheargument.6.3表格类游戏”捏泡泡”设计Math类(docs)ClassMathprovidesbasicmathconstantsandoperationssuchastrigonometricfunctions,hyperbolicfunctions,exponential,logarithms,etc.其中:publicstaticdoublerandom()Returnsapseudo-randomnumberbetween0.0(inclusive)and1.0(exclusive).Returnsapseudo-randomnumber.6.3表格类游戏”捏泡泡”设计2.2泡泡的触摸事件处理给布局TableLayout的每个单元格注册触摸监听器,首先编写触摸事件的监听器,然后每个单元格上的ImageView控件注册触摸事件的监听器.(代码见后页)6.3表格类游戏”捏泡泡”设计2.2泡泡的触摸事件处理触摸监事件听器编写importandroid.view.View.OnTouchListener;importandroid.view.MotionEvent;//解释一下OnTouchListene
本文标题:手机编程与手机游戏设计_第6讲游戏编程和网络操作
链接地址:https://www.777doc.com/doc-4961701 .html