android 游戏源代码 塔防游戏 精灵塔防

  • h9_931204
    了解作者
  • 12.2MB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-27 04:26
    上传日期
android 游戏源代码 塔防游戏 精灵塔防
android 游戏源代码 塔防游戏——精灵塔防.rar
内容介绍
package com.bn.tag; import java.util.HashMap; import java.util.List; import java.util.Vector; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.SoundPool; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import static com.bn.tag.Constant.*; public class GameView extends SurfaceView implements SurfaceHolder.Callback{ TafangGameActivity activity; SingleJianta tartar; SurfaceHolder holder; TargetThread targetTH; IfGameOverThread ifgameoverTh;//判断游戏结束的线程 TimeThread timeTh;//水晶覆盖CD的线程 ShuijingThread shuijingTh;//水晶大招 ShellThread shellTh; CaidanThread caidanth;//弹出菜单的对话框线程 homeThread homeTh; float caidan_x=CAIDAN_GAME_START_X; float caidan_y=-340; float scale=1.0f; ShellNumThread shellNuTh; Paint paint;//画笔引用 Bitmap background; //背景 Bitmap shengming; Bitmap shengming01;//生命血槽的底色 Bitmap gonglu; Bitmap smalltree; Bitmap shuijing; Bitmap bigtree; Bitmap flower; Bitmap jianta; Bitmap jianta1; Bitmap money; Bitmap blood; Bitmap shadipic;//杀敌数图片 Bitmap tibiao1; Bitmap tibiao2; Bitmap tubiao1; Bitmap canlocationpic; Bitmap shuijing_cover; Bitmap shuijingZCZ;//水晶大招 Bitmap candoit;//操作当前箭塔的存在 boolean candoiflag=false; Bitmap homelo;//游戏家的位置 Bitmap candan;//游戏界面中左下角的菜单图标 Bitmap caidanbi;//弹出菜单的图片 GameViewDrawThread gameViewDrawThread; List<Target> alTarget;//目标代表 Bitmap target1Bitmap; Bitmap[] iscore=new Bitmap[10]; Bitmap[][] targettop=new Bitmap[3][4]; Bitmap[][] targetbottom=new Bitmap[3][4]; Bitmap[][] targetstraight=new Bitmap[3][4]; int score=20; int doller=45; int bloodNUM=10;//当前血量 int shuijingNUM=1; int shuijingMiddleNum=25; int shaNUM=0; int alpha=200;//当前水晶大招的图片的透明度 float scoreWidth = 16;//分数数字的图片的宽度 float shuijing_change_x=SHUIJIAN_STARTX; float shuijing_change_y=SHUIJIAN_STARTY; TargetNumThread TargetNum; List<Target> alTarget1=new Vector<Target>();//怪物列表 List<SingleJianta> jiantaList=new Vector<SingleJianta>(); List<SingleJianta> jiantamidd=new Vector<SingleJianta>(); boolean taflag1;//箭塔1的按下标志位 boolean taflag2;//箭塔2的按下标志位 boolean caidanflag;//游戏界面中菜单图标按下标志位 boolean shuijing_Flag=false;//绘制水晶CD的标志位 boolean shuijing_D_Z_Flag=false; float middleballx; float middlebally; Shell shell; //手拖动箭塔走动过程中的动画设置 //箭塔拖动 SingleGoJianta sg; SingleGoJianta sgsg; //判断当前位置为可放和不可放的标志位 CanOrIndexPic canLocation; CanOrIndexPic candoitit; //射箭数组 List<Shell> shellsjian=new Vector<Shell>(); //声音相关变量 SoundPool soundPool;//声音 HashMap<Integer, Integer> soundPoolMap; MediaPlayer mMediaPlayer; int angle=0; public GameView(TafangGameActivity activity) { super(activity); getHolder().addCallback(this);//注册回调接口 this.activity = activity; initBitmap(); sg=new SingleGoJianta(this, jianta); sgsg=new SingleGoJianta(this,jianta1); canLocation=new CanOrIndexPic(this,canlocationpic); candoitit=new CanOrIndexPic(this,candoit); paint = new Paint();//创建画笔 paint.setAntiAlias(true);//打开抗锯齿 paint.setStrokeWidth(1);//设置路线绘制宽度 if(activity.isSoundOn()) { initSounds(activity); } //homelo=((BitmapDrawable)getResources().getDrawable(R.drawable.home)).getBitmap(); } @Override public void onDraw(final Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(background, 0,0, null); if(activity.cundang_Flag) { List<Integer> list01=new Vector<Integer>(); list01=DBUtil.searjianta(activity.name); int[] nochange1=new int[4]; nochange1=DBUtil.searchnochange(activity.name); doller=nochange1[0];//金钱 bloodNUM=nochange1[1];//生命 shaNUM=nochange1[2]; shuijingMiddleNum=nochange1[3]; for(int i=0;i<list01.size();i+=3) { if(list01.get(i+2)==130) { jiantaList.add(new SingleJianta(this,jianta,list01.get(i),list01.get(i+1),list01.get(i+2))); } if(list01.get(i+2)==100) { jiantaList.add(new SingleJianta(this,jianta1,list01.get(i),list01.get(i+1),list01.get(i+2))); } } list01.clear(); list01=DBUtil.searchguaiwu(activity.name); for(int i=0;i<list01.size();i+=7) { if(list01.get(i+2)==GW_STATE01) { alTarget1.add(new Target(this,target1Bitmap,list01.get(i),list01.get(i+1),list01.get(i+5),list01.get(i+6),0,list01.get(i+3)*Math.PI/180,list01.get(i+4))); } if(list01.get(i+2)==GW_STATE02) { alTarget1.add(new Target(this,target1Bitmap,list01.get(i),list01.get(i+1),list01.get(i+5),list01.get(i+6),1,list01.get(i+3)*Math.PI/180,list01.get(i+4))); } if(list01.get(i+2)==GW_STATE03) { alTarget1.add(new Target(this,target1Bitmap,list01.get(i),list01.get(i+1),list01.get(i+5),list01.get(i+6),2,list01.get(i+3)*Math.PI/180,list01.get(i+4))); } } activity.cundang_Flag=false; } else { } for(int i=0;i<12;i++) { for(int j=0;j<20;j++) { if(MAP[i][j]==1) { canvas.drawBitmap(gonglu, GONGLU_WEIGHT*j,GONGLU_HEIGHT*i, null); } } } //构建Matrix对象 Matrix mMatrix=new Matrix(); mMatrix.reset(); mMatrix.postScale(1,scale); //scale=1.5f; Bitmap homelolo=Bitmap.createBitmap(homelo, 0, 0, homelo.getWidth(), homelo.getHeight(), mMatrix, true); //绘制家 canvas.drawBitmap(homelolo, HOME_X,HOME_Y-(scale-1)*HOME_HEIGHT, null); for(int i=0;i<12;i++) { for(int j=0;j<20;j++) { if(MAP[i][j]==2) { canvas.drawBitmap(smalltree, TREE_WEIGHT*j,TREE_HEIGHT*i, null); } else if(MAP[i][j]==3) { canvas.drawBitmap(bigtree, BIG_TREE_WEIGHT*j,GONGLU_HEIGHT*i-BIG_TREE_HEIGHT+GONGLU_HEIGHT, null); } else if(MAP[i][j]==4) { canvas.drawBitmap(flower, FLOWER_WEIGHT*j,FLOWER_HEIGHT*i, null); } //绘制箭塔 synchronized (jiantaList){ for(SingleJianta sj:jiantaList) { if(sj.clo==j&&sj.row==i) { sj.drawSelf(canvas, paint); } } } //绘制怪物 synchronized (alTarget1) { for(Target tar:alTarget1) { if((int)(tar.ballx/SINGLE_RODER)==j&&(int)(tar.bally/SINGLE_RODER)==i) { tar.drawSelf(canvas, paint); } } } } } //绘制射箭 //List<Shell> shellsjian1=new Vector<Shell>(shellsjian); //shellsjian1.addAll(shellsjian); synchronized (shellsjian){ for(Shell sh:shellsjian) { sh.drawSelf(canvas, paint); } } //绘制金钱 //doller=doller+(10-alTarget11.size()); canvas.drawBitmap(money, 40,5, null); String dollerStr=doller+""; int length=dollerStr.length(); for(int i=0;i<length;i++){ int temp=dollerStr.charAt(i)-'0'; canvas.drawBitmap(iscore[temp], 50+MONEY_WEIGHT+i*scoreWidth,15, null); } //绘制生命 canvas.drawBitmap(blood, 70+MONEY_WEIGHT+5*scoreWidth,5, null); String bloodStr=bloodNUM+""; int lengthbl=bloodStr.length(); for(int i=0;i<lengthbl;i++){ int temp=bloodStr.charAt(i)-'0'; canvas.drawBitmap(iscore[temp], BLOOD_WEIGHT+80+MONEY_WEIGHT+(5+i)*scoreWidth,15, n
评论
    相关推荐
    • Android学习
      Android学习Android学习Android学习Android学习Android学习Android学习
    • Android678
      Android678Android678Android678Android678Android678Android678Android678Android678Android678Android678
    • android 例子
      android 例子android 例子android 例子android 例子android 例子
    • android图片
      android精美小图片android精美小图片android精美小图片android精美小图片
    • android课件
      清华老师上课的android课件。ch_01android概述ch_02android开发基础ch_03资源的访问ch_04android用户界面ch_05Ativity和Intent。其他自己看。
    • AndroidKiller
      安卓App反编译工具AndroidKiller\AndroidKiller\AndroidKiller
    • AndroidSample
      Android示例 这是一个示例Android应用,用于降低Google Play服务和Android Volley的使用率。 有关更多详细信息,请参阅以下链接: Google Play服务: Android凌空抽射:
    • android source
      android 源代码 source android 源代码 source android 源代码 source android 源代码 source android 源代码 source android 源代码 source android 源代码 source
    • Android 教程
      Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android ...
    • android资料
      Android程序员指南 Android_UI开发专题 Android程序开发初级教程 android的五大类各种常用类的资料整理 Android高手进阶教程