关闭

安卓游戏开发一(超级玛丽)

标签: android游戏开发界面
539人阅读 评论(0) 收藏 举报
分类:

超级玛丽(1)

前言:想做安卓游戏开发,首先你需要先掌握一些安卓的基础知识,然后学会使用surfaceview绘制一些简单的bitmap,学会了这些,你就具备了游戏开发的最基本条件。本文主要适合一些对surfaceview有一定了解的朋友,整个游戏都是使用android的原生代码编写,未使用第三方的任何东西,属于作者我原创,希望读者朋友尊重原创

先上视频链接:游戏效果视频

github地址(三个完整项目):https://github.com/nihuoLT/myGameRepository.git

里面还有其它俩个游戏,博主将他们开源,只是为了在成都找个工作,有公司的大佬看到,觉得博主适合您公司的职位或则对Android2d游戏开发有兴趣的朋友

都可以联系博主,至于游戏效果是不是我说的这么好,大家,下载看看就知道了

废话不多说,今天我们先把马里奥的移动做出来。首先定义一个接口类GameInterFace.java:

package com.example.newgame_1;

import android.graphics.Bitmap;

public interface GameInterFace {
	int getX();
        int getY();
        int getWidth();
        int getHeight();
        Bitmap getBitmap();
}
然后定义我们的马里奥类Maliao.java让它实现接口,然后写它的构造方法:

public JumpTest(int x,int y,GameView gameView){
		this.gameView=gameView;//拿到主Surfaceview
		this.source=BitmapFactory.decodeStream(gameView.getResources()
				.openRawResource(R.drawable.allmali));//获取马里奥的图片
		this.dead=BitmapFactory.decodeStream(gameView.getResources()
				.openRawResource(R.drawable.mario13));//获取马里奥死亡图片
		this.x=x;
		this.width=source.getWidth()/6;
		this.height=source.getHeight();
		this.cache=Bitmap.createBitmap(width, height, Config.ARGB_8888);//创建缓存图片
		this.y=y-height;
		this.speed=20;
		sprites.add(Bitmap.createBitmap(source,0,0,width-2,height));//切割图片
		sprites.add(Bitmap.createBitmap(source,width,0,width,height));
		sprites.add(Bitmap.createBitmap(source,width*2,0,width,height));
		sprites.add(Bitmap.createBitmap(source,width*3+1,0,width-1,height));
		sprites.add(Bitmap.createBitmap(source,width*4,0,width,height));
		sprites.add(Bitmap.createBitmap(source,width*5,0,width,height));
	}

然后在getBitmap方法里这样写:

public Bitmap getBitmap(){
if(IsMove){//是否移动标志
bitmap=sprites.get(index);//这里实现帧动画
    if(count==5){//每5秒切换一帧
	index++;
	if(index==size){
	   index=first;
	}
        count=0;
    }
    count++;
    if(XdirectionFlag){//移动方向标志
	if(x<=gameView.ScreenWidth-width)
	   x+=5;
    }else{
        if(x>0)
	   x-=5;
    }
}else{
   if(XdirectionFlag){//没有移动时切换为相应方向的帧
	bitmap=sprites.get(0);
   }else{
	bitmap=sprites.get(3);
   }
}
   return bitmap;
}

在Activity中左右按钮控制方向:

public boolean onTouch(View v, MotionEvent event) {
      switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
		switch (v.getId()) {
		   case R.id.left:
			gameView.jumpTest.IsMove=true;
			gameView.jumpTest.XdirectionFlag=false;
			gameView.jumpTest.first=2;
            	gameView.jumpTest.index=gameView.jumpTest.first;
            	gameView.jumpTest.size=4;
            	left.setBackgroundResource(R.drawable.zuo_r);
		   break;
             case R.id.right:
            	gameView.jumpTest.IsMove=true;
            	gameView.jumpTest.XdirectionFlag=true;
            	gameView.jumpTest.first=0;
            	gameView.jumpTest.index=gameView.jumpTest.first;
            	gameView.jumpTest.size=2;
            	right.setBackgroundResource(R.drawable.you_r);
		   break;
    
		}
	     break;
	  case MotionEvent.ACTION_UP:
          switch (v.getId()) {
		   case R.id.left:
		      eft.setBackgroundResource(R.drawable.zuo_b);
			gameView.jumpTest.IsMove=false;
		   break;
             case R.id.right:
            	right.setBackgroundResource(R.drawable.you_b);
            	gameView.jumpTest.IsMove=false;
		   break:
          }
	   break;
     }
       return true;
}


