打飞机小游戏

*1、画背景
 *2、画飞机
 *3、画小怪
 *4、画子弹
 *——背景,飞机、小怪、子弹各有draw和move方法

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GameView gameView = new GameView(MainActivity.this);
setContentView(gameView);
}
}
public class GameView extends SurfaceView implements Callback {
private int indexbo=0;
private SurfaceHolder holder;
private Paint paint;
private Background background;
private Hero hero;
private ArrayList<BulletHero> bullets_hero;
private int [][]enemysData={{1,1},{0,0},{1,1,1,0},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1},{1,1},{0,0},{1,1,1,0,1},{0,1,0,1},{1,0,0,1},{1,1,1},{1,0,1,1}};
private ArrayList<Enemy> enemys;
Canvas canvas ;
public GameView(Context context) {
super(context);
holder = getHolder();
holder.addCallback(this);
paint = new Paint();
background = new Background(context);
hero = new Hero(context);
bullets_hero = new ArrayList<BulletHero>();
enemys = new ArrayList<Enemy>();
}
@Override
public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
isRunning = true;
new ViewThread().start();
}
@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
// TODO Auto-generated method stub
isRunning = false;
}
private boolean isRunning = false;
class ViewThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
while (isRunning) {
canvas = holder.lockCanvas();
if (canvas == null)
continue;
canvas.drawColor(0xFFFFFFFF);
drawView(canvas);
logic();
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
try {
sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
int count = 0;
private void logic() {
// TODO Auto-generated method stub
background.logic();
count++;
if (count % 2 == 0) {
BulletHero bullet = new BulletHero(getContext(), hero.getX()
+ hero.getBitmap1().getWidth() / 2, hero.getY());
bullets_hero.add(bullet);
}
if(count%20==0){
int[]is=enemysData[indexbo];
for(int i=0;i<is.length;i++){
Enemy enemy = new Enemy(getContext(),is[i]);
enemys.add(enemy);
}
indexbo++;
if(indexbo>enemysData.length-1)
indexbo=0;
}
//检测碰撞
for(int i=0;i<enemys.size();i++){
Enemy enemy=enemys.get(i);
for(int j=0;j<bullets_hero.size();j++){
BulletHero bullet=bullets_hero.get(j);
if(enemy.isCollection(bullet)){
enemys.remove(i);
enemy.drawCollection(canvas,paint);
bullets_hero.remove(j);
}
}
}
}private void drawView(Canvas canvas) {
// TODO Auto-generated method stub
background.draw(canvas, paint);
hero.draw(canvas, paint);
//画子弹
for (BulletHero bullet : bullets_hero) {
bullet.draw(canvas, paint);
bullet.move();
}
//画小怪
for(Enemy e:enemys){
e.draw(canvas,paint);
e.move();
}
}
}
public boolean onTouchEvent(MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
hero.move(x, y);
return true;
}
}
public class Background {
private Bitmap bitmap;
private int y,y2,speed,width,height;
public Background(Context context) {
super();
bitmap=BitmapFactory.decodeResource(context.getResources(), R.drawable.background);
y=0;
y2=-852;
speed=10;
}
public void draw(Canvas canvas,Paint paint){
canvas.drawBitmap(bitmap,0,y,paint);
canvas.drawBitmap(bitmap,0,y2,paint);
}
public void logic(){
y+=speed;
y2+=speed;
if(y>800)
// y=-height;
y=-852;
if(y2>800)
// y2=-height;
y2=-852;
}
}
public class BulletHero {
private Bitmap bitmap;
private int x,y,speed;
public Bitmap getBitmap() {
return bitmap;
}
public void setBitmap(Bitmap bitmap) {
this.bitmap = bitmap;
}
public BulletHero(Context context,int x,int y) {
// TODO Auto-generated constructor stub
bitmap=BitmapFactory.decodeResource(context.getResources(), R.drawable.bullet1);
this.x=x;
this.y=y;
speed=40;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public void draw(Canvas canvas,Paint paint){
canvas.drawBitmap(bitmap, x, y, paint);
}
public void move(){
y=y-speed;
}
}
public class Enemy {
private Bitmap bitmap;
private int x, y,speed,type;
public static final int TYPE_UP=0;
public static final int TYPE_DOWN=1;
Context context;
private Bitmap bitmap3;
private Bitmap bitmap4;
public Enemy(Context context,int type){
this.type=type;
this.context=context;
switch(type){
case TYPE_UP:
bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.enemy1);
speed=40;
break;
case TYPE_DOWN:
bitmap=BitmapFactory.decodeResource(context.getResources(), R.drawable.enemy2);
speed=30;
break;
}
y=bitmap.getHeight()-100;
x=(int)(Math.random()*480);
if(x>(480-bitmap.getWidth())){
x=480-bitmap.getWidth();
}
}
public void draw(Canvas canvas,Paint paint){
canvas.drawBitmap(bitmap, x, y, paint);
}
public void move(){
y+=speed;
if(type==TYPE_UP)
speed-=2;
}
//碰撞检测
public boolean isCollection(BulletHero bullet){
int left=bullet.getX();
int right=bullet.getX()+bullet.getBitmap().getWidth();
int top=bullet.getY();
int bottom=bullet.getY()+bullet.getBitmap().getHeight();
//左边
if(right<x)
return false;
//右边
if(x+bitmap.getWidth()<left)
return false;
//上边
if(bottom<y)
return false;
//下边
if(y+bitmap.getHeight()<top)
return false;
return true;
}
public void drawCollection(Canvas canvas,Paint paint) {
// TODO Auto-generated method stub
switch(type){
case 0:
bitmap3=BitmapFactory.decodeResource(context.getResources(), R.drawable.enemy1_down1);
canvas.drawBitmap(bitmap3, x, y, paint);
break;
case 1:
bitmap4 = BitmapFactory.decodeResource(context.getResources(), R.drawable.enemy2_down2);
canvas.drawBitmap(bitmap4, x, y, paint);
}
}
}
public class Hero {
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public Bitmap getBitmap1() {
return bitmap1;
}
public void setBitmap1(Bitmap bitmap1) {
this.bitmap1 = bitmap1;
}
public Bitmap getBitmap2() {
return bitmap2;
}
public void setBitmap2(Bitmap bitmap2) {
this.bitmap2 = bitmap2;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
private int x,y;
private Bitmap bitmap1;
private Bitmap bitmap2;
private int count;
public Hero(Context context){
super();
bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.hero1);
bitmap2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.hero2);
x=240-bitmap1.getWidth()/2;
y=800-bitmap1.getHeight();
}
public void draw(Canvas canvas,Paint paint){
count++;
if(count%2==1)
canvas.drawBitmap(bitmap1, x, y, paint);
else
canvas.drawBitmap(bitmap2, x, y, paint);
}
public void move(int x,int y){
this.x=x-bitmap1.getWidth()/2;
this.y=y-bitmap1.getHeight()/2;
}
}

