2023年Android大作业报告_第1页
2023年Android大作业报告_第2页
2023年Android大作业报告_第3页
2023年Android大作业报告_第4页
2023年Android大作业报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

移动设备软件应用与开

大作业报告

姓名:

学号:_________________________

班级:___________________________

院系:________________________

日期:_________________

任课教师:____________________________

一、程序的运营环境、安装环节

1、运营环境

游戏运营环境:Android1.5以上版本

2、程序的组成部份:

2.1、JDK安装

1.我的电脑->属性一>高级一,环境变量一〉系统变量中添加以下环境变量:

2.JAVA_HOME值为:D:\ProgramFiles\Java\jdk1.6.o_i8(你

安装JDK的目录)

3,CLASSPATH值为:.;%JAVA_HOME%\1ib\tools.jar;%JA

VA_H0ME%\1ib\dt.jar;%JAVA_HOME%\bin;

4.Path:在开始追加%JAVA_HOME%\bin;

5.NOTE:前面四步设立环境变量对搭建Android开发环境不是必须的,可

以跳过。

安装完毕之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java-version

查看JDK的版本信息。出现类似下面的画面表达安装成功了:

版权所有〈c〉2009MicrosoftCorporationo保留所有权利。

C:\JUsers\Adninistrator>jaua-uersion

jauauersion.7.0_45u

Jaua<TM>SERuntimeEnvironment<build1.7.0_45-bl8>

JauaHotSpot<TM>ClientUM<build24.45-b08„nixedmode,sharing)

C:\Users\Adninistrator>_

2.2、Eclipse安装

2.3、AndroidSDK安装

在AndroidDevelopers下载android-sdk_r05-windows.zip,下载

完毕后解压到任意途径。

运营SDKSetup.exe,点击Avai1ab1ePackages。假如没有出现可安装

的包,请点击Settings,选中Misc中的"Foreehttps:〃…"这项,再点击Ava

ilablePackages。

选择希望安装的SDK及其文档或者其它包,点击InstallationSelected、Ac

ceptAll、InstallAccepted,开始下载安装所选包

在用户变量中新建PATH值为:AndroidSDK中的tools绝对途径(本机为

D:\AndroidDevelop\android-sdk-windows\tools)。

image图2、设立AndroidSDK的环境变量

“拟定”后,重新启动计算机。重启计算机以后,进入emd命令窗口,检查SDK

是不是安装成功。

运营android-h假如有类似以下的输出,表白安装成功:

图3、验证AndroidSDK是否安装成功

2.4、ADT安装

打开EclipseIDE,进入菜单中的"He1p"->"InstallNewSo

ftware"

点击Add...按钮,弹出对话框规定输入Name和Location:Name自己随便

取,Location输入。如下图所示:

3AddSiteIfiOB

Name:ADTLocal...

Location:/android/eclipse)Archive...

拟定返回后,在workwith后的下拉列表中选择我们刚才添加的ADT,我们会

看到下面出有DeveloperToo1s,展开它会有AndroidDDMS和Android

DevelopmentTool,勾选他们。如下图所示:

3Install

AvailableSoftware

Checktheitemsthatyouwishtoinstall.

Workwith:adt-/android/eclipse▼[Add...

Findmoresoftwarebyworkingwiththe'AvailableSoftwareSites'preferences.

typefiltertext

NameVersion

,000DeveloperTools

aI“AndroidDDMS0.9.6.v201002051504-24846

✓3AndroidDevelopmentTool0.9.6.v201002051504-24846

然后就是按提醒一步一步next»

完毕之后:

选择Window>Preferenees...

在左边的面板选择Android,然后在右侧点击Browse…并选中SDK途径,

本机为:

D:\AndroidDevelop\android-sdk-windows点击Apply>OK。配置完

毕。

2.5、创建AVD

为使Android应用程序可以在模拟器上运营,必须创建AVD。

1、在Eclipse中。选择Windows>AndroidSDKandAVDManage

2、点击左侧面板的Virtua1Devices,再右侧点击New

3、填入Name,选择Target的API,SDCard大小任意,Skin随便选,Ha

rdware目前保持默认值

4、点击CreateAVD即可完毕创建AVD

注意:假如你点击左侧面板的VirtualDevices,再右侧点击New,而target下

拉列表没有可选项时,这时候你:

点击左侧面板的Avai1ablePackages,在右侧勾选,如下图所示:

QAndroidSDKandAVDManager

VirtualDevices

Sites,PackagesandArchives

InstalledPackages

AvailablePackages也■/android/repository/repository.xml

然后点击Instal1Selected按钮,接下来就是按提醒做就行了

要做这两步,因素是在1.3、AndroidSDK安装中没有安装一些必要的可用包

(Availab1ePackages)„

2.5、创建Android工程

三、程序开发平台

(1)代码行数:1000

(2)开发环境:AndroidDeveloperToolsBuild:v22.6.2

-1085508

apache-ant-1.9.3

0

0

73DrawCube22(gl);

74Drav*Cube23(gl);

75DrawCube24(gl);

76DrawCube25(gl);

77gl.glTranslatef(0J0J0);//=26-^.3-=

78)

