基于Android的疯狂足球游戏源代码。
相关文件下载在Linux公社的1号FTP服务器里,下载地址:
用户名:www.linuxidc.com
密码:www.muu.cc
在 2011年LinuxIDC.com\10月\10月\基于Android的疯狂足球游戏源代码
示例:
package wyf.wpf; //声明包语句
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
/*
* Ball类是一个继承自Thread类的线程类。其主要的功能首先是封装足球有关的信息,如坐标点、方向、移动速度等。
* 其次,该类也负责移动足球的位置,进行碰撞检测,这些功能主要是通过run方法来实现的,run方法中主要有两个方法
* move和checkCollision,前者负责根据足球的方向(16种之一)来的移动足球的位置。后者用于进行碰撞检测,查看
* 是否足球碰到AI或玩家的运动员,是否遇到边界,是否遇到一些Bonus如冰冻小球等等。该类还有一个drawSelf方法,
* 用于在游戏View的myDraw方法中调用以绘制自己。
*/
public class Ball extends Thread{
int x; //足球中心的x坐标
int y; //足球中心的y坐标
int direction=-1; //足球的运动方向,从0到15顺时针代表从向上开始的16个方向,写书的时候画个图贴上去
int velocity=20; //足球的运动速率
int maxVelocity = 20; //最大运动速率
int minVelocity = 5; //最小运动速率
int ballSize = 10; //足球大小
Matrix matrix; //Matrix对象,用来实现足球图片的翻转效果
Bitmap bmpBall; //足球的图片
GameView father; //FieldView对象引用
float acceleration=-0.10f; //足球在无人撞击时速度会逐渐衰减
boolean isStarted; //比赛是否开始
boolean isPlaying; //比赛是否正在进行
float sin675=0.92f; //特定角度正弦值,用于计算移动的像素个数
float sin225=0.38f; //特定角度正弦值,用于计算移动的像素个数
float sin45=0.7f; //特定角度正弦值,用于计算移动的像素个数
int sleepSpan = 50; //休眠时间
float changeOdd = 0.6f; //变向的几率
int lastKicker; //最近的这一脚是谁踢的,0代表自己,8代表AI
public Ball(GameView father){
super.setName("##-Ball"); //设置线程名字,用于调试用
this.father = father;
Resources r = father.getContext().getResources(); //获取Resources对象
bmpBall = BitmapFactory.decodeResource(r, R.drawable.ball);//设置图片
matrix = new Matrix();
isStarted = true; //设置循环变量
isPlaying = true; //
}
//线程的任务方法
public void run(){
while(isStarted){
while(isPlaying){
//移动足球
move();
//碰撞检测
checkCollision();
//休眠一下
try{
Thread.sleep(sleepSpan);
}
catch(Exception e){
e.printStackTrace();
}
}
try{
Thread.sleep(500);
}
catch(Exception e){ e.printStackTrace();
}
}
}
//绘制足球图片
public void drawSelf(Canvas canvas){
Bitmap bmp=null;