- 浏览: 116611 次
- 性别:
- 来自: 厦门
最新评论
-
人可德福:
非常感谢附上源码包的楼主
实例16--心理测试 -
一口三个汉堡:
ljt122000 写道呵呵....看来大多数搞程序的被切图弄 ...
移动开发那点事-抱怨的移动开发程序员 -
ljt122000:
呵呵....看来大多数搞程序的被切图弄得有点郁闷啊...不管是 ...
移动开发那点事-抱怨的移动开发程序员 -
一口三个汉堡:
半夜透凉清 写道追求自己想要的生活,我是该羡慕你不断的走,跑, ...
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长! -
xdwangiflytek:
楼主发现自己的成长才是最可贵的
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长!
随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有些时间是在弄其他的,随着代码量的增加,要更加理解源代码的结构,我这次采用uml弄出他们的各个类图和结构,这样让我更了解原作者的思想...然后再用android的方法的实现,当然因为都是java开发的,有些类是直接用的,这次还是使用了我本来的写的android_midp包,在androidSprite类中添加了碰撞方法.
下面是效果图:
MainView.java
package com.wjh.demon_17; import java.util.Random; import com.wjh.midp_me.GameView; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Log; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.SurfaceHolder.Callback; public class MainView extends SurfaceView implements Callback,Runnable{ public static final int GAME_UI = 0; //进入用户界面 public static final int GAME_GAMING = 1; //进行游戏 public static final int GAME_END = 2; //游戏结束 public static final int GAME_STATE_NUM = 3; //状态总数 private int m_nState = GAME_UI; //存储当前的游戏状态 private boolean m_bRunning; //控制线程运行 private MyBack m_Back; //游戏背景 private MyUI m_UI; //用户界面 private ChickSprite m_Chick; //管理小鸡对象 private GoodsSprite m_Goods[]; //管理物品对象 private int m_nScore = 0; //当前得分 private int m_nTime = 60 * 10; //游戏总时间 private Random m_Random; private int screenStartX = 0;//游戏界面开始坐标X private int screenStartY = 0;//游戏界面开始坐标Y private int screenWidth = 0;//游戏界面宽度 private int screenHeight =0;//游戏界面高度 private Context context ; int keyState = 0; Thread gameThread = null; SurfaceHolder holder = null; public MainView(Context context) { super(context); // TODO Auto-generated constructor stub this.context = context; setFocusable(true); setFocusableInTouchMode(true); holder = this.getHolder(); holder.addCallback(this); } private void initView() { m_Random = new Random(); m_Back = new MyBack(context); m_UI = new MyUI(context); screenStartX = (getWidth() - m_Back.getBackImageWidth())/2; screenStartY = (getHeight()-m_Back.getBackImageHeight())/2; screenWidth = screenStartX+m_Back.getBackImageWidth(); screenHeight = screenStartY+m_Back.getBackImageHeight(); try{ //读取小鸡精灵图片,并设置小鸡的初始位置 Bitmap img = BitmapFactory.decodeResource(getResources(), R.drawable.chick); m_Chick = new ChickSprite( img, 31, 29); m_Chick.setRefPixelPosition( getWidth() / 2, screenHeight- 18 ); //读取物品图片,屏幕上最多同时掉落6个物品 img = BitmapFactory.decodeResource(getResources(), R.drawable.goods); m_Goods = new GoodsSprite[6]; for( int n = 0; n < m_Goods.length; n ++ ) m_Goods[n] = new GoodsSprite( img, 19, 19 ); } catch (Exception ex){} setState(GAME_UI); //设置游戏状态 } private void setState( int state ){ //设置当前的游戏状态 if( state < 0 || state >= GAME_STATE_NUM ) return; m_nState = state; } @Override public void run() { // TODO Auto-generated method stub while(m_bRunning) { input(); logic(); doDraw(); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //开始游戏主线程 public void start() { if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); m_bRunning = true; } } //停止游戏主线程 public void stop() { m_bRunning = false; if(gameThread != null) { try { gameThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private int getKeyStates() { return keyState; } private void setKeyStates(int keyStates) { this.keyState = keyStates; } //输入判断 public void input() { //根据不同的游戏状态,处理按键操作 int keyStates = getKeyStates(); switch( m_nState ){ case GAME_UI: //进入用户界面 m_UI.Input(keyStates); if( m_UI.getState() == MyUI.UI_HIDE ) //当用户界面被隐藏时进入游戏 setState(GAME_GAMING); break; case GAME_GAMING: //进入游戏 if( m_nTime <= 0 ) //如果游戏超时 return; m_Chick.Input(keyStates,screenStartX,screenStartY,screenWidth,screenStartY); break; } } //逻辑判断 public void logic() { //根据不同的游戏状态,处理逻辑操作 switch( m_nState ){ case GAME_UI: //进入用户界面 break; case GAME_GAMING: //进入游戏 m_Chick.Logic(); for( int n = 0; n < m_Goods.length; n ++ ) m_Goods[n].Logic(screenHeight-10); Collides(); //碰撞检测 CreateGoods(); //随机生成新物品 m_nTime --; if( m_nTime <= 0 ) //如果游戏超时 setState(GAME_END); break; } } private void Collides(){ //碰撞检测 for( int n = 0; n < m_Goods.length; n ++ ){ if( m_Chick.collidesWith(m_Goods[n]) ) {//如果小鸡与物品发生碰撞,即小鸡接到了物品 switch( m_Goods[n].getType() ){ case GoodsSprite.GODDS_GOLD: //接到金元宝 m_nScore += 5; //增加5个积分点 break; case GoodsSprite.GODDS_DIAMOND: //接到钻石 m_nScore += 10; //增加10个积分点 break; case GoodsSprite.GODDS_FRUIT: //接到圆形水果会被砸倒 m_Chick.setState( ChickSprite.CHICK_DOWN ); break; } m_Goods[n].setVisible(false); //让物品消失 } } } private void CreateGoods(){ //随机产生新物品 //以1比20的概率产生新物品 int rand = m_Random.nextInt() % 10; //rand在-10~10之间 if( rand != 0 ) return; for( int n = 0; n < m_Goods.length; n ++ ){ if( m_Goods[n].isVisible() == false ){ //随机设置新物品的种类及初始位置 int type = Math.abs( m_Random.nextInt()); type = type % GoodsSprite.GODDS_TYPE_NUM; m_Goods[n].setType(type); int x = m_Random.nextInt() % (screenWidth-screenStartX-10); x = Math.abs(x)+screenStartX; m_Goods[n].StartDrop( x,screenStartY+10); break; } } } public void doDraw() { Canvas c = null; try { c = holder.lockCanvas(); synchronized (holder) { paint(c); } }finally{ if(c != null) { holder.unlockCanvasAndPost(c); } } } //画图 public void paint(Canvas canvas) { //用黑色清屏 Paint backpaint = new Paint(); backpaint.setColor(Color.BLACK); canvas.drawRect(0, 0, getWidth(), getHeight(), backpaint); Paint forePaint = new Paint(); forePaint.setColor(Color.RED); forePaint.setTextSize(20); switch( m_nState ){ case GAME_UI: //显示标题界面 m_UI.Paint(canvas, forePaint,getWidth(), getHeight()); break; case GAME_GAMING: //显示游戏画面 m_Back.Paint(canvas, forePaint,getWidth(), getHeight()); m_Chick.paint(canvas,forePaint); for( int n = 0; n < m_Goods.length; n ++ ) m_Goods[n].paint(canvas,forePaint); //显示文字信息 StringBuffer strText = new StringBuffer(); strText.append("Time:"); strText.append(m_nTime / 10); strText.append(" Score:"); strText.append(m_nScore); canvas.drawText( strText.toString(),20,20,forePaint); break; case GAME_END: //显示结束信息 m_Back.Paint(canvas,forePaint, getWidth(), getHeight()); StringBuffer strEndText = new StringBuffer(); strEndText.append("游戏结束,本次得分:"); strEndText.append(m_nScore); canvas.drawText( strEndText.toString(), 20, getHeight()/2,forePaint ); break; } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub initView(); start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub stop(); } float x1 = 0; float x2 = 0; @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub switch(event.getAction()) { case MotionEvent.ACTION_DOWN: setKeyStates(GameView.ACTION_FIRE); x1 = event.getX(); x2 = 0; break; case MotionEvent.ACTION_UP: x2 =event.getX(); if(x2-x1>50) { setKeyStates(GameView.ACTION_RIGHT); }else if(x1-x2>50) { setKeyStates(GameView.ACTION_LEFT); } x1= 0; x2 = 0; break; default : break; } return true; } }
源代码:Demon_17.rar
apk文件(后缀改为apk):Demon_17.zip
- Demon_17.zip (41.1 KB)
- 下载次数: 6
- Demon_17.rar (137.7 KB)
- 下载次数: 12
发表评论
-
android-单独开启闪光灯方法--适用于moto手机
2011-10-14 10:11 6958代码来自于http://code.google.com/p/s ... -
android线性布局布局的layout_weight
2011-10-08 16:23 1692对于LinearLayout的layout_weight属性, ... -
android-xml文件解析教程
2011-09-21 00:32 2132在讨论群里里面有人在问xml的解析方法,我就弄了个简单的d ... -
实例16--心理测试
2011-09-01 11:59 2122隔了两个月,又重新开 ... -
实例-15---猜数字
2011-06-23 23:48 1386经典游戏,猜数字。各种不解释,因为最近发生了一些事情,所以 ... -
实例14---不准+弱智的生物钟
2011-06-19 12:06 1186这个例子在java me主要是演示form的使用,在and ... -
实例13---点击速度测试机
2011-06-18 00:15 1097在原java me中通过这个例子是想要讲解RecordSt ... -
实例12--会动的地图
2011-06-16 23:00 1299前面已经出了一个展示地图的例子,这个例子主要运用了将地图的 ... -
实例11--播放按键声音
2011-06-13 11:35 7295实例11播放按键声音,在java me中有playTone ... -
实例10--不搭的跳舞机
2011-06-10 23:32 1776还是要重申一遍,因为只是转化,所以原j2me的问题,我不会 ... -
android的Sprite,TiledLayer,LayerManager
2011-06-08 10:42 3354因为android没有提供这些,而我要把j2me的一本游戏 ... -
实例9---我的地图
2011-06-08 10:18 1163实例9,在j2me中是使用了图层管理和地图图层,在andr ... -
实例8--《很幼稚的‘小’鸡快跑》
2011-06-04 22:08 1441实例8--《小鸡快跑》,原书用的是java me 提供的s ... -
实例7---android 版Sprite代码
2011-06-03 23:38 3003因为android 没有提供sp ... -
实例6--文字滚屏
2011-06-02 23:59 1120这个实例的本意展示j2me的字体,和滚屏的实现。我只实现了 ... -
实例5--自动换行(修订版)
2011-06-02 00:13 2126这个实例主要是运用字体的只是,但是android自带就几种 ... -
实例4---拼单词游戏
2011-06-01 00:02 1424这个第四个实例,我只是单纯的把j2me的代码换成andro ... -
实例3--使用surfaceView
2011-05-30 19:55 1389在那本书用的是GameCanvas,我就用surfaceVi ... -
实例2---获得按键值
2011-05-29 00:08 1178《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出M ... -
《java手机游戏50例》转成android版。。--游戏View框架代码
2011-05-28 20:48 3623这学期我们班教j2me游戏开发,教材是《java游戏50例 ...
相关推荐
基于S7-300PLC与MCGS6.2的饮料罐装生产线自动化控制系统设计,包含仿真、程序、IO表与电气原理,实现自动操作、灌装报警及瓶数记录功能。,基于PLC的饮料罐装生产线控制系统设计。 S7-300PLC MCGS6.2仿真 仿真,程序,IO表,电气原理图,6500字说明。 实现功能有: (1)系统通过开关设定为自动操作模式,一旦启动,则传送带的驱动电机启动并一直保持到停止开关动作或罐装设备下的传感器检测到一个瓶子时停止;瓶子装满饮料后,传送带驱动电机必须自动启动,并保持到又检测到一个瓶子或停止开关动作。 (2)当瓶子定位在灌装设备下时,停顿1秒,罐装设备开始工作,灌装过程为5秒钟,罐装过程应有报警显示,5秒后停止并不再显示报警。 (2)用两个传感器和若干个加法器检测并记录空瓶数和满瓶数,一旦系统启动,必须记录空瓶和满瓶数,设最多不超过99999999瓶。 (4)可以手动对计数器清零(复位)。 ,关键词:S7-300PLC; MCGS6.2仿真; 传送带驱动电机; 传感器检测; 瓶装; 空瓶数; 满瓶数; 报警显示; 自动操作模式; 灌装设备。,基于S7-300PLC的饮料罐装
python加密货币时间序列预测源码+数据集-最新出炉 加密货币分析: 对各种加密货币的数据进行分析和研究。可能会使用到从各种来源收集的数据,包括但不限于加密货币的价格、市值、交易量、交易时间等信息。 探索加密货币市场的趋势和模式,例如价格的波动情况、不同加密货币之间的相关性等。 数据处理与操作: 可能使用 Python 语言(Kaggle 上常用的数据分析语言),并运用一些数据处理和分析的库,如 pandas 用于数据的读取、清洗、整理和转换操作,将原始的加密货币数据转换为更易于分析的格式。 可视化展示: 通过可视化工具,如 matplotlib 或 seaborn 库,将加密货币的信息以图表的形式展示出来,以帮助直观地理解数据中的关系和趋势。 统计分析或预测: 可能会进行一些基本的统计分析,如计算加密货币价格的均值、中位数、标准差等统计量,以描述数据的特征。 或者使用机器学习或时间序列分析的方法对加密货币的价格进行预测,根据历史数据预测未来价格走势。 例如,使用 scikit-learn 进行简单的回归分析: 数据挖掘与特征提取: 挖掘加密货币数据中的特征,如找出影响价格的关键因素,对数据中的特征进行筛选和提取,以帮助更好地理解加密货币的市场行为。
类和对象、继承、封装、多态、接口、异常
gee python相关教程
夜间灯光强度(平均灯光强度)的高低反映了一个地区城市化发展的水平,平均灯光强度越高,说明该地区城市群越多,城市化程度越高。夜间灯光数据现在越来越广泛地应用于经济增长分析、经济地理、城市经济学、数字经济等众多领域。 本数据包括三套: [1]中国类DMSP-OLS灯光数据1992-202 [2]中国超长序列灯光数据1984-2020 [3]全球类NPP-VIIRS夜间灯光数据2000-2022 包括:全国各省、市、县夜间灯光数据 矫正后夜间灯光数据 细分:标准差、平均值、总值、最大值和最小值
工程项目总监绩效考核表
首先解释一下什么叫转移支付。其实,这和养老金的中央调剂是一样的。 每年,地方都要向中央缴纳财政。而中央又要根据各地方的财政实力,给予转移支付。比如一些经济弱省,本身财政收入就不够支出的,还得上交一部分给中央,怎么维持财政运转?由于各省市直接的财政收入能力存在差异,中央为实现各个地方的公共服务水平平等,于是便有了财政转移支付制度。 简单理解就是富省养穷省。 2022年全国一般预算内财政收入203703亿元,给地方转移支付了97144.75亿元,转移支付数额创下新高。
基于门控卷积和堆叠自注意力的离线手写汉字识别算法研究.pdf
【数据介绍】 作为第二大人类部门用水,高质量的工业用水格网数据对于水资源研究和管理至关重要。中国工业用水格网数据(China Industrial Water Withdrawal dataset, CIWW)基于超过 40 万家企业数据、月度工业产品产量数据和连续工业用水统计数据制作得到的一套1965-2020年逐月中国工业用水数据集,其空间分辨率为 0.1°和 0.25°。数据集包括工业用水、企业数量和企业生产总值(辅助数据)等变量,可被用于水文、地理学、环境、可持续发展等方面科学研究。 【数据来源】 数据来源为《中国经济普查年鉴》(省级工业取水量、工业产出)、《中国工业企业数据库》(企业地理位置、产值)、《中国工业产品产量数据库》(工业产品月生产量),以及《中国水资源公报》和(Zhou et al, 2020, PNAS)的工业用水量数据。 【数据处理】 首先通过2008年企业分布数据、经济普查年鉴中分省分部门的工业用水量和工业产值计算得到分省分部门工业用水效率和工业产品产量数据,得到了2008年逐月工业用水数据。然后结合中国水资源公报和相关文献中省级工业用水数据,以2008年工业用水的时空格局作为基础分配工业用水数据,最终得到1965-2020年逐月工业用水的格网数据。详细方法见High-resolution mapping of monthly industrial water withdrawal in China from 1965 to 2020 (Hou et al, 2024, ESSD). 将数据集与统计数据记录和其他数据集进行了验证,结果表示在时间尺度和空间尺度上都与统计数据具有一致性,相比已有工业用水数据有更好的精度。
65 -质量管理部经理绩效考核表1
11 -电脑部经理绩效考核表1
内容概要:本文提供了针对大学生英语竞赛写作准备的重要资源——一系列通用的英文句子模板。这些模板涵盖了现代经济社会的各种话题,从科技进步到环境保护,以及个人品质和社会责任等,并且适用于论述类文章、观点对比和个人见解的表达。文章通过对每一句话的应用环境解释和语法提示,确保使用者可以在实际写作中正确且有效地应用这些表达方式。 适合人群:正在准备参加大学生英语竞赛的学生及其他希望提高书面表达能力的学习者。 使用场景及目标:考生能够在竞赛时间内迅速构建思路完整的文章,增强语言表达的流利性和规范性;帮助学习者积累高级词汇,提升英语写作水平并培养良好的思维逻辑。 阅读建议:结合历年优秀范文进行深入学习,熟悉不同类型话题下的表述方法;练习将提供的句子融入自身创作的文章中,通过不断修订和完善来巩固记忆。同时也可以用于日常的英语写作训练当中。
法律事务专员绩效考核表
1、文件内容:apache-commons-digester-javadoc-1.8.1-19.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/apache-commons-digester-javadoc-1.8.1-19.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
永磁同步电机磁场定向控制(矢量控制)Simulink仿真模型波形展现与解析,永磁同步电机的磁场定向控制(矢量控制)simulink仿真模型,波形完美 ,核心关键词:永磁同步电机; 磁场定向控制(矢量控制); Simulink仿真模型; 波形完美;,永磁同步电机矢量控制仿真模型:磁场完美调控,波形精确无误
07 -储运部经理绩效考核表1
OQC检验员(成品出货检验员)绩效考核表
基于Matlab2020b的电机控制算法:无传感FOC算法Simulink仿真模型及实践指导,定位+电流闭环强拖+ 角度渐变切+ 速度电流双闭环+ 无传感器角度估算SMO+ PLL 控制方式 Simulink 仿真模型 (Matlab2020b版本)以及教授模型搭建 这是一种常用的无传感FOC电机控制算法,掌握这种算法的基本原理,并有仿真模型在手,就可以用它来指导实践中的程序调试,做到实际项目不盲目调试。 模型特点: 1. 所有模块都做到了模块化,各个模块分区清楚,结构清晰。 2. 所有电机和控制参数均在m文件中体现,变量注释清楚,随用随改。 3. 速度环和电流环PI参数均实现自动整定。 4. 模型采用标幺值系统。 5. 各状态切使用stateflow,模型结构清晰。 6.通用表贴和内嵌式电机。 ,定位;电流闭环强拖;角度渐变切换;速度电流双闭环;无传感器角度估算SMO;PLL控制方式;Simulink仿真模型;Matlab2020b版本建模;教授模型搭建;模块化设计;参数自动整定;标幺值系统;Stateflow应用;通用表贴和内嵌式电机。,基于Matlab 2020b的FOC电机