Android大作业报告.docx

上传人:b****5 文档编号:8161376 上传时间:2023-01-29 格式:DOCX 页数:19 大小:396.27KB
下载 相关 举报
Android大作业报告.docx_第1页
第1页 / 共19页
Android大作业报告.docx_第2页
第2页 / 共19页
Android大作业报告.docx_第3页
第3页 / 共19页
Android大作业报告.docx_第4页
第4页 / 共19页
Android大作业报告.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Android大作业报告.docx

《Android大作业报告.docx》由会员分享,可在线阅读,更多相关《Android大作业报告.docx(19页珍藏版)》请在冰豆网上搜索。

Android大作业报告.docx

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();

break;

case

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1