- 浏览: 115981 次
- 性别:
- 来自: 厦门
最新评论
-
人可德福:
非常感谢附上源码包的楼主
实例16--心理测试 -
一口三个汉堡:
ljt122000 写道呵呵....看来大多数搞程序的被切图弄 ...
移动开发那点事-抱怨的移动开发程序员 -
ljt122000:
呵呵....看来大多数搞程序的被切图弄得有点郁闷啊...不管是 ...
移动开发那点事-抱怨的移动开发程序员 -
一口三个汉堡:
半夜透凉清 写道追求自己想要的生活,我是该羡慕你不断的走,跑, ...
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长! -
xdwangiflytek:
楼主发现自己的成长才是最可贵的
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长!
在原java me中通过这个例子是想要讲解RecordStore的使用,我在用了另外一种方式来实现同样的效果,就是用SharedPreferences, 然后用触屏点击事件替换了按键点击事件。
下面给出小效果图和源代码:
MainView
package com.wjh.demon_13; import com.wjh.midp_me.AndroidSprite; 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.graphics.Typeface; import android.util.Log; import android.util.MonthDisplayHelper; import android.view.KeyEvent; 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{ int keyCode = 0; String keyAction = ""; Thread gameThread = null; boolean isGame = true; SurfaceHolder holder = null; Paint backPaint = null; Paint forePaint = null; //具体游戏相关 public AndroidSprite m_spButton; //按钮对象 public RMSScore m_Score; //记录对象 public int m_nTimes = 0; //管理时间 public Typeface m_Font; public MainView(Context context) { super(context); // TODO Auto-generated constructor stub setFocusable(true); getHolder().addCallback(this); holder = this.getHolder(); backPaint = new Paint(); backPaint.setColor(Color.BLACK); forePaint = new Paint(); m_Score = new RMSScore(context); //分配内存空间 m_Score.LoadHighScore(); //读取最高分 m_Font = Typeface.MONOSPACE; forePaint = new Paint(); forePaint.setTypeface(m_Font); forePaint.setTextSize(20); forePaint.setColor(Color.WHITE); backPaint = new Paint(); backPaint.setColor(Color.BLACK); Bitmap bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.button); m_spButton = new AndroidSprite(bitmap, 25, 25 ); m_spButton.setFrame( 0 ); } public void StartTime(){ //开始计时 m_nTimes = 600; //600*100=60000毫秒=1分钟 m_Score.m_nCurScore = 0; } @Override public void run() { //获取系统当前时间,并将时间换算成以毫秒为单位的数 long T1 = System.currentTimeMillis(); long T2 = T1; while(isGame){ T2 = System.currentTimeMillis(); if( T2 - T1 > 100 ){ //间隔100毫秒 T1 = T2; input(); logic(); doDraw(); } } } //开始游戏主线程 public void start() { m_spButton.setPosition( getWidth()/2 - 12, 90 ); if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); } } //停止游戏主线程 public void stop() { isGame = false; if(gameThread != null) { try { gameThread.join(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } //输入判断 public void input() { } //逻辑判断 public void logic() { if( m_nTimes > 0 ){ //计时 m_nTimes --; if( m_nTimes <= 0 ){ //结束游戏 m_Score.SaveHighScore(); } } } 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) { //用黑色清屏 canvas.drawRect(0, 0, getWidth(), getHeight(), backPaint); //设置当前颜色及当前字体 StringBuffer temp = new StringBuffer(); StringBuffer temp2 = new StringBuffer(); StringBuffer temp3 = new StringBuffer(); //拼接字符 temp2.append( "最高分:" ); temp2.append( m_Score.m_nHighScore ); temp3.append( "本次得分:" ); temp3.append( m_Score.m_nCurScore ); if( m_nTimes <= 0 ) temp.append( "滑动开始" ); else{ temp.append( "剩余时间" ); temp.append( m_nTimes / 10 ); temp.append( "秒" ); } //显示文字信息 canvas.drawText(temp.toString(), 20, 30,forePaint); canvas.drawText( temp2.toString(), 20, 50, forePaint ); canvas.drawText( temp3.toString(), 20, 70, forePaint ); //显示按钮 m_spButton.paint(canvas,forePaint); m_spButton.setFrame( 0 ); } @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 start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub stop(); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub Log.d("ddd", ""+m_Score.m_nCurScore); if( m_nTimes <= 0 &&event.getAction() == MotionEvent.ACTION_DOWN){ //计时尚未开始 StartTime(); return false; } if(event.getAction() == MotionEvent.ACTION_DOWN) { m_Score.m_nCurScore ++; //增加分数 m_spButton.setFrame( 1 ); return true; }else { return false; } } }
RMSSCore.java
package com.wjh.demon_13; import android.content.Context; import android.content.SharedPreferences; public class RMSScore { public int m_nHighScore = 0; // 历史最高分 public int m_nCurScore = 0;// 当前得分 private SharedPreferences sharedPreferences = null; public RMSScore(Context context) { sharedPreferences = context.getSharedPreferences("RsScore", Context.MODE_PRIVATE); } /********* 利用RMS系统存储最高得分 ************/ public void SaveHighScore() { if (m_nCurScore <= m_nHighScore) // 如果本次得分低于历史最高分 { return; }// 直接返回 m_nHighScore = m_nCurScore; // 刷新记录 // 打开SharedPreferences,没有则新建 this.sharedPreferences.edit().putInt("highScore", m_nHighScore).commit(); // 更改第一条记录 } /********* 利用RMS系统读取最高得分 ************/ public void LoadHighScore() { m_nHighScore = this.sharedPreferences.getInt("highScore", -1); } }
apk文件(将后缀改为apk):Demon_13.zip
源代码文件:Demon_13.rar
发表评论
-
android-单独开启闪光灯方法--适用于moto手机
2011-10-14 10:11 6954代码来自于http://code.google.com/p/s ... -
android线性布局布局的layout_weight
2011-10-08 16:23 1686对于LinearLayout的layout_weight属性, ... -
android-xml文件解析教程
2011-09-21 00:32 2122在讨论群里里面有人在问xml的解析方法,我就弄了个简单的d ... -
实例17--无敌抢钱鸡
2011-09-03 21:32 1071随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有 ... -
实例16--心理测试
2011-09-01 11:59 2108隔了两个月,又重新开 ... -
实例-15---猜数字
2011-06-23 23:48 1382经典游戏,猜数字。各种不解释,因为最近发生了一些事情,所以 ... -
实例14---不准+弱智的生物钟
2011-06-19 12:06 1179这个例子在java me主要是演示form的使用,在and ... -
实例12--会动的地图
2011-06-16 23:00 1295前面已经出了一个展示地图的例子,这个例子主要运用了将地图的 ... -
实例11--播放按键声音
2011-06-13 11:35 7291实例11播放按键声音,在java me中有playTone ... -
实例10--不搭的跳舞机
2011-06-10 23:32 1768还是要重申一遍,因为只是转化,所以原j2me的问题,我不会 ... -
android的Sprite,TiledLayer,LayerManager
2011-06-08 10:42 3347因为android没有提供这些,而我要把j2me的一本游戏 ... -
实例9---我的地图
2011-06-08 10:18 1150实例9,在j2me中是使用了图层管理和地图图层,在andr ... -
实例8--《很幼稚的‘小’鸡快跑》
2011-06-04 22:08 1428实例8--《小鸡快跑》,原书用的是java me 提供的s ... -
实例7---android 版Sprite代码
2011-06-03 23:38 3000因为android 没有提供sp ... -
实例6--文字滚屏
2011-06-02 23:59 1115这个实例的本意展示j2me的字体,和滚屏的实现。我只实现了 ... -
实例5--自动换行(修订版)
2011-06-02 00:13 2119这个实例主要是运用字体的只是,但是android自带就几种 ... -
实例4---拼单词游戏
2011-06-01 00:02 1413这个第四个实例,我只是单纯的把j2me的代码换成andro ... -
实例3--使用surfaceView
2011-05-30 19:55 1378在那本书用的是GameCanvas,我就用surfaceVi ... -
实例2---获得按键值
2011-05-29 00:08 1176《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出M ... -
《java手机游戏50例》转成android版。。--游戏View框架代码
2011-05-28 20:48 3618这学期我们班教j2me游戏开发,教材是《java游戏50例 ...
相关推荐
### 手把手学习Android实例——图片浏览器 #### Android概述 Android是一个开源的移动设备操作系统,最初由Andy Rubin等人于2003年创立,并在2005年被Google收购。2007年,Google联合多家硬件制造商、软件开发商及...
- **执行速度**:相比于人工测试,QTP能够更快地执行测试。 - **可靠性**:每次执行相同的操作时都能保持一致性和准确性,避免人为错误。 - **可重复性**:同一套测试脚本可以在不同的测试周期中多次运行。 - **可...
例如,手机游戏自动点击器就需要类似的技术来识别并模拟点击操作;另外,在手机界面的UI测试中,自动识别按键能大幅提升测试效率,减少人工介入。 总之,联众识别V2-手机按键实例展示了图像识别技术在移动设备领域...
在本资源"Python游戏源码实例-开心消消乐.zip"中,我们主要探讨的是使用Python编程语言进行游戏开发,特别是针对"开心消消乐"这款游戏的实现。Python以其简洁明了的语法和丰富的库支持,成为了初学者和专业开发者...
“别踩白块”是一款简单而富有挑战性的游戏,它包含无尽模式、计时模式和急速模式三种玩法,旨在测试玩家的反应速度和手眼协调能力。游戏中,用户需点击屏幕上不断移动的黑色方块,一旦误触白色的方块,游戏即宣告...
本项目实例——“二维码生成器”是基于微信小程序平台实现的一个实用工具,允许用户快速生成和读取二维码。 在微信小程序中,二维码生成器的实现涉及到几个关键的技术点: 1. **数据编码**:二维码生成器首先需要...
在Horizon的“计算”或“实例”页面,点击“创建实例”。在“源”选项中,选择你刚才创建的ISO镜像。设置实例的名称、Flavor和其他配置,如安全组规则。然后,点击“创建服务器”以启动实例。 启动实例后,...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
此外,还可以通过运行实例来测试交互性,确保相机切换的流畅性和响应性。 这个实例对学习Quest3D的动画相机控制、用户交互和3D场景构建非常有帮助。它展示了如何将多种元素整合到一个交互式3D项目中,包括相机动画...
### 电子商务网站建设实例知识点解析 #### 第1章:系统与电子商务网站 1. **什么是系统** - 系统是指由多个相互关联的部分组成的整体,这些部分通过特定的方式相互作用来实现共同的目标或功能。 2. **如何用系统...
在IT行业中,虚拟机是一种非常重要的技术,它允许我们在一台物理计算机上运行多个独立的操作系统实例,每个实例都像一个独立的计算机一样工作。虚拟机的使用极大地提高了资源利用率,简化了软件测试和开发环境的搭建...
7. **测试与调试**:在开发过程中,不断进行测试以确保所有功能正常运行,同时解决可能出现的样式冲突和功能问题。 通过这个"ET20 new 1104"主题实例,初级portlet开发人员可以逐步掌握IBM Portlet主题开发的核心...
【MMI实例傅贵培训教程】是一份专为开发者设计的深入解析MMI(Man-Machine Interface,人机交互界面)开发的专业教程。MMI在IT行业中扮演着至关重要的角色,因为它涉及到用户与设备之间的交互体验,是产品易用性和...
- **配置Camera2**:需要创建`CameraManager`实例来获取相机列表,并选择一个合适的设备。 - **创建CameraDevice**:通过`CameraManager.openCamera()`方法打开相机设备。 - **设置预览流**:创建`Surface`对象,...
注释可以帮助理解代码的功能和实现思路,加快学习速度。 9. **分享与开源** - 开发者分享了这个项目,意味着其他开发者可以学习、修改和再利用。开源社区如GitHub是很好的平台,可以让开发者互相交流,共同进步。 ...
总结,Proteus仿真实例是电子学习和设计的重要工具,通过它,我们可以无需物理硬件就能进行电路设计和测试,降低了实验成本,提高了学习效率。熟练掌握Proteus的使用,无论是对初学者还是专业工程师,都将极大地提升...
在本文中,我们将深入探讨如何使用STM32CubeMX创建一个包含USB CDC串口和FreeRTOS的项目实例。STM32CubeMX是一款强大的图形配置工具,由STMicroelectronics开发,用于初始化和配置STM32微控制器。这个实例将帮助...
《飞机大战-Python实现》是一款基于Python编程语言开发的经典游戏,它通过实例展示了对象导向编程的概念,让初学者能够深入理解面向对象编程的基本原理。在这个项目中,开发者使用了Pygame模块,这是一个Python库,...