package com.pg;
import java.util.Random;
import java.util.Vector;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;
/**
*
* @author Himi
*
*/
public class MySurfaceView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder sfh;
private Paint paint;
private Thread th;
private boolean flag;
private Canvas canvas;
public static int screenW, screenH;
//定义游戏状态常量
public static final int GAME_MENU = 0;//游戏菜单
public static final int GAMEING = 1;//游戏中
public static final int GAME_WIN = 2;//游戏胜利
public static final int GAME_LOST = 3;//游戏失败
public static final int GAME_PAUSE = -1;//游戏菜单
//当前游戏状态(默认初始在游戏菜单界面)
public static int gameState = GAME_MENU;
//声明一个Resources实例便于加载图片
private Resources res = this.getResources();
//声明游戏需要用到的图片资源(图片声明)
private Bitmap bmpBackGround;//游戏背景
private Bitmap bmpBoom;//爆炸效果
private Bitmap bmpBoosBoom;//Boos爆炸效果
private Bitmap bmpButton;//游戏开始按钮
private Bitmap bmpButtonPress;//游戏开始按钮被点击
private Bitmap bmpEnemyDuck;//怪物鸭子
private Bitmap bmpEnemyFly;//怪物苍蝇
private Bitmap bmpEnemyBoos;//怪物猪头Boos
private Bitmap bmpGameWin;//游戏胜利背景
private Bitmap bmpGameLost;//游戏失败背景
private Bitmap bmpPlayer;//游戏主角飞机
private Bitmap bmpPlayerHp;//主角飞机血量
private Bitmap bmpMenu;//菜单背景
public static Bitmap bmpBullet;//子弹
public static Bitmap bmpEnemyBullet;//敌机子弹
public static Bitmap bmpBossBullet;//Boss子弹
//声明一个菜单对象
private GameMenu gameMenu;
//声明一个滚动游戏背景对象
private GameBg backGround;
//声明主角对象
private Player player;
//声明一个敌机容器
private Vector<Enemy> vcEnemy;
//每次生成敌机的时间(毫秒)
private int createEnemyTime = 50;
private int count;//计数器
//敌人数组:1和2表示敌机的种类,-1表示Boss
//二维数组的每一维都是一组怪物
private int enemyArray[][] = { { 1, 2 }, { 1, 1 }, { 1, 3, 1, 2 }, { 1, 2 }, { 2, 3 }, { 3, 1, 3 }, { 2, 2 }, { 1, 2 }, { 2, 2 }, { 1, 3, 1, 1 }, { 2, 1 },
{ 1, 3 }, { 2, 1 }, { -1 } };
//当前取出一维数组的下标
private int enemyArrayIndex;
//是否出现Boss标识位
private boolean isBoss;
//随机库,为创建的敌机赋予随即坐标
private Random random;
//敌机子弹容器
private Vector<Bullet> vcBullet;
//添加子弹的计数器
private int countEnemyBullet;
//主角子弹容器
private Vector<Bullet> vcBulletPlayer;
//添加子弹的计数器
private int countPlayerBullet;
//爆炸效果容器
private Vector<Boom> vcBoom;
//声明Boss
private Boss boss;
//Boss的子弹容器
public static Vector<Bullet> vcBulletBoss;
/**
* SurfaceView初始化函数
*/
public MySurfaceView(Context context) {
super(context);
sfh = this.getHolder();
sfh.addCallback(this);
paint = new Paint();
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
setFocusable(true);
setFocusableInTouchMode(true);
//设置背景常亮
this.setKeepScreenOn(true);
}
/**
* SurfaceView视图创建,响应此函数
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
screenW = this.getWidth();
screenH = this.getHeight();
initGame();
flag = true;
//实例线程
th = new Thread(this);
//启动线程
th.start();
}
/*
* 自定义的游戏初始化函数
*/
private void initGame() {
//放置游戏切入后台重新进入游戏时,游戏被重置!
//当游戏状态处于菜单时,才会重置游戏
if (gameState == GAME_MENU) {
//加载游戏资源
bmpBackGround = BitmapFactory.decodeResource(res, R.drawable.background);
bmpBoom = BitmapFactory.decodeResource(res, R.drawable.boom);
bmpBoosBoom = BitmapFactory.decodeResource(res, R.drawable.boos_boom);
bmpButton = BitmapFactory.decodeResource(res, R.drawable.button);
bmpButtonPress = BitmapFactory.decodeResource(res, R.drawable.button_press);
bmpEnemyDuck = BitmapFactory.decodeResource(res, R.drawable.enemy_duck);
bmpEnemyFly = BitmapFactory.decodeResource(res, R.drawable.enemy_fly);
bmpEnemyBoos = BitmapFactory.decodeResource(res, R.drawable.enemy_pig);
bmpGameWin = BitmapFactory.decodeResource(res, R.drawable.gamewin);
bmpGameLost = BitmapFactory.decodeResource(res, R.drawable.gamelost);
bmpPlayer = BitmapFactory.decodeResource(res, R.drawable.player);
bmpPlayerHp = BitmapFactory.decodeResource(res, R.drawable.hp);
bmpMenu = BitmapFactory.decodeResource(res, R.drawable.menu);
bmpBullet = BitmapFactory.decodeResource(res, R.drawable.bullet);
bmpEnemyBullet = BitmapFactory.decodeResource(res, R.drawable.bullet_enemy);
bmpBossBullet = BitmapFactory.decodeResource(res, R.drawable.boosbullet);
//爆炸效果容器实例
vcBoom = new Vector<Boom>();
//敌机子弹容器实例
vcBullet = new Vector<Bullet>();
//主角子弹容器实例
vcBulletPlayer = new Vector<Bullet>();
//菜单类实例
gameMenu = new GameMenu(bmpMenu, bmpButton, bmpButtonPress);
//实例游戏背景
backGround = new GameBg(bmpBackGround);
//实例主角
player = new Player(bmpPlayer, bmpPlayerHp);
//实例敌机容器
vcEnemy = new Vector<Enemy>();
//实例随机库
random = new Random();
//---Boss相关
//实例boss对象
boss = new Boss(bmpEnemyBoos);
//实例Boss子弹容器
vcBulletBoss = new Vector<Bullet>();
}
}
/**
* 游戏绘图
*/
public void myDraw() {
try {
canvas = sfh.lockCanvas();
if (canvas != null) {
canvas.drawColor(Color.WHITE);
//绘图函数根据游戏状态不同进行不同绘制
switch (gameState) {
case GAME_MENU:
//菜单的绘图函数
gameMenu.draw(canvas, paint);
break;
case GAMEING:
//游戏背景
backGround.draw(canvas, paint);
//主角绘图函数
player.draw(canvas, paint);
if (isBoss == false) {
//敌机绘制
for (int i = 0; i < vcEnemy.size(); i++) {
vcEnemy.elementAt(i).draw(canvas, paint);
}
//敌机子弹绘制
for (int i = 0; i < vcBullet.size(); i++) {
vcBullet.elementAt(i).draw(canvas, paint);
}
} else {
//Boos的绘制
boss.draw(canvas, paint);
//Boss子弹逻辑
for (int i = 0; i < vcBulletBoss.size(); i++) {
vcBulletBoss.elementAt(i).draw(canvas, paint);
}
}
//处理主角子弹绘制
for (int i = 0; i < vcBulletPlayer.size(); i++) {
vcBulletPlayer.elementAt(i).draw(canvas, paint);
}
//爆炸效果绘制
for (int i = 0; i < vcBoom.size(); i++) {
vcBoom.elementAt(i).draw(canvas, paint);
}
break;
case GAME_PAUSE:
break;
case GAME_WIN:
canvas.drawBitmap(bmpGameWin, 0, 0, paint);
break;
case GAME_LOST:
canvas.drawBitmap(bmpGameLost, 0, 0, paint);
break;
}
}
} catch (Exception e) {
// TODO: handle exception
} finally {
if (canvas != null)
sfh.unlockCanvasAndPost(canvas);
}
}
/**
* 触屏事件监听
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
//触屏监听事件函数根据游戏状态不同进行不同监听
switch (gameState
没有合适的资源?快使用搜索试试~ 我知道了~
Android_j2me.rar_android_j2me android_jbox2d.jar
共1722个文件
class:551个
png:276个
java:205个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 199 浏览量
2022-09-22
21:46:46
上传
评论
收藏 18.57MB RAR 举报
温馨提示
JAVA 开发游戏,给予android 操作系统开发设计,初学者可以参考引用。
资源推荐
资源详情
资源评论
收起资源包目录
Android_j2me.rar_android_j2me android_jbox2d.jar (1722个子文件)
resources.ap_ 1.29MB
resources.ap_ 664KB
resources.ap_ 640KB
resources.ap_ 270KB
resources.ap_ 142KB
resources.ap_ 100KB
resources.ap_ 51KB
resources.ap_ 31KB
resources.ap_ 23KB
resources.ap_ 21KB
resources.ap_ 19KB
resources.ap_ 19KB
resources.ap_ 15KB
resources.ap_ 13KB
resources.ap_ 12KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 11KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
resources.ap_ 10KB
MediaPlayerProject.apk 1.29MB
BallGame.apk 749KB
PlaneGame.apk 652KB
TabProject.apk 274KB
MainActivity.apk 226KB
BuildHouse.apk 226KB
ClipCanvasProject.apk 104KB
TraverseMyBody.apk 100KB
CreateMouseJoint.apk 92KB
CreatePulleyJoint.apk 92KB
CreateGearJoint.apk 92KB
CreatePrismaticJoint.apk 92KB
AabbGetBodies.apk 92KB
CreateDistanceJoint.apk 92KB
CreatePrismaticJoint.apk 92KB
CreateRevoluteJoint.apk 92KB
CreateMyPolygon.apk 92KB
BodyCollision.apk 92KB
BodyForce.apk 92KB
CreateCircle.apk 92KB
TraverseBody.apk 92KB
CreatePolygon.apk 91KB
Box2dWorld.apk 91KB
FrameMovie.apk 56KB
SoundPoolProject.apk 35KB
PlayerProject.apk 28KB
ClipBitmapMovie.apk 25KB
ImageButtonProject.apk 23KB
MainActivity.apk 21KB
BitmapMovie.apk 20KB
NinePatchProject.apk 18KB
StreamProject.apk 16KB
SensorProject.apk 16KB
ListViewProject_2.apk 16KB
MoreRectCollision.apk 16KB
GestureProject.apk 15KB
共 1722 条
- 1
- 2
- 3
- 4
- 5
- 6
- 18
资源评论
邓凌佳
- 粉丝: 65
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功