Android编程实现贪吃蛇游戏,Android制作贪吃蛇游戏
网络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 stub
game.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 stub
while(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 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 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.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--;
else
k.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;
}
}
运行结果:
鼠标点击虚拟机屏幕蛇体变长,点击虚拟机方向键改变蛇体移动方向。
Android编程实现贪吃蛇游戏,Android制作贪吃蛇游戏相关推荐
- Love2D游戏引擎制作贪吃蛇游戏
预览游戏 love2d游戏引擎重要函数 详情: love.load:当游戏开始时被调用且仅调用一次 love.draw:回调函数,每帧更新一次游戏画面 love.update:回调函数,每帧更新一次游 ...
- 次时代游戏的制作流程以及游戏美术需要掌握哪些基本软件
我想很多接触游戏开发引擎的小伙伴们应该对"次世代建模"这个词都很熟悉,也有可能你是第一次接触这个词,觉得这是一门很复杂的技术,其实只要你用对方法去学习,就会没有那么复杂了. 本文在 ...
- android编程:调节视频画面分辨率,Android编程实现屏幕自适应方向尺寸与分辨率的方法...
本文实例讲述了Android编程实现屏幕自适应方向尺寸与分辨率的方法.分享给大家供大家参考,具体如下: Android 屏幕自适应方向尺寸与分辨率,包括屏幕界面布局.多分辨率支持.获取屏幕尺寸.屏幕横 ...
- android 编程一个程序实现方法,Android中一个应用实现多个图标的几种方式
前言 最近因为新需求需要,我的应用将有多个ICON入口..最终选择了 activity-alias,其实实现多图标有好几种方式,下面就给大家总结下,分享出来供大家参考学习: 1. 多Activity ...
- android编程用真机模拟,android编程的广播,模拟器可接受,但真机不可接受。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1.动态注册 //接受广播 IntentFilter intentFilter = new IntentFilter(); intentFilter.ad ...
- Android编程权威指南笔记3:Android Fragment讲解与Android Studio中的依赖关系,如何添加依赖关系
Android Fragment 当我在学习时,了解了Fragment词汇 Fragment是一种控制器对象,我就把所了解的简单说一下.activity可以派fragment完成一些任务,就是管理用户 ...
- matlab制作打地鼠游戏,Python制作打地鼠小游戏
原标题:Python制作打地鼠小游戏 导语 大家好,欢迎来到 Crossin的编程教室 ! 打地鼠游戏相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~ 今天就给大家分享一个 ...
- 如何用python制作五子棋游戏_Python制作打地鼠小游戏
原文链接 Python制作小游戏(二十一)mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...
- html坦克游戏,HTML5制作的坦克游戏
HTML5制作的坦克游戏 本游戏是基于HTML5开发的 网页游戏,js,css辅助开发 源码如下: 坦克大战 坦克大战(请使用IE浏览器) style="background-color:b ...
- Python小游戏——Pygame制作2048小游戏
pygame之2048小游戏 初学python,发现看网上的python理论太过枯燥. 哎嘿~~干脆直接弄个小游戏叭,一边学习,一边写代码. 备注: 1.很多地方我尽量注解,方便大家观看. 2.完整代 ...
最新文章
- matlab_矩阵的灵活操作
- C# 基于密钥的64位加密与解密方法(原创)
- 《系统集成项目管理工程师》必背100个知识点-23整体变更控制流程
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- 牛客练习赛36 Rabbit的字符串(最小表示法)
- php截取字符串,带中文,多余的省略号代替
- DataTable排序的一般方法
- Cisco路由配置命令
- tomcat-maven-plugin问题汇总
- Memcached:高性能的分布式内存缓存服务器
- linux下使用小票打印
- 微信小程序demo(新闻类)
- matlab可以做什么,matlab仿真用来干什么
- Python:实现矩阵的Schur complement舒尔补算法(附完整源码)
- 震惊了!鸿蒙又多了一种开发方式Ets,让更多的人赶上红利!
- 论文投稿指南——中国(中文EI)期刊推荐(第4期)
- JAVA毕业设计计算机类专业考研交流学习平台计算机源码+lw文档+系统+调试部署+数据库
- 到底要怎么做,才能不堵车?
- 代码报错 Uncaught TypeError: Converting circular structure to JSON
- 3dmark压力测试 linux,压榨你的电脑潜能:3DMark压力测试正式发布
热门文章
- QT自定义按钮类(自定义图片,形状,点击特效)
- [转载]美国签证敏感专业列表Technology Alert List_拔剑-浆糊的传说_新浪博客
- linux怎么用命令上传本地文件,Linux 将本地文件上传Linux服务器, 即ssh 命令上传本地文件...
- absolute 与overflow:hidden常见bug
- 论5数字的价值定位和推销策略
- 我国的居民身份证号码,由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法,并在主方法中调用方法测试结果。规则为:号码为18位,不能以数字0开头,前17位只可以是数字,
- ftp服务器设置上文件大小,ftp服务器文件上传大小设置
- JavaScript笔记 let、var和const详解
- w7计算机文件夹打开怎么设置密码,文件夹怎么设置密码,win7文件怎么加密-
- linux系统中ulimit命查看/设置堆栈空间大小