转载于:https://my.oschina.net/nandecanghai123/blog/1529293

Android 打飞机 小游戏 的实现 - 画面移动 对象封装 碰撞效果相关推荐

  1. Android 打飞机小游戏 cocos2d

    从cocos2d官网上下载合适的框架 导入自己的应用程序中. 1.CCDirector:导演类是游戏当中的组织者和领导者,负责调度游戏当中的一切对象和资源: Director是一个单例,在全部游戏中只 ...

  2. java打飞机小游戏(跟着网上视频写到)

    package 飞机小游戏; //如果觉得好的话,给一点积分哦,太痛苦了,平时下一点资料都得需要 import java.awt.Color; import java.awt.Font; import ...

  3. Python编写微信打飞机小游戏(三)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  4. Python编写微信打飞机小游戏(八)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  5. Python编写微信打飞机小游戏(七)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  6. Python编写微信打飞机小游戏(十)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  7. Python编写微信打飞机小游戏(十二)

    如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢. Python编写微信打飞机小游戏(一) Python编写微信打飞机小游戏(二) Python编写微信打飞机小游戏(三 ...

  8. 用JAVA写个飞机小游戏玩玩吧

    闲来无事写了个飞机小游戏. 设定很简单,子弹打到飞机就结束游戏. 实现步骤如下,有问题可以评论区讨论: 首先建立一个PlayGame项目和它之下的包: MyGameFrame(游戏实现)类: pack ...

  9. C语言射击类打飞机小游戏

    使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会. 在网上查询资料并且和同学讨论之后,对原来的代码有了一些改进, 改进:增加了颜色函数 ...

最新文章

  1. iOS逆向(1)-密码学(RSA)
  2. hibernate整合进spring后的事务处理
  3. 新手学JAVA(六)----处理随机性的数据
  4. python3.6.5下载-Python
  5. 现代微波滤波器结构与设计_高功率射频及微波无源器件中的考虑和限制
  6. ng build command not found(ng命令到底是什么鬼)
  7. eclipse没有server怎么办
  8. 排除表_数字高压表(交直流分压器)常见故障分析
  9. 将cmd添加到鼠标右键,并且在任意目录下可以打开
  10. 深入解剖 linux内存管理之mmap
  11. android两种基本联网方式与一种第三方开源项目的使用
  12. android分享文字到朋友圈,微信,分享朋友圈,只能分享图,文字带不过来,这是什么原因?是BUG吗?...
  13. 获取打印机状态,判断打印机状态,获取打印机驱动信息
  14. vue Fullcalendar鼠标放上展示悬浮框 (tippyjs插件的简单使用)
  15. Linux之ubuntu离线安装软件包
  16. 热浪(单源最短路问题)
  17. 【上】CS229 吴恩达机器学习 习题作业答案 problem sets 03 PS03(全部问题解答,欢迎各位前辈指教)
  18. STM32F407探索者(正点原子的资料)(百度链接)
  19. 教你在Ubuntu上安装Linux内核6.1
  20. 点云配准(二)— python open3d ICP方法

热门文章

  1. 实用的it知识学习_IT榜样 | 寇宇宸:认真听讲是学习知识的绝佳途径
  2. busybox v1.22.1(debian 1:1.22.0-19) built-in shell(ash)解决方案
  3. 基于Django框架的视频播放器设计
  4. 联发科天玑 9200 旗舰芯片,有哪些亮点和不足
  5. 一路编程,一路迷茫,一路醒悟,接着迷茫,再醒悟再迷茫
  6. BA-协议-BACnet 协议优势简析
  7. 华为交换机导入配置_华为交换机怎么配置FTP上传文件?
  8. 菜鸟笔记-微信分享突然失效的解决
  9. 学计算机的什么是镜像,一、什么是windows镜像?什么是Ghost?它们有什么优缺点?...
  10. 计算机报名照片不能小于20kb,公务员考试:上传20KB电子照片难倒不少考生