package wyf.wpf; //声明包语句
import java.util.ArrayList;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/*
* 该类是游戏的主视图类,负责游戏画面的绘制,菜单的绘制绘制等等
* 成员方法多为绘制方法,同时也有修改游戏数据的方法,如关卡数据等。为实现
* SurfaceHolder.Callback接口重写了一些方法
*/
public class GameView extends SurfaceView implements SurfaceHolder.Callback{
Ball ball; //小球对象
int fieldLeft=27; //球场的左边界在屏幕中的位置
int fieldRight=293; //球场的右边界在屏幕中的位置
int fieldUp = 68; //球场的上边界在屏幕中的位置
int fieldDown = 470; //球场的下边界在屏幕中的位置
int barDistance = 50; //两个摇杆的间距
int playerSize = 18; //运动员图片的大小
int maxLeftPosition = 115; //守门员最左能走到的地方=
int maxRightPosition = 205; //守门员最右能走到的地方=
int aiDirection = -1; //记录AI的运动方向,4为左,12为右=
int level=1; //游戏的难度
int MaxLevel = 3; //最高等级
int [] scores = {0,0}; //比分,前我后敌
int scoreLeft = 80; //绘制左边比分时的参考X坐标
int scoreRight = 240; //绘制右边比分时的参考X坐标
int timeCounter=0; //计时器,用于显示
int winPoint = 8; //获胜点,谁的进球数先达到该值获胜
int AIGoalLeft; //AI球门左边=
int AIGoalRight; //AI球门右边=
int myGoalLeft; //玩家的球门左边=
int myGoalRight; //玩家的球门右边=
boolean isScoredAGoal; //若进了球则暂时会置为true
boolean isGameOver; //一局比赛结束
boolean isGameWin; //是否赢了
boolean isShowDialog; //是否显示对话框
boolean isGamePassAll; //是否打赢了所有等级的比赛
ArrayList<Bonus> balLive = new ArrayList<Bonus>();//这个用于碰撞检测,里面全是活动态的Bonus=
ArrayList<Bonus> balForDraw = new ArrayList<Bonus>();//这个用于绘制,里面既有活动态,也有生效态的Bonus=
ArrayList<Bonus> balAdd = new ArrayList<Bonus>(); //存放待添加Bonus对象的临时集合=
ArrayList<Bonus> balDelete = new ArrayList<Bonus>(); //存放待删除Bonus对象的临时集合=
BonusManager bm; //BonusManager对象引用=
FootballActivity father; //FootballActivity对象引用
DrawThread dt; //后台刷屏线程
AIThread ait; //控制AI移动的线程
ArrayList<Player> alMyPlayer = new ArrayList<Player>(11); //玩家的运动员集合
ArrayList<Player> alAIPlayer = new ArrayList<Player>(11); //AI 的运动员集合
Bitmap bmpMyPlayer; //玩家的球员图片
Bitmap bmpAIPlayer; //AI的球员图片
Bitmap bmpGoalBanner; //进球后显示的图片
Bitmap [] bmpScores; //表示比分的数字图片
Bitmap bmpWinBanner; //游戏胜利的图片
Bitmap bmpWinText; //游戏胜利的文字
Bitmap bmpLoseBanner; //游戏失败的图片
Bitmap bmpLoseText; //游戏失败的文字
Bitmap bmpPassAll; //打赢所有比赛提示的图片
Bitmap bmpMyClub; //记录玩家所选的俱乐部
Bitmap bmpAIClub; //记录AI的俱乐部
Bitmap bmpMenu; //菜单图片
Bitmap bmpDialog; //对话框图片
Bitmap bmpBackField; //球场背景图片
//Rect对象,用来与点击事件发生的位置进行匹配
Rect rectMenu = new Rect(134,0,186,60); //代表菜单的矩形框,
Rect rectYesToDialog = new Rect(75,271,100,292); //代表返回主菜单对话框中的是按钮
Rect rectNoToDialog = new Rect(223,271,248,292); //代表返回主菜单对话框中的否按钮
int clubID;//存放俱乐部logo的图片ID
//构造器,初始化成员变量
public GameView(FootballActivity father,int clubID) {
super(father); //调用父类构造器
getHolder().addCallback(this);//添加Callback接口
this.father = father;
this.clubID = clubID;//获得俱乐部logo
ball = new Ball(this); //创建足球线程
initPlayerInstance();//初始化双方队员
initGame();//初始化游戏
initBitmap(father); //初始化图片资源
ait = new AIThread(this);//创建AI分析线程
bm = new BonusManager(this);//初始化BonusManager
dt = new DrawThread(this,getHolder());//创建后台刷屏线程
}
//启动线程
public void startGame(){
ait.start(); //启动AI分析线程
bm.start(); //启动BonusManager线程
ball.start(); //启动足球线程
}
//初始化位图
public void initBitmap(Context context){
Resources r = context.getResources(); //获得Resources对象
bmpMyPlayer = BitmapFactory.decodeResource(r,R.drawable.player18); //玩家球员图片初始化
bmpAIPlayer = BitmapFactory.decodeResource(r, R.drawable.ai_player); //AI球员图片初始化
bmpScores = new Bitmap[10]; //数字图片初始化
bmpScores[0] = BitmapFactory.decodeResource(r, R.drawable.digit_0); //数字图片0
bmpScores[1] = BitmapFactory.decodeResource(r, R.drawable.digit_1); //数字图片1
bmpScores[2] = BitmapFactory.decodeResource(r, R.drawable.digit_2); //数字图片2
bmpScores[3] = BitmapFactory.decodeResource(r, R.drawable.digit_3); //数字图片3
bmpScores[4] = BitmapFactory.decodeResource(r, R.drawable.digit_4); //数字图片4
bmpScores[5] = BitmapFactory.decodeResource(r, R.drawable.digit_5); //数字图片5
bmpScores[6] = BitmapFactory.decodeResource(r, R.drawable.digit_6); //数字图片6
bmpScores[7] = BitmapFactory.decodeResource(r, R.drawable.digit_7); //数字图片7
bmpScores[8] = BitmapFactory.decodeResource(r, R.drawable.digit_8); //数字图片8
bmpScores[9] = BitmapFactory.decodeResource(r, R.drawable.digit_9); //数字图片9
bmpGoalBanner = BitmapFactory.decodeResource(r, R.drawable.game_goal); //进球后的标语
bmpWinText = BitmapFactory.decodeResource(r, R.drawable.game_win); //比赛胜利时的提示文字
bmpLoseBanner = BitmapFactory.decodeResource(r, R.drawable.game_over); //比赛失败时的提示图片
bmpLoseText = BitmapFactory.decodeResource(r, R.drawable.game_lose); //比赛失败时的提示文字
Matrix m = new Matrix(); //创建Matrix对象,用于裁剪图片以适合游戏界面中俱乐部图片的大小
Bitmap bmpTemp = BitmapFactory.decodeResource(r,(int) clubID); //拿到指定的俱乐部图片
int width = bmpTemp.getWidth(); //获得俱乐部图片宽度
int height = bmpTemp.getHeight(); //获取俱乐部图片高度
m.postScale(60.0f/width,60.0f/height); //设置Matrix
bmpMyClub = Bitmap.createBitmap(bmpTemp, 0, 0, width,height , m, true); //玩家俱乐部logo
bmpAIClub = BitmapFactory.decodeResource(r, R.drawable.ai_club); //AI的俱乐部logo
bmpMenu = BitmapFactory.decodeResource(r, R.drawable.menu);//菜单按钮图片
bmpDialog = BitmapFactory.decodeResource(r, R.drawable.dialog); //菜单对话框
bmpBackField = BitmapFactory.decodeResource(r, R.drawable.field);//足球场背景
bmpPassAll = BitmapFactory.decodeResource(r, R.drawable.game_pass); //打赢所有比赛的提示图片
}
//初始化游戏参数,通关后会调用这个方法,包含initRound方法
public void initGame(){
scores[0]=0; //玩家比分归零
scores[1]=0; //AI比分归零
AIGoalLeft = maxLeftPosition; //初始化AI的球门左边坐标
AIGoalRight = maxRightPosition; //初始化AI的球门右边坐标
myGoalLeft = maxLeftPosition; //初始化玩家的球门左边坐标
myGoalRight = maxRightPosition; //初始化玩家的球门左边坐标
initRound();
}
//屏幕渲染方法
protected void doDraw(Canvas canvas) {
canvas.drawBitmap(bmpBackField, 0, 0, null); //画球场背景
//画出小球
ball.drawSelf(canvas);
//画出双方玩家
drawBothPlayers(canvas);
//画出比分
drawScores(canvas);
//检查并绘制活的Bonus
checkAndDrawBonus(canvas);
//画出双方的logo
drawLogo(canvas);
//画出菜单
canvas.drawBitmap(bmpMenu, 134, 0, null);
if(isScoredAGoal){ //如果进了一球,绘制进球图片
canvas.drawBitmap(bmpGoalBanner, (fieldLeft+fieldRight)/2-bmpGoalBanner.getWidth()/2, (fieldUp+fieldDown)/2-bmpGoalBanner.getHeight()/2, null);
timeCounter++; //每画一次,计时器增加
if(timeCounter > 50){ //如果计时器增加到50
isScoredAGoal = false; //设置进球标志位为false
initRound(); //初始化游戏回合
timeCounter = 0; //清空计时器
ball.isPlaying = true; //小球运动标志位设为true
}
}
if(isGameOver){//一场比赛结束,根据胜负,绘制相应图片
if(isGamePassAll){ //是否打赢
没有合适的资源?快使用搜索试试~ 我知道了~
android入门文档+游戏代码
共489个文件
png:185个
class:146个
java:49个
5星 · 超过95%的资源 需积分: 9 462 下载量 52 浏览量
2012-03-24
12:04:42
上传
评论 9
收藏 49.79MB RAR 举报
温馨提示
android 入门电子文档 android SDK 中文开发文档 ,基础知识卷 深入浅出android ,系统移植技术卷 新手开发卷,应用技巧卷 ,API详解 环境搭建手册 2.3用户手册 .... 代码:数独游戏,水果连连看,足球游戏,google地图,天气
资源推荐
资源详情
资源评论
收起资源包目录
android入门文档+游戏代码 (489个子文件)
resources.ap_ 4.84MB
resources.ap_ 1.21MB
resources.ap_ 407KB
resources.ap_ 21KB
Sudokuv4.apk 4.85MB
lianliankan.Android.apk 1.23MB
CrazyFootBall.apk 430KB
WeatherDemo.apk 35KB
proguard.cfg 1KB
GameView.class 12KB
GameView.class 12KB
GameView.class 10KB
GameView.class 10KB
WelActivity.class 9KB
Ball.class 8KB
Ball.class 8KB
PuzzleView.class 7KB
BoardView.class 7KB
Game.class 6KB
WelActivity.class 5KB
FootballActivity.class 5KB
FootballActivity.class 5KB
GameView$RefreshHandler.class 5KB
BoardView.class 5KB
DBAdapter.class 5KB
GameView$RefreshTime.class 5KB
WelcomeView.class 5KB
WelcomeView.class 5KB
WeatherActivity.class 4KB
WeatherService.class 4KB
WeatherAdapter.class 4KB
Sudoku.class 4KB
SetupActivity.class 4KB
LoadingView.class 3KB
LoadingView.class 3KB
MyDialog.class 3KB
SoundPlay.class 3KB
MyDialog.class 3KB
SmsAdapter.class 3KB
Keypad.class 3KB
LargerGoalBonus.class 3KB
LargerGoalBonus.class 3KB
IceBonus.class 3KB
IceBonus.class 3KB
DBAdapter$DBOpenHelper.class 2KB
R$drawable.class 2KB
CustomGallery.class 2KB
CustomGallery.class 2KB
SmsReceiver.class 2KB
R$drawable.class 2KB
R$drawable.class 2KB
R$id.class 2KB
BonusManager.class 2KB
BonusManager.class 2KB
Bonus.class 2KB
Bonus.class 2KB
HistoryActivity.class 2KB
R.class 2KB
R$raw.class 2KB
R$string.class 2KB
SoundPlay.class 2KB
WeatherDemo.class 2KB
R$anim.class 2KB
PlayerMoveThread.class 2KB
PlayerMoveThread.class 2KB
WelActivity$1.class 2KB
R$layout.class 1KB
LoadingDrawThread.class 1KB
LoadingDrawThread.class 1KB
Weather.class 1KB
DrawThread.class 1KB
DrawThread.class 1KB
R$style.class 1KB
R$id.class 1KB
R$attr.class 1KB
WelcomeDrawThread.class 1KB
WelcomeDrawThread.class 1KB
GameView$RefreshHandler.class 1KB
R$drawable.class 1KB
WelcomeThread.class 1KB
WelcomeThread.class 1KB
GameView$RefreshTime.class 1KB
About.class 1KB
Prefs.class 1KB
FootballActivity$1.class 1KB
FootballActivity$1.class 1KB
R$string.class 1KB
Music.class 1019B
WeatherService$1.class 1011B
MyDialog$1.class 988B
SetupActivity$2.class 956B
AIThread.class 919B
AIThread.class 919B
R$id.class 919B
SimpleSms.class 882B
Sudoku$1.class 873B
R$id.class 869B
Bonus$2.class 862B
Bonus$2.class 862B
MyDialog$2.class 834B
共 489 条
- 1
- 2
- 3
- 4
- 5
Android_activity
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页