資源簡介
最近自己開發了個簡單的基于android的貪食蛇,自己覺得還不錯,不過傳到網上也賺不到什么錢,呵呵,就拿出來和大家交流交流了,這是主要的繼承了View的游戲類
代碼片段和文件信息
/**
?*?游戲主類;
?*?@author?胡飛
?*?@since?2013年5月6日15:21:33;
?*?@function?實現游戲的運行功能;
?*/
package?com.example.snakegame;
import?java.util.ArrayList;
import?java.util.Random;
import?android.annotation.SuppressLint;
import?android.content.Context;
import?android.content.Intent;
import?android.graphics.Bitmap;
import?android.graphics.Canvas;
import?android.graphics.Color;
import?android.graphics.Paint;
import?android.graphics.Rect;
import?android.graphics.drawable.BitmapDrawable;
import?android.util.DisplayMetrics;
import?android.util.Log;
import?android.view.KeyEvent;
import?android.view.MotionEvent;
import?android.view.View;
import?android.widget.Toast;
@SuppressLint({?“ParserError“?“ParserError“?“ParserError“?“ParserError“?“ParserError“?“ParserError“?“ParserError“?})
public?class?gameView??extends?View?implements?Runnable?{
????//定義contex;
?????private??Context?mContext;
????//定義標志位來確定是否刷新界面;
???private??int?STATE=1;
????//畫筆;
????????private?Paint?paint;
????????//用一個矩形來存儲食物的坐標;
????????private?PointSnake?pointFood;
????????//存儲蛇身的數組;
????????private?ArrayList?Snake=new?ArrayList();
????????//存儲蛇的運動方向;
????????private?char?decoration=‘R‘;
????????//玩家想要使蛇運動的方向;??
????????private?char?mayDecoration=‘R‘;
????????//存儲食物的個數;
????????private?int?foodCount=0;
????????private?Thread?thread;
????????/*
?????????*?存儲滑動屏幕的位置;
?????????*/
????????float?x0=0.0f;
float?y0=0.0f;
float?x1=0.0f;
float?y1=0.0f;
///////////////
????????//構造函數;
? ????public?gameView(Context?context)?{
super(context);
//?TODO?Auto-generated?constructor?stub
mContext=context;
????paint=new?Paint();
????paint.setColor(Color.GREEN);
????pointFood=new?PointSnake();
????//初始化蛇身;
initSnake();
????//啟動線程;;;
???//new?Thread(this).start();
thread=new?Thread(this);
thread.start();
}
???????????????
?
//顯示;
@SuppressLint(“ParserError“)
@Override
protected?void?onDraw(Canvas?canvas)?{
//?TODO?Auto-generated?method?stub
???//畫出地圖;
?????drawWall(canvaspaint);
?????//畫出得分;
?????drawScore(canvas);
????//如果沒有食物則產生食物;
????if(foodCount<=0)
????????{
???????????createFood(canvaspaint);
???????????
????????}
????//繼續畫食物;
????if(foodCount==1)
????{?
??????paint.setColor(Color.YELLOW);
??????canvas.drawRect(pointFood.x1?pointFood.y1?pointFood.x2?pointFood.y2?paint);
????}
????
????
????/*
?????*?向右走;
?????*/
if(decoration==‘R‘)
{
/*
???? ?*?判斷是否吃到食物,下一個為食物,則吃掉食物,重新產生食物;
???? ?*/
????rightFood();
????//判斷是否吃到自己;
????isRSelf();
???? ?/////////
????isRWall();
????if(Snake.size()==1)
{
?
???? Snake.get(0).x1+=10;
???? Snake.get(0).x2+=10;
}
???if(Snake.size()>1)
????{
????//蛇身位置調整;
??????? moveIn();
????? //蛇頭右向前;
???? rigtHeadMove();
????}
???? ////////////
???? /*
???? ?*?畫出蛇身;?
???? ?*/
?drawSnake(canvaspaint);
????
評論
共有 條評論