Android大作业报告.docx
- 文档编号:11096097
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:21
- 大小:396.21KB
Android大作业报告.docx
《Android大作业报告.docx》由会员分享,可在线阅读,更多相关《Android大作业报告.docx(21页珍藏版)》请在冰豆网上搜索。
Android大作业报告
移动设备软件应用与开发
大作业报告
姓名:
学号:
班级:
院系:
日期:
任课教师:
一、程序的运行环境、安装步骤
1、运行环境
游戏运行环境:
Android1.5以上版本
2、程序的组成部份:
2.1、JDK安装
1.我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量:
2.JAVA_HOME值为:
D:
\ProgramFiles\Java\jdk1.6.0_18(你安装JDK的目录)
3.CLASSPATH值为:
.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\bin;
4.Path:
在开始追加%JAVA_HOME%\bin;
5.NOTE:
前面四步设置环境变量对搭建Android开发环境不是必须的,可以跳过。
安装完成之后,可以在检查JDK是否安装成功。
打开cmd窗口,输入java–version查看JDK的版本信息。
出现类似下面的画面表示安装成功了:
2.2、Eclipse安装
2.3、AndroidSDK安装
在AndroidDevelopers下载android-sdk_r05-windows.zip,下载完成后解压到任意路径。
运行SDKSetup.exe,点击AvailablePackages。
如果没有出现可安装的包,请点击Settings,选中Misc中的"Forcehttps:
//..."这项,再点击AvailablePackages。
选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、AcceptAll、InstallAccepted,开始下载安装所选包
在用户变量中新建PATH值为:
AndroidSDK中的tools绝对路径(本机为D:
\AndroidDevelop\android-sdk-windows\tools)。
image图2、设置AndroidSDK的环境变量
“确定”后,重新启动计算机。
重启计算机以后,进入cmd命令窗口,检查SDK是不是安装成功。
运行android–h如果有类似以下的输出,表明安装成功:
图3、验证AndroidSDK是否安装成功
2.4、ADT安装
打开EclipseIDE,进入菜单中的"Help"->"InstallNewSoftware"
点击Add...按钮,弹出对话框要求输入Name和Location:
Name自己随便取,Location输入dl-ssl.google./android/eclipse。
如下图所示:
确定返回后,在workwith后的下拉列表中选择我们刚才添加的ADT,我们会看到下面出有DeveloperTools,展开它会有AndroidDDMS和AndroidDevelopmentTool,勾选他们。
如下图所示:
然后就是按提示一步一步next。
完成之后:
选择Window>Preferences...
在左边的面板选择Android,然后在右侧点击Browse...并选中SDK路径,本机为:
D:
\AndroidDevelop\android-sdk-windows点击Apply、OK。
配置完成。
2.5、创建AVD
为使Android应用程序可以在模拟器上运行,必须创建AVD。
1、在Eclipse中。
选择Windows>AndroidSDKandAVDManager
2、点击左侧面板的VirtualDevices,再右侧点击New
3、填入Name,选择Target的API,SDCard大小任意,Skin随便选,Hardware目前保持默认值
4、点击CreateAVD即可完成创建AVD
注意:
如果你点击左侧面板的VirtualDevices,再右侧点击New,而target下拉列表没有可选项时,这时候你:
点击左侧面板的AvailablePackages,在右侧勾选https:
//dl-ssl.google./android/repository/repository.xml,如下图所示:
然后点击InstallSelected按钮,接下来就是按提示做就行了
要做这两步,原因是在1.3、AndroidSDK安装中没有安装一些必要的可用包(AvailablePackages)。
2.5、创建Android工程
三、程序开发平台
(1)代码行数:
1000
(2)开发环境:
AndroidDeveloperToolsBuild:
v22.6.2-1085508
apache-ant-1.9.3
四、程序功能说明:
单机屏幕按住不放可以拖动魔方转动,魔方上下左右空白处可以转动魔方相对那一面。
五、应用核心源码
classMFtestSurfaceViewextendsGLSurfaceView{
privateMFtestRenderermRenderer;
privatefloatmPreviousX;
privatefloatmPreviousY;//上一次的点
privatefloatmDownPreviousX;
privatefloatmDownPreviousY;//上一次的Down点
//privateintoldDownX;
//privateint
privatefloattheta;
privatefloatfai;//球坐标
publicMFtestSurfaceView(Contextcontext){
super(context);
theta=(float)3.14159/4;
fai=(float)3.14159/4;
//SettheRendererfordrawingontheGLSurfaceView
mRenderer=newMFtestRenderer();
setRenderer(mRenderer);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
}
Override
publicbooleanonTouchEvent(MotionEvente){
//MotionEventreportsinputdetailsfromthetouchscreen
//andotherinputcontrols.Inthiscase,youareonly
//interestedineventswherethetouchpositionchanged.
floatx=e.getX();
floaty=e.getY();
switch(e.getAction()){
caseMotionEvent.ACTION_MOVE:
//如果是移动的话
floatdx=x-mPreviousX;
floatdy=y-mPreviousY;//x,y的变换值(不是0,就是1)
floatte=theta;
theta=theta+dy/100;//角度是弧度值
if(!
(theta>0&&theta<3.14159))
{
theta=te;//法线始终向上
}
fai=fai+dx/100;//x=rsinθcosφ
mRenderer.eyez=(float)(3*Math.sin(theta)*Math.cos(fai));//y=rsinθsinφ
mRenderer.eyex=(float)(3*Math.sin(theta)*Math.sin(fai));////z=rcosθ利用球坐标使观察点始终维持在半径为3的球上
mRenderer.eyey=(float)(3*Math.cos(theta));
requestRender();
//System.out.println(x+""+y);
break;
caseMotionEvent.ACTION_DOWN:
mDownPreviousX=x;
mDownPreviousY=y;
break;
caseMotionEvent.ACTION_UP:
if((((x-mDownPreviousX)>-5)&&((x-mDownPreviousX)<5))&&(((y-mDownPreviousY)>-5)&&((y-mDownPreviousY)<5)))//(((x-mDownPreviousX)>-3)||((x-mDownPreviousX)>-3))&&(((y-mDownPreviousY)>-3)||((y-mDownPreviousY)>-3))
{
//System.out.println(x-mDownPreviousX);
if(x<(mRenderer.width*(1-Math.sqrt(18)/6)/2))
{
//左
//System.out.println(x+"左"+y);
mRenderer.action=1;
DrawAnimation();
}
elseif(x>mRenderer.width-(mRenderer.width*(1-Math.sqrt(18)/6)/2))
{
//右
//System.out.println(x+"右"+y);
mRenderer.action=2;
DrawAnimation();
}
elseif(y //上 //System.out.println(x+"上"+y); mRenderer.action=3; DrawAnimation(); } elseif(y>mRenderer.height/2.0+(1.5*mRenderer.width)/6){ //下 //System.out.println(x+"下"+y); mRenderer.action=4; DrawAnimation(); } else{ mRenderer.action=0; } } break; } mPreviousX=x; mPreviousY=y;//保存这次点 returntrue; } privatevoidDrawAnimation(){ ChangeMoveByAction();//确定是哪个面旋转 mRenderer.angle=0; while(mRenderer.angle<85){//绘制旋转效果 mRenderer.angle=mRenderer.angle+5; try{ Thread.sleep(40); } catch(InterruptedExceptione){ } requestRender(); }//绘制旋转效果 mRenderer.angle=0; mRenderer.action=0; DrawColorChange();//改变颜色 requestRender(); } privatevoidDrawColorChange(){ switch(mRenderer.move) { case70: LeftShift(0*27+0*3,0*27+6*3,0*27+8*3,0*27+2*3); LeftShift(0*27+1*3,0*27+3*3,0*27+7*3,0*27+5*3); LeftShift(1*27+6*3,5*27+8*3,4*27+2*3,2*27+0*3); LeftShift(1*27+7*3,5*27+5*3,4*27+1*3,2*27+3*3); LeftShift(1*27+8*3,5*27+2*3,4*27+0*3,2*27+6*3); break; case66: LeftShift(3*27+0*3,3*27+6*3,3*27+8*3,3*27+2*3); LeftShift(3*27+1*3,3*27+3*3,3*27+7*3,3*27+5*3); LeftShift(1*27+0*3,2*27+2*3,4*27+8*3,5*27+6*3); LeftShift(1*27+1*3,2*27+5*3,4*27+7*3,5*27+3*3); LeftShift(1*27+2*3,2*27+8*3,4*27+6*3,5*27+0*3); break; case85: LeftShift(1*27+0*3,1*27+6*3,1*27+8*3,1*27+2*3);////////// LeftShift(1*27+1*3,1*27+3*3,1*27+7*3,1*27+5*3); LeftShift(0*27+0*3,2*27+0*3,3*27+0*3,5*27+0*3); LeftShift(0*27+1*3,2*27+1*3,3*27+1*3,5*27+1*3); LeftShift(0*27+2*3,2*27+2*3,3*27+2*3,5*27+2*3); break; case68: LeftShift(4*27+0*3,4*27+2*3,4*27+8*3,4*27+6*3); LeftShift(4*27+1*3,4*27+5*3,4*27+7*3,4*27+3*3); LeftShift(0*27+6*3,2*27+6*3,3*27+6*3,5*27+6*3); LeftShift(0*27+7*3,2*27+7*3,3*27+7*3,5*27+7*3); LeftShift(0*27+8*3,2*27+8*3,3*27+8*3,5*27+8*3); break; case82: LeftShift(2*27+0*3,2*27+6*3,2*27+8*3,2*27+2*3); LeftShift(2*27+1*3,2*27+3*3,2*27+7*3,2*27+5*3); LeftShift(1*27+2*3,0*27+2*3,4*27+2*3,3*27+6*3); LeftShift(1*27+5*3,0*27+5*3,4*27+5*3,3*27+3*3); LeftShift(1*27+8*3,0*27+8*3,4*27+8*3,3*27+0*3); break; case76: LeftShift(5*27+0*3,5*27+6*3,5*27+8*3,5*27+2*3); LeftShift(5*27+1*3,5*27+3*3,5*27+7*3,5*27+5*3); LeftShift(1*27+0*3,3*27+8*3,4*27+0*3,0*27+0*3); LeftShift(1*27+3*3,3*27+5*3,4*27+3*3,0*27+3*3); LeftShift(1*27+6*3,3*27+2*3,4*27+6*3,0*27+6*3); break; default: break; } } privatevoidChangeMoveByAction(){ //F70B66U85D68R82L76(这个注释恐怕只有我能看懂--! ) switch(mRenderer.action){ case1: if((mRenderer.eyex>0)&&(mRenderer.eyez>0)){ mRenderer.move=76; } elseif((mRenderer.eyex>0)&&(mRenderer.eyez<0)){ mRenderer.move=70; } elseif((mRenderer.eyex<0)&&(mRenderer.eyez<0)){ mRenderer.move=82; } elseif((mRenderer.eyex<0)&&(mRenderer.eyez>0)){ mRenderer.move=66; } break; case2: if((mRenderer.eyex>0)&&(mRenderer.eyez>0)){ mRenderer.move=66; } elseif((mRenderer.eyex>0)&&(mRenderer.eyez<0)){ mRenderer.move=76; } elseif((mRenderer.eyex<0)&&(mRenderer.eyez<0)){ mRenderer.move=70; } elseif((mRenderer.eyex<0)&&(mRenderer.eyez>0)){ mRenderer.move=82; } break; case3: mRenderer.move=85; break; case4: mRenderer.move=68; break; } } privatevoidmemcpy(intone,inttwo){ mRenderer.face_color[one]=mRenderer.face_color[two]; mRenderer.face_color[one+1]=mRenderer.face_color[two+1]; mRenderer.face_color[one+2]=mRenderer.face_color[two+2]; } privatevoidLeftShift(inta,intb,intc,intd){ //a floattemp1=mRenderer.face_color[a]; floattemp2=mRenderer.face_color[a+1]; floattemp3=mRenderer.face_color[a+2]; memcpy(a,b); memcpy(b,c); memcpy(c,d); mRenderer.face_color[d]=temp1; mRenderer.face_color[d+1]=temp2; mRenderer.face_color[d+2]=temp3; } } privatevoidDrawRotation(GL10gl){ //绘制小立方体 switch(move) { case70: DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl); DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl); DrawCube8(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl); DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl); gl.glPushMatrix(); gl.glRotatef(-angle,0.0f,0.0f,1.0f); DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl); DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);DrawCube23(gl); gl.glPopMatrix(); break; case66: DrawCube0(gl);DrawCube9(gl);DrawCube17(gl);DrawCube3(gl); DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl); DrawCube23(gl);DrawCube18(gl);DrawCube10(gl);DrawCube1(gl); DrawCube21(gl);DrawCube4(gl);DrawCube24(gl);DrawCube15(gl);DrawCube7(gl); gl.glPushMatrix(); gl.glRotatef(angle,0.0f,0.0f,1.0f); DrawCube19(gl);DrawCube11(gl);DrawCube2(gl);DrawCube22(gl); DrawCube13(gl);DrawCube5(gl);DrawCube25(gl);DrawCube16(gl);DrawCube8(gl); gl.glPopMatrix(); brea
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 作业 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)