找人做彩票网站有哪些,平面设计师必看的网站,河南百度推广代理商,最好的做法是(游戏)打飞机01#xff1a;前言 传送门 (游戏)打飞机02#xff1a;游戏背景滚动 传送门 (游戏)打飞机03#xff1a;控制玩家飞机 传送门 (游戏)打飞机04#xff1a;绘画敌机、添加子弹 传送门 (游戏)打飞机05#xff1a;处理子弹#xff0c;击中敌机前言 传送门 (游戏)打飞机02游戏背景滚动 传送门 (游戏)打飞机03控制玩家飞机 传送门 (游戏)打飞机04绘画敌机、添加子弹 传送门 (游戏)打飞机05处理子弹击中敌机添加计分板 传送门 (游戏)打飞机06后续 传送门 绘画敌机、添加子弹效果 package com.example.administrator.myapplication;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** Created by Administrator on 2018/8/9.*/public class dafeijiGameView extends SurfaceView implementsSurfaceHolder.Callback,Runnable,android.view.View.OnTouchListener{private Bitmap my;//自己private Bitmap baozha;//爆炸private Bitmap bg;//背景private Bitmap diren;//敌人private Bitmap zidan;//子弹private Bitmap erjihuancun;//二级缓存private WindowManager windowManager;//获得界面长宽高private int display_w; //界面的宽private int display_h; //界面的高private ArrayListGameImage gameImage new ArrayList();private ArrayListZidan zidans new ArrayListZidan();public dafeijiGameView(Context context) {super(context);getHolder().addCallback(this);//事件注册this.setOnTouchListener(this);}private void init(){//加载照片my BitmapFactory.decodeResource(getResources(),R.drawable.my);baozha BitmapFactory.decodeResource(getResources(),R.drawable.baozha);bg BitmapFactory.decodeResource(getResources(),R.drawable.bg);diren BitmapFactory.decodeResource(getResources(),R.drawable.diren);zidan BitmapFactory.decodeResource(getResources(),R.drawable.zidan);erjihuancunBitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);gameImage.add(new BeijingImage(bg)); //先加入背景照片gameImage.add(new FeijiImage(my));gameImage.add(new DijiImage(diren));}FeijiImage selectfeiji;Overridepublic boolean onTouch(View v, MotionEvent event) {//手接近屏幕产生的事件if(event.getAction()MotionEvent.ACTION_DOWN){for(GameImage game: gameImage){if(game instanceof FeijiImage){FeijiImage feiji (FeijiImage)game;//判断条件为真时选中飞机if(feiji.getX()event.getX()feiji.getY()event.getY()feiji.getX()feiji.getWidth()event.getX() feiji.getY()feiji.getHeigth()event.getY()){selectfeijifeiji;}else{selectfeijinull;}break;}}}else if(event.getAction()MotionEvent.ACTION_MOVE){//移动鼠标if( selectfeiji!null){selectfeiji.setX((int)event.getX()-selectfeiji.getWidth()/2);selectfeiji.setY((int)event.getY()-selectfeiji.getHeigth()/2);}}else if(event.getAction()MotionEvent.ACTION_UP){//松开鼠标selectfeijinull;}return true;}private interface GameImage{public Bitmap getBitmap();public int getX();public int getY();}private class Zidan implements GameImage{Bitmap zidan;private FeijiImage feiji;private int x;private int y;public Zidan(FeijiImage feiji,Bitmap zidan){this.feijifeiji;this.zidanzidan;x(feiji.getX()feiji.getWidth()/2)-25;//居中位置yfeiji.getY()-zidan.getHeight();}public Bitmap getBitmap() {y-19;if(y-10){zidans.remove(this);}return zidan;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}}private class DijiImage implements GameImage{private Bitmap diren null;private ListBitmap bitmaps new ArrayListBitmap();private int x;private int y;public DijiImage(Bitmap diren){this.direndiren;bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));y-diren.getHeight();Random ran new Random();xran.nextInt(display_w-(diren.getWidth()/4));}private int index0;private int num 0;Overridepublic Bitmap getBitmap() {Bitmap bitmap bitmaps.get(index);//控制切换四个飞机的频率if(num 7){index;if(index bitmaps.size()){index0;}num0;}y3;num;if(ydisplay_h){gameImage.remove(this);}return bitmap;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}}private class FeijiImage implements GameImage{private Bitmap my;private int x;private int y;private int width;private int heigth;private int getWidth(){return width;}private int getHeigth(){return heigth;}private ListBitmap bitmaps new ArrayListBitmap();private FeijiImage(Bitmap my){this.mymy;bitmaps.add(Bitmap.createBitmap(my,0,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4),0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*2,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*3,0,my.getWidth()/4,my.getHeight()));//得到战机的高和宽widthmy.getWidth()/4;heigthmy.getHeight();x(display_w - my.getWidth()/4)/2;ydisplay_h-my.getHeight()-30;}private int index0;private int num 0;Overridepublic Bitmap getBitmap() {Bitmap bitmap bitmaps.get(index);//控制切换四个飞机的频率if(num 7){index;if(index bitmaps.size()){index0;}num0;}num;return bitmap;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}public void setY(int y){this.yy;}public void setX(int x){this.xx;}}//负责背景照片的处理private class BeijingImage implements GameImage{private Bitmap bg;private BeijingImage(Bitmap bg){this.bgbg;newBitmap Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);}private Bitmap newBitmap null;private int height 0;public Bitmap getBitmap(){Paint p new Paint();Canvas canvas new Canvas(newBitmap);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,height,display_w,display_hheight),p);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,-display_hheight,display_w,height),p);height;if(heightdisplay_h){height0;}return newBitmap;}public int getX(){return 0;}public int getY(){return 0;}}private boolean state false;private SurfaceHolder holder;//绘画中心public void run() {Paint p1 new Paint();int diren_num0;//int zidan_num0;try{while(state){if(selectfeiji!null){if(zidan_num10){zidans.add(new Zidan(selectfeiji,zidan));zidan_num0;}zidan_num;}Canvas newCanvas new Canvas(erjihuancun);for(GameImage image:(ListGameImage)gameImage.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}for(GameImage image:(ListGameImage)zidans.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}if(diren_num150){diren_num0;gameImage.add(new DijiImage(diren));}diren_num;Canvas canvas holder.lockCanvas();canvas.drawBitmap(erjihuancun,0,0,p1);holder.unlockCanvasAndPost(canvas);Thread.sleep(10);}}catch(Exception e){}}Overridepublic void surfaceCreated(SurfaceHolder holder) {}Overridepublic void surfaceDestroyed(SurfaceHolder holder) {state false;}Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {//得到屏幕的宽和高display_wwidth;display_hheight;init();this.holderholder;state true;new Thread(this).start();}} dafeijiGameView.java package com.example.administrator.myapplication;import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;public class MainActivity extends AppCompatActivity{Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//去掉标题// requestWindowFeature(Window.FEATURE_NO_TITLE);dafeijiGameView view new dafeijiGameView(this);setContentView(view);}} MainActivity.java 实现过程 绘制敌机 private class DijiImage implements GameImage{private Bitmap diren null;private ListBitmap bitmaps new ArrayListBitmap();private int x;private int y;public DijiImage(Bitmap diren){this.direndiren;bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));y-diren.getHeight();Random ran new Random();xran.nextInt(display_w-(diren.getWidth()/4));}private int index0;private int num 0;Overridepublic Bitmap getBitmap() {Bitmap bitmap bitmaps.get(index);//控制切换四个飞机的频率if(num 7){index;if(index bitmaps.size()){index0;}num0;}y3;num;if(ydisplay_h){gameImage.remove(this);}return bitmap;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}} DijiImage.java 初始化游戏时候加载敌机类 private void init(){//加载照片my BitmapFactory.decodeResource(getResources(),R.drawable.my);baozha BitmapFactory.decodeResource(getResources(),R.drawable.baozha);bg BitmapFactory.decodeResource(getResources(),R.drawable.bg);diren BitmapFactory.decodeResource(getResources(),R.drawable.diren);zidan BitmapFactory.decodeResource(getResources(),R.drawable.zidan);erjihuancunBitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);gameImage.add(new BeijingImage(bg)); //先加入背景照片gameImage.add(new FeijiImage(my));gameImage.add(new DijiImage(diren));} 绘制敌机飞行动画 private ListBitmap bitmaps new ArrayListBitmap(); 将四张敌机加入链表 bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight())); public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) 从原始位图剪切图像这是一种高级的方式。可以用Matrix(矩阵)来实现旋转等高级方式截图 参数说明 传送门 Bitmap source要从中截图的原始位图 int x:起始x坐标 int y起始y坐标 int width要截的图的宽度 int height要截的图的宽度 Bitmap.Config config一个枚举类型的配置可以定义截到的新位图的质量 返回值返回一个剪切好的Bitmap 绘制飞机飞行动画(不断切换四张图片看起来像飞机飞) private int index0;private int num 0;Overridepublic Bitmap getBitmap() {Bitmap bitmap bitmaps.get(index);//控制切换四个飞机的频率if(num 7){index;if(index bitmaps.size()){index0;}num0;}//y3控制敌机下降速度y3; 随机位置生成敌机 y-diren.getHeight();Random ran new Random();xran.nextInt(display_w-(diren.getWidth()/4)); 在游戏绘画中心中添加敌机出现 //绘画中心public void run() {Paint p1 new Paint();int diren_num0;//try{while(true){Canvas newCanvas new Canvas(erjihuancun);for(GameImage image:(ListGameImage)gameImage.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}if(diren_num150){diren_num0;gameImage.add(new DijiImage(diren));}diren_num;Canvas canvas holder.lockCanvas();canvas.drawBitmap(erjihuancun,0,0,p1);holder.unlockCanvasAndPost(canvas);Thread.sleep(10);}}catch(Exception e){}} 敌机出现频率 if(diren_num150){diren_num0;gameImage.add(new DijiImage(diren));}diren_num; package com.example.administrator.myapplication;import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;import java.util.ArrayList;
import java.util.List;
import java.util.Random;/*** Created by Administrator on 2018/8/9.*/public class dafeijiGameView extends SurfaceView implementsSurfaceHolder.Callback,Runnable,android.view.View.OnTouchListener{private Bitmap my;//自己private Bitmap baozha;//爆炸private Bitmap bg;//背景private Bitmap diren;//敌人private Bitmap zidan;//子弹private Bitmap erjihuancun;//二级缓存private WindowManager windowManager;//获得界面长宽高private int display_w; //界面的宽private int display_h; //界面的高private ArrayListGameImage gameImage new ArrayList();public dafeijiGameView(Context context) {super(context);getHolder().addCallback(this);//事件注册this.setOnTouchListener(this);}private void init(){//加载照片my BitmapFactory.decodeResource(getResources(),R.drawable.my);baozha BitmapFactory.decodeResource(getResources(),R.drawable.baozha);bg BitmapFactory.decodeResource(getResources(),R.drawable.bg);diren BitmapFactory.decodeResource(getResources(),R.drawable.diren);zidan BitmapFactory.decodeResource(getResources(),R.drawable.zidan);erjihuancunBitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);gameImage.add(new BeijingImage(bg)); //先加入背景照片gameImage.add(new FeijiImage(my));gameImage.add(new DijiImage(diren));}FeijiImage selectfeiji;Overridepublic boolean onTouch(View v, MotionEvent event) {//手接近屏幕产生的事件if(event.getAction()MotionEvent.ACTION_DOWN){for(GameImage game: gameImage){if(game instanceof FeijiImage){FeijiImage feiji (FeijiImage)game;//判断条件为真时选中飞机if(feiji.getX()event.getX()feiji.getY()event.getY()feiji.getX()feiji.getWidth()event.getX() feiji.getY()feiji.getHeigth()event.getY()){selectfeijifeiji;}else{selectfeijinull;}break;}}}else if(event.getAction()MotionEvent.ACTION_MOVE){//移动鼠标if( selectfeiji!null){selectfeiji.setX((int)event.getX()-selectfeiji.getWidth()/2);selectfeiji.setY((int)event.getY()-selectfeiji.getHeigth()/2);}}else if(event.getAction()MotionEvent.ACTION_UP){//松开鼠标selectfeijinull;}return true;}private interface GameImage{public Bitmap getBitmap();public int getX();public int getY();}private class DijiImage implements GameImage{private Bitmap diren null;private ListBitmap bitmaps new ArrayListBitmap();private int x;private int y;public DijiImage(Bitmap diren){this.direndiren;bitmaps.add(Bitmap.createBitmap(diren,0,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*1,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*2,0,diren.getWidth()/4,diren.getHeight()));bitmaps.add(Bitmap.createBitmap(diren,(diren.getWidth()/4)*3,0,diren.getWidth()/4,diren.getHeight()));y-diren.getHeight();Random ran new Random();xran.nextInt(display_w-(diren.getWidth()/4));}private int index0;private int num 0;Overridepublic Bitmap getBitmap() {Bitmap bitmap bitmaps.get(index);//控制切换四个飞机的频率if(num 7){index;if(index bitmaps.size()){index0;}num0;}y3;num;if(ydisplay_h){gameImage.remove(this);}return bitmap;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}}private class FeijiImage implements GameImage{private Bitmap my;private int x;private int y;private int width;private int heigth;private int getWidth(){return width;}private int getHeigth(){return heigth;}private ListBitmap bitmaps new ArrayListBitmap();private FeijiImage(Bitmap my){this.mymy;bitmaps.add(Bitmap.createBitmap(my,0,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4),0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*2,0,my.getWidth()/4,my.getHeight()));bitmaps.add(Bitmap.createBitmap(my,(my.getWidth()/4)*3,0,my.getWidth()/4,my.getHeight()));//得到战机的高和宽widthmy.getWidth()/4;heigthmy.getHeight();x(display_w - my.getWidth()/4)/2;ydisplay_h-my.getHeight()-30;}private int index0;private int num 0;Overridepublic Bitmap getBitmap() {Bitmap bitmap bitmaps.get(index);//控制切换四个飞机的频率if(num 7){index;if(index bitmaps.size()){index0;}num0;}num;return bitmap;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}public void setY(int y){this.yy;}public void setX(int x){this.xx;}}//负责背景照片的处理private class BeijingImage implements GameImage{private Bitmap bg;private BeijingImage(Bitmap bg){this.bgbg;newBitmap Bitmap.createBitmap(display_w,display_h, Bitmap.Config.ARGB_8888);}private Bitmap newBitmap null;private int height 0;public Bitmap getBitmap(){Paint p new Paint();Canvas canvas new Canvas(newBitmap);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,height,display_w,display_hheight),p);canvas.drawBitmap(bg,new Rect(0,0,bg.getWidth(),bg.getHeight()),new Rect(0,-display_hheight,display_w,height),p);height;if(heightdisplay_h){height0;}return newBitmap;}public int getX(){return 0;}public int getY(){return 0;}}private boolean state false;private SurfaceHolder holder;//绘画中心public void run() {Paint p1 new Paint();int diren_num0;//try{while(true){Canvas newCanvas new Canvas(erjihuancun);for(GameImage image:(ListGameImage)gameImage.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);}if(diren_num150){diren_num0;gameImage.add(new DijiImage(diren));}diren_num;Canvas canvas holder.lockCanvas();canvas.drawBitmap(erjihuancun,0,0,p1);holder.unlockCanvasAndPost(canvas);Thread.sleep(10);}}catch(Exception e){}}Overridepublic void surfaceCreated(SurfaceHolder holder) {}Overridepublic void surfaceDestroyed(SurfaceHolder holder) {state false;}Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {//得到屏幕的宽和高display_wwidth;display_hheight;init();this.holderholder;state true;new Thread(this).start();}} dafeijiGameView 游戏中添加子弹 private class Zidan implements GameImage{Bitmap zidan;private FeijiImage feiji;private int x;private int y;public Zidan(FeijiImage feiji,Bitmap zidan){this.feijifeiji;this.zidanzidan;x(feiji.getX()feiji.getWidth()/2)-25;//居中位置yfeiji.getY()-zidan.getHeight();}public Bitmap getBitmap() {y-19;if(y-10){zidans.remove(this);}return zidan;}Overridepublic int getX() {return x;}Overridepublic int getY() {return y;}} zidan.class 判断子弹出现飞机位置 public Zidan(FeijiImage feiji,Bitmap zidan){this.feijifeiji;this.zidanzidan;x(feiji.getX()feiji.getWidth()/2)-25;//居中位置yfeiji.getY()-zidan.getHeight();} (-25是自己微调) 子弹超出边界的时候释放子弹内存减少手机开销 public Bitmap getBitmap() {y-19;if(y-10){zidans.remove(this);}return zidan;} 不断的出现新的子弹 if(selectfeiji!null){if(zidan_num10){zidans.add(new Zidan(selectfeiji,zidan));zidan_num0;}zidan_num;} 便利所有的子弹 for(GameImage image:(ListGameImage)zidans.clone()){newCanvas.drawBitmap(image.getBitmap(),image.getX(),image.getY(),p1);} 转载于:https://www.cnblogs.com/1138720556Gary/p/9457052.html