四、程序功能说明:

笛通法号沛沛图•I3K/S令.MO2出

笛电法号涉涉国■HK/s等“402出

单机屏幕按住不放可以拖动魔方转动,魔方上下左右空白处可以转动魔方相对那

一面。

五、应用核心源码

c1assMFtestSurfaceViewextendsGLSurfaceView{

privateMFtestRendererinRenderer;

privatefloatmPreviousX;

。privatefloatmPreviousY;〃上一次的点

oprivatefloatmDownPreviousX;

privatefloatmDownPreviousY;〃上一次的Down点

0

。//privateintoldDownX;

。//privateint

privatefloattheta;

。privatefloatfai;〃球坐标

publicMFtestSurfaceView(Contextcontext){

super(context);

theta=(float)3.14159/4;

fai=(float)3.14159/4;

//Se11heRendererfordrawingontheGLSurfaceView

mRenderer=newMFtestRenderer();

setRenderer(mRenderer);

setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DI

RTY);

)

@0verride

publicbooleanonTouchEvent(MotionEvente){

//MotionEventreportsinputdetai1sfromthetouchscreen

//andotherinputcontrols.Inthiscase,youareonly

//interestedineventswherethetouchpositionchanged.

floatx=e.getX();

f1oaty=e.getY();

switch(e.getAction()){

caseMotionEvent.ACTION_MOVE://假如是移动的话

floatdx=x-mPreviousX;

floatdy=y—mPreviousY;//x,y的变换值(不是0,就

是1)

floatte=theta;

4heta=theta+dy/100?//角度是弧度值

oif(!(theta>0&&theta<3.14159))

(

theta=te;。。//法线始终向上

。}

®fai=fai+dx/100;

//x=rsin0cos(p

mRenderer.eyez=(float)(3*Math.sin(theta)*Math.co

s(fai));//y=rsin0sin(p

mRenderer.eyex=(f1oat)(3"Math.sin(theta)*Math.

sin(fai));////z=rcos0运用球坐标使观测点始终维持在半径为3的球上

mRenderer.eyey=(float)(3*Math.cos(theta));

requestRender();

//System.out.print1n(x+""4-y);

break;

caseMotionEvent.ACTION_DOWN:

mDownPreviousX=x;

mDownPreviousY=y;

break;

caseMotionEvent.ACTION_UP:

oif((((x-inDownPreviousX)>-5)&&((x-mDownPrevi

ousX)<5))&&(((y-mDownPreviousY)>—5)&&((y-mDownPreviousY)<5)))//(((x

一mDownPreviousX)>-3)||((x-mDownPreviousX)>-3))&&(((y—mDownPrevious

Y)>—3)I|((y-mDownPreviousY)>-3))

//System.out.println(x—mDownPreviousX);

oif(x<(mRenderer.width*(1—Math.sqrt(1

8)/6)/2))

(

8〃左

。//System.out.println(x+"左"+y);

。omRenderer.action=1;

sDrawAnimation();

。}

eIseif(x>mRenderer.width-(mRender

er.width*(1-Math.sqrt(18)/6)/2))

8//右

g//System.out,prin11n(x+H右"+y);

amRenderer.action=2;

oDrawAnimation();

)

e1seif(y<mRenderer.height/2.0-(1.5*mR

enderer.width)/6){

8//上

。//System.out.print1n(x+H上M+y);

“mRenderedaction=3;

DrawAnimation();

}

