- 浏览: 115962 次
- 性别:
- 来自: 厦门
最新评论
-
人可德福:
非常感谢附上源码包的楼主
实例16--心理测试 -
一口三个汉堡:
ljt122000 写道呵呵....看来大多数搞程序的被切图弄 ...
移动开发那点事-抱怨的移动开发程序员 -
ljt122000:
呵呵....看来大多数搞程序的被切图弄得有点郁闷啊...不管是 ...
移动开发那点事-抱怨的移动开发程序员 -
一口三个汉堡:
半夜透凉清 写道追求自己想要的生活,我是该羡慕你不断的走,跑, ...
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长! -
xdwangiflytek:
楼主发现自己的成长才是最可贵的
今天看了自己博客的电子书,眼泪一直掉!感谢ITeye伴我成长!
这个第四个实例,我只是单纯的把j2me的代码换成android的,所以屏幕的大小的适应性和好不好看,我都没有考虑。
下面给出第四个实例的MainView的代码
效果图:
package com.wjh.demon_4; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.KeyEvent; 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; public char m_achWords[][] = //存储原始字符矩阵 { {'H', 'R', 'T', 'W', 'T'}, {'E', 'I', 'H', 'O', 'H'}, {'L', 'G', 'I', 'R', 'R'}, {'L', 'H', 'N', 'L', 'E'}, {'O', 'T', 'G', 'D', 'E'} }; public int m_nCurLine = 0; //记录当前行 public int m_anDis[] = { 0,1,2,3,4 }; public boolean m_bGameOK = false; //组合成功的标志 public MainView(Context context) { super(context); // TODO Auto-generated constructor stub setFocusable(true); getHolder().addCallback(this); holder = this.getHolder(); } @Override public void run() { // TODO Auto-generated method stub while(isGame) { 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(); } } //停止游戏主线程 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_bGameOK ) return; m_bGameOK = true; for( int n = 0; n < 5; n ++ ){ if( m_anDis[n] != 0 ){ m_bGameOK = false; 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 backGround = new Paint(); backGround.setColor(Color.BLACK); //清屏 canvas.drawRect(0, 0, getWidth(), getHeight(), backGround); //设置画笔颜色 Paint cPaint = new Paint(); //显示字符 //realCol为所显示的字符在原始矩阵中的列数 int realCol = 0; //row为行数,col为列数 for( int row = 0; row < 5; row ++ ){ if( row == m_nCurLine ) //当前行的字符用黄色显示 cPaint.setColor(Color.YELLOW); else cPaint.setColor(Color.WHITE); //非当前行的字符用白色显示 for( int col = 0; col < 5; col ++ ){ //利用偏位数得到与当前位置对应的原始矩阵中的位置 realCol = m_anDis[row] + col; if( realCol > 4 ) realCol = realCol - 5; canvas.drawText(""+m_achWords[row][realCol], 30 + col * 15, 30+row * 15, cPaint); } } cPaint.setColor(Color.WHITE); if( m_bGameOK ) canvas.drawText("真棒,完全正确", 50, 120, cPaint); else canvas.drawText("左右移动字符,使纵向拼写正确", 40, 120, cPaint); } @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(); } public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if( m_bGameOK ) return true; //得到当前按键状态 //如果按下方向键的上键,则调整当前行的位置 if( keyCode == KeyEvent.KEYCODE_DPAD_UP ) m_nCurLine --; //如果按下方向键的下键,则调整当前行的位置 if(keyCode == KeyEvent.KEYCODE_DPAD_DOWN) m_nCurLine ++; //调整当前行的值,使它在0到4之间 if( m_nCurLine < 0 ) m_nCurLine += 5; if( m_nCurLine > 4) m_nCurLine -= 5; //如果按下方向键的左键,则当前行的字符左移 if( keyCode == KeyEvent.KEYCODE_DPAD_LEFT) m_anDis[m_nCurLine] ++; //如果按下方向键的右键,则当前行的字符右移 if( keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) m_anDis[m_nCurLine] --; if( m_anDis[m_nCurLine] < 0 ) m_anDis[m_nCurLine] += 5; if( m_anDis[m_nCurLine] > 4 ) m_anDis[m_nCurLine] -= 5; return super.onKeyDown(keyCode, event); } }
apk文件(将后缀改为apk):Demon_4.zip
源代码文件:Demon_4.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 1070随着转化的进行,难度也在增加,这次的实例我弄了一天,当然有 ... -
实例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 ... -
实例13---点击速度测试机
2011-06-18 00:15 1085在原java me中通过这个例子是想要讲解RecordSt ... -
实例12--会动的地图
2011-06-16 23:00 1294前面已经出了一个展示地图的例子,这个例子主要运用了将地图的 ... -
实例11--播放按键声音
2011-06-13 11:35 7290实例11播放按键声音,在java me中有playTone ... -
实例10--不搭的跳舞机
2011-06-10 23:32 1767还是要重申一遍,因为只是转化,所以原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 1427实例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 2118这个实例主要是运用字体的只是,但是android自带就几种 ... -
实例3--使用surfaceView
2011-05-30 19:55 1377在那本书用的是GameCanvas,我就用surfaceVi ... -
实例2---获得按键值
2011-05-29 00:08 1176《手机游戏50例》第二个实例为将按键值显示在屏幕上,下面给出M ... -
《java手机游戏50例》转成android版。。--游戏View框架代码
2011-05-28 20:48 3617这学期我们班教j2me游戏开发,教材是《java游戏50例 ...
相关推荐
5. 拼单词对抗赛:两个小组互相竞争,教师说出一个单词,学生迅速重复并正确拼读,错误会被扣分。 6. 一样元音单词拼读对抗赛:类似上面的游戏,但以相同元音为线索,学生找出含有相同元音的单词。 7. 拼读单词...
C语言实例解析精粹(第二版) 光盘代码 本文件包括以下内容: ※ 1、文件说明 ※ 2、源码操作说明 ※ 3、光盘目录清单 ◎ 源码操作说明 源代码使用方法是(以实例1为例): 将该实例的源码,比如实例1的1.c文件(可以...
138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色...
- 例如,游戏可能设定在限定时间内正确拼出单词才能得分,错误则扣分,这需要编写对应的计分算法。 7. 错误处理与调试: - 在编写游戏过程中,错误处理是必不可少的,使用assert和try-catch机制可以确保程序的...
本文介绍了一个使用Python编程语言实现的Pig Latin小游戏实例代码。Pig Latin是一种流行的语言游戏,主要是将英文单词按照特定的规则转换成另一种形式,这种形式通常较难为非英语母语者理解,因此带有游戏性质。以下...
3. 游戏结束条件:当所有单词都被成功拼出,或者达到设定的错误次数上限,游戏结束。这需要设置计数器和结束条件判断。 四、性能优化 为了提供流畅的游戏体验,开发者可能进行了性能优化,例如: 1. 使用异步加载...
字母游戏(Tile Puzzle),可能是类似于拼单词或填字游戏的形式。在MIDP中,开发者可能用字符串数组存储字母,玩家通过旋转或交换字母来形成有效的单词。游戏可能包含字典文件,用于验证玩家输入的单词是否正确。...
4. **面向对象编程(OOP)**:C++的强项之一是支持OOP,我们可以定义类(class)来表示游戏中的实体,比如玩家、单词列表、计时器等。类包含属性(数据成员)和方法(成员函数),通过对象实例化来封装数据和行为。 ...
GeoHangman会提供单词中所有字母的列表,但这些字母是随机排列的,玩家需要通过组合字母,尝试拼出正确的单词。这一环节则主要考察玩家的语言逻辑能力和耐心,同时也有助于提高他们的记忆力。 在技术实现方面,...
单词游戏通常是指玩家通过组合字母来创建正确的单词,以达到特定的目标,如解谜、竞争得分等。这种类型的游戏既可以锻炼玩家的语言能力,又能提高他们的思维敏捷度。WordGame可能包括各种模式,比如填字游戏、字谜、...
在游戏开发中,MATLAB同样可以发挥其优势,如在本项目"BoggleV20"中,我们就看到了MATLAB用于实现哈斯布罗的传统拼图大师游戏的实例。这个项目不仅展示了MATLAB在游戏逻辑编程上的应用,也体现了其在图像处理和算法...
自然拼读法(Phonics)是英语学习中一种重要的方法,它帮助孩子们通过字母的发音来识别和拼写单词,极大地促进了阅读和写作能力...同时,教师应结合实例和游戏,让学生在实践中掌握这些规则,以使学习更加有趣和有效。
138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色模式...
138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色...
138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色...
第七部分 游戏篇 207 商人过河游戏 208 吃数游戏 209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推...
209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推箱子游戏 216 五子棋游戏 第八部分 综合实例篇 ...