Android制作贪吃蛇游戏

来源:互联网 发布:如何提升淘宝买家等级 编辑:程序博客网 时间:2024/04/30 10:47

 网络112 梁海亮

打开eclipse新建项目TCS。项目结构:

然后开始编写java代码:

TCSActivity.java代码:

package lianghailiang.f;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;public class TCSActivity extends Activity implements OnClickListener {gameView game;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        game=new gameView(this);        setContentView(game);        game.setOnClickListener(this);    }public void onClick(View arg0) {// TODO Auto-generated method stubgame.s.ZengZhang();}public boolean onKeyDown(int keyCode, KeyEvent event){switch(keyCode){case KeyEvent.KEYCODE_DPAD_UP:game.s.GaiBianFangXiang(1);return true;case KeyEvent.KEYCODE_DPAD_DOWN:game.s.GaiBianFangXiang(2);return true;case KeyEvent.KEYCODE_DPAD_LEFT:game.s.GaiBianFangXiang(3);return true;case KeyEvent.KEYCODE_DPAD_RIGHT:game.s.GaiBianFangXiang(4);return true;}return true;}}

gameView.java代码:

package lianghailiang.f;import android.content.Context;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.Canvas;import android.view.View;public class gameView extends View implements Runnable {Bitmap bmp;Thread thread;public She s;public gameView(Context context){super(context);bmp=Bitmap.createBitmap(600,400,Config.ARGB_8888);s=new She(30,30,3,6);thread=new Thread(this);thread.start();}public void run() {// TODO Auto-generated method stubwhile(thread!=null){this.postInvalidate();try{Thread.sleep(300);}catch(InterruptedException e){e.printStackTrace();}}}protected void onDraw(Canvas canvas){super.onDraw(canvas);s.YiDong();s.hua(bmp);canvas.drawBitmap(bmp, 0, 0, null);}}

Kuai.java:

package lianghailiang.f;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.Rect;public class Kuai {public int hang, lie;public int BianChang;public int YanSe;public void Hua(Bitmap bmp){Canvas c=new Canvas(bmp);Rect rc=new Rect(lie*BianChang, hang*BianChang,(lie+1)*BianChang,(hang+1)*BianChang);Paint paint = new Paint();paint.setColor(YanSe);paint.setStyle(Style.STROKE);paint.setStrokeWidth(2);c.drawRect(rc, paint);}}


She.java:

package lianghailiang.f;import java.util.LinkedList;import java.util.List;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;public class She {private List<Kuai> k;private int fangXiang;private int BianChang;public She(int hang,int lie,int fangxiang,int BianChang){this.fangXiang=fangxiang;this.BianChang=BianChang;k=new LinkedList<Kuai>();Kuai tou=new Kuai();tou.hang=hang;tou.lie=lie;k.add(tou);Kuai shen=new Kuai();shen.hang=tou.hang;shen.lie=tou.lie+1;k.add(shen);}public void hua(Bitmap bmp){Canvas c=new Canvas(bmp);c.drawColor(Color.BLACK);for(int i=0;i<k.size();i++){k.get(i).BianChang=BianChang;k.get(i).YanSe=Color.WHITE;k.get(i).Hua(bmp);}}public void ZengZhang(){Kuai kk=new Kuai();Kuai k1=k.get(k.size()-1);Kuai k2=k.get(k.size()-2);kk.hang=k1.hang+(k1.hang-k2.hang);kk.lie=k1.lie+(k1.lie-k2.lie);k.add(kk);}public void YiDong(){for(int i=k.size()-1;i>=1;i--){k.get(i).hang=k.get(i-1).hang;k.get(i).lie=k.get(i-1).lie;}if(fangXiang==1)k.get(0).hang--;else if(fangXiang==2)k.get(0).hang++;else if(fangXiang==3)k.get(0).lie--;elsek.get(0).lie++;}public void GaiBianFangXiang(int fx){if(fangXiang==2&&fx==1)return;if(fangXiang==1&&fx==2)return;if(fangXiang==3&&fx==4)return;if(fangXiang==4&&fx==3)return;fangXiang=fx;}}


运行结果:

鼠标点击虚拟机屏幕蛇体变长,点击虚拟机方向键改变蛇体移动方向。


 

原创粉丝点击