最后在surfaceview里绘制出来:

for(GameInterFace gameInterFace:(List<GameInterFace>)mys.clone()){
   c.drawBitmap(gameInterFace.getBitmap(), gameInterFace.getX(),gameInterFace.getY(), paint);
}

今天就先讲到这里下面是效果图:






0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【软件设计】模拟经典游戏超级玛丽实现

这个程序模拟的红白机上的经典游戏超级玛丽。MyTimer头文件// 程序名称:精确到微秒的延时类(基于多媒体定时器)#pragma once#include class MyTimer{private...
  • utimes
  • utimes
  • 2013-05-26 21:31
  • 3989

超级玛丽碰撞检测(跑酷碰撞检测)

/*检测是否碰撞*/ if(CCRectMake(X-mario->getPathLenght()+1,Y,Widht-2,Height).intersectsRect(mario->getPl...
  • w18767104183
  • w18767104183
  • 2014-02-28 16:43
  • 3651

cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动

在游戏中,很多怪物本身是会移动的,这里主要有蘑菇怪,乌龟等。
  • yincheng01
  • yincheng01
  • 2014-02-14 15:53
  • 2891

cocos2d-x游戏开发系列教程-超级玛丽01-前言

前言上次用象棋演示了cocos2dx的基本用法,但是对cocos2dx并没有作深入的讨论,这次以超级马里奥的源代码为线索,我们一起来学习超级马里奥的实现,并以一些篇幅来详细讲述遇到的具体问题和具体的类...
  • yincheng01
  • yincheng01
  • 2014-01-19 20:56
  • 5584

cocos2d-x游戏开发系列教程-超级玛丽05-CMMenuScene

代码下载链接http://download.csdn.net/detail/yincheng01/6864893解压密码:c.itcast.cn背景上一篇博文提到appDelegate,在该类的重载函...
  • yincheng01
  • yincheng01
  • 2014-02-10 15:00
  • 2438

cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap

背景在上一篇博客中,我们提到CMGameScene,但是CMGameScene只是个框架,实际担任游戏逻辑的是CMGameMap类,这个博文就来了解下CMGameMap头文件class CMGameM...
  • yincheng01
  • yincheng01
  • 2014-02-10 16:24
  • 3100

Java小程序之山寨版超级玛丽

Java小程序之山寨版超级玛丽 一、游戏基本功能 1、能够向左向右行走(键盘监听) 2、能够跳跃 3、能够发射子弹 4、能够检测和障碍物之间的碰撞 5、背景图片的移动 二、游戏运行界面 ...
  • BlueSky_USC
  • BlueSky_USC
  • 2017-01-06 00:55
  • 4785

超级玛丽 源码解析

首先,项目工程来自于9秒社团,项目下载地址是:http://www.9miao.com/news/6/65041 要说明的一点是,以上地址下来之后需要修改一个入口,而且引擎最好用coco2d...
  • u011922261
  • u011922261
  • 2014-12-21 01:32
  • 1817

cocos2d-x游戏开发系列教程-超级玛丽07-CMGameMap(二)

在了解地图的初始化和加载之前,我们先了解下mario的地图。用tiled工具打开mario地图从地图中可以看到,mario的地图有很多层构成:objects层:怪物,会动的怪物coin层:金币trap...
  • yincheng01
  • yincheng01
  • 2014-02-13 10:29
  • 3229

【Java】游戏小程序-超级玛丽(代码渗入)

一、游戏基本功能 1、能够向左向右行走(键盘监听) 2、能够跳跃 3、能够发射子弹 4、能够检测和障碍物之间的碰撞 5、背景图片的移动 二、游戏运行界面 三、游戏大致实现思路...
  • hj7jay
  • hj7jay
  • 2017-01-10 09:28
  • 32830
    个人资料
    • 访问:533次
    • 积分:14
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档