oelseif(y>mRenderer.height/2.0+(1.5*mRend

erer.width)/6){

o//下

“/System.out.println(x+H下"+y);

omRenderer.action=4;

gDrawAnimation();

00I

®else{

o<>mRenderer.action=0;

0)

abreak;

mPreviousX=x;

mPreviousY=y;//保存这次点

returntrue;

)

privatevoidDrawAnimation(){

<hangeMoveByAction();//拟定是哪个面旋转

omRenderer.angle=0;

<>while(mRenderer.angle<85){〃绘制旋转效果

8mRenderer.angle=mRenderer.angle+5;

6try(

«Thread.sleep(40);

33}

catch(InterruptedExceptione){

bb}

orequestRender();

}//绘制旋转效果

omRenderer.angle=O;

mRenderer.action=0:

DrawColorChange();〃改变颜色

orequestRender();

oprivatevoidDrawColorChange(){

oswitch(mRenderer.move)

。case70:

oLeftShift(0*27+0*3,0*27+6*3,0*27+8*3,0*27+2*3);

oLeftShift(0*27+1*3,0*27+3*3,0*27+7*3,0*27+5*3);

o

。LeftShift(1*27+6*3,5*27+8*3,4*27+2*3,2*27+0*3);

•oLeftShift(1*27+7*3,5*27+5*3,4*27+1*3,2*27+3*3);

eLeftShift(l*27+8*3,5*27+2*3,4*27+0*3,2*27+6*3);

obreak;

®case66:

oLeftShift(3*27+0*3,3*27+6*3,3*27+8*3,3*27+2*3);

oooLeftShift(3*27+1*3,3*27+3*3,3*27+7*3,3*27+5*3);

bb

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

。oLeftShift(1*27+2*3,2*27+8*3,4*27+6*3,5*27+0*3);

gobreak;

case85:

。leftShift(1*27+0*3,1*27+6*3,1*27+8*3,1*27+2*3);//IIIIII//

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

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

gLeftShift(4*27+1*3,4*27+5*3,4*27+7*3,4*27+3*3);

000

。oLeftShift(0*27+6*3,2*27+6*3,3*27+6*3,5*27+6*3);

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

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

8LeftShift(1*27+8*3,0*27+8*3,4*27+8*3,3*27+0*3);

gbreak;

ecase76:

oLeftShift(5*27+0*3,5*27+6*3,5*27+8*3,5*27+2*3);

。oLeftShift(5*27+l*3,5*27+3*3,5*27+7*3,5*27+5*3);

o

beLeftShift(1*27+0*3,3*27+8*3,4*27+0*3,0*27+0*3);

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

gbreak;

。defauIt:

®break;

privatevoidChangeMoveByAction(){

。。//F7OB66U85oD68R82L76(这个注释恐怕只

有我能看懂--!)

。switch(mRenderer.action){

gcase1:

。if((mRenderer.eyex>0)&&(mRenderer.eyez>0)){

。mRenderer.move=76;

6)

gelseif((mRenderer.eyex>0)&&(mRenderer.eyez<0))

(

samRenderer.move=70;

)

60eIseif((mRenderer.eyex<0)&&(mRenderer,eyez<0)){

oooomRenderer.move=82;

)

。eelseif((mRenderer.eyex<0)&&(mRenderer.eyez>0)){

®mRenderer.move=66;

oe}

break;

。case2:

if((mRenderer.eyex>0)&&(mRenderer.eyez>0))

mRenderer.move=66;

og}

g°elseif((mRenderer.eyex>0)&&(mRenderer.eyez<0)){

。wnRenderer.move=76;

°}

。eIseif((mRenderer.eyex<0)&&(mRenderer,eyez<0)){

gmRenderer.move=70;

g}

。e1seif((mRenderer.eyex<0)&&(mRenderer.eyez>0)){

omRenderer.move=82;

8}

break;

o笛ase3:

。emRenderer.move=85;

a。break;

ocase4:

。mRenderer.move=68;

。©break;

4

)

叩rivatevoidmemcpy(intone,inttwo){

“mRenderer.face_co1or[one]=mRenderer.face_colorltwoj;

mRenderer.face_color[one+l]=mRenderer.face_color[two+11;

0mRenderer.face_co1or[one+2]=mRenderer.face_color[two+2];

b}

oprivatevoidLeftShift(inta,intb,intc,intd){

g//a<b<c<d左移

gfloa11empl=mRenderer.face_colorLa];

。f1oattemp2=mRenderer.face_co1or[a+1];

f1oattemp3=mRenderer.face_co1or[a+2];

memcpy(a,b);

°memcpy(b,c);

6memcpy(c,d);

niRenderer.face_color[d]=tempi;

mRenderer.face_color[d+1]=temp2;

mRenderer.face_color[d+2]=temp3;

°)

)

privatevoidDrawRotation(GL10g1){

。//绘制小立方体

eooswitch(move)

6{

“ocase70:

wooDrawCube19(gl);DrawCubell(g1);DrawCube2(gl);DrawCube22(gl);

DrawCube!3(g1);DrawCube5(g1);DrawCube25(g1);D

rawCubel6(gl);

8。DrawCube8(gl);DrawCubel8(gl);DrawCubel0(gl);DrawCubel(gl);

oDrawCube21(gl);DrawCube4(g1);DrawCube24(g1);Dr

awCubel5(g1);DrawCube7(gl);

8gLglPushMatrix();

®。gl.gIRotatef(-angle,0.0f,0.0f,1.0f);

。eDrawCube0(g1);DrawCube9(gl);DrawCube17(g1);DrawCube3(gl);

8。DrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCube14(gl);D

rawCube23(gl);

。gl.g1PopMatrix();

obreak;

<»case66:

DrawCubeO(gl);DrawCube9(gl);DrawCube17(g1);DrawCub

e3(gl);

doooDrawCube12(gl);DrawCube20(gl);DrawCube6(gl);DrawCubel4(g1);

oo^DrawCube23(gl);DrawCube18(g1);DrawCubelO(g1);DrawCube1(g1);

8。DrawCube2l(gl);DrawCube4(g1);DrawCube24(g1);DrawCub

e15(g1);DrawCube7(gl);

ggg1.glPushMatrix();

。gl.glRotatef(angle,0.0f,O.Of,1.0f);

。©DrawCube19(gl);DrawCubell(g1);DrawCube2(gl);DrawCube

22(g1);

。DrawCube13(g1);DrawCube5(gl);DrawCube25(gl);Draw

Cubel6(g1);DrawCube8(g1);

。ogl.g1PopMatrix();

ebreak;

case85:

eeoDrawCube3(gl);DrawCube23(gl);DrawCube24(gl);DrawCube25(gl);

g®DrawCube4(gl);DrawCube5(gI);DrawCube6(g1);DrawCube7(gl);

«>oDrawCube8(g1);DrawCubel2(gl);DrawCube!3(g1);DrawCube14(g

1);

gDrawCube15(gl);DrawCube16(g1);DrawCube2O(gl);DrawCube2

l(gl);DrawCube22(gl);

gLglPushMatrix();

ogl.g1Rotatef(-angle,0.Of,1.0f,O.Of);

®DrawCubeO(gl);DrawCubel(gl);DrawCube2(gl);DrawCu

be9(gl);

oDrawCube10(gl);DrawCubell(g1);DrawCube17(gl);Draw

Cubel8(g1);DrawCube19(gl);

。g1.gIPopMatrix();

。break;

◎case68:

8。DrawCube0(g1);DrawCube1(g1);DrawCube2(g1);DrawCube3(g1);

oDrawCube4(gl);DrawCube5(gl);DrawCube9(g1);DrawCubel

0(gl);

©oDrawCubell(gl);DrawCubel2(g1);DrawCube13(gl);DrawCube17

(gl);

goDrawCube18(gl);DrawCubel9(gl);DrawCube20(g1);DrawCube21(g1);

DrawCube22(g1);

ggl.g1PushMatrix();

。ogl.glRotatef(ang1e,0.0f,-1.0f,0.0f);

w»DrawCube6(gl);DrawCube?(g1);DrawCube8(gl);DrawCube14(g

I);

gDrawCube15(g1);DrawCube16(g1);DrawCube23(gl);Draw

Cube24(gl);DrawCube25(gl);

aogl.g1PopMatrix();

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论