`
一口三个汉堡
  • 浏览: 115962 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

实例4---拼单词游戏

阅读更多

  这个第四个实例,我只是单纯的把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

  • 大小: 1.2 KB
  • 大小: 1.4 KB
0
1
分享到:
评论

相关推荐

    中小学英语单词学习课堂游戏30个例.doc

    5. 拼单词对抗赛:两个小组互相竞争,教师说出一个单词,学生迅速重复并正确拼读,错误会被扣分。 6. 一样元音单词拼读对抗赛:类似上面的游戏,但以相同元音为线索,学生找出含有相同元音的单词。 7. 拼读单词...

    C语言实例解析精粹(第二版) 光盘代码

    C语言实例解析精粹(第二版) 光盘代码 本文件包括以下内容: ※ 1、文件说明 ※ 2、源码操作说明 ※ 3、光盘目录清单 ◎ 源码操作说明 源代码使用方法是(以实例1为例): 将该实例的源码,比如实例1的1.c文件(可以...

    C语言实例解析精粹

    138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色...

    c语言配有图片和音乐的打字母游戏.zip

    - 例如,游戏可能设定在限定时间内正确拼出单词才能得分,错误则扣分,这需要编写对应的计分算法。 7. 错误处理与调试: - 在编写游戏过程中,错误处理是必不可少的,使用assert和try-catch机制可以确保程序的...

    Python实现Pig Latin小游戏实例代码

    本文介绍了一个使用Python编程语言实现的Pig Latin小游戏实例代码。Pig Latin是一种流行的语言游戏,主要是将英文单词按照特定的规则转换成另一种形式,这种形式通常较难为非英语母语者理解,因此带有游戏性质。以下...

    WordPuzzle:单词拼图Android App

    3. 游戏结束条件:当所有单词都被成功拼出,或者达到设定的错误次数上限,游戏结束。这需要设置计数器和结束条件判断。 四、性能优化 为了提供流畅的游戏体验,开发者可能进行了性能优化,例如: 1. 使用异步加载...

    midp 开发的推箱子游戏 以及 字母游戏 源码

    字母游戏(Tile Puzzle),可能是类似于拼单词或填字游戏的形式。在MIDP中,开发者可能用字符串数组存储字母,玩家通过旋转或交换字母来形成有效的单词。游戏可能包含字典文件,用于验证玩家输入的单词是否正确。...

    C++实现字母打字游戏.zip

    4. **面向对象编程(OOP)**:C++的强项之一是支持OOP,我们可以定义类(class)来表示游戏中的实体,比如玩家、单词列表、计时器等。类包含属性(数据成员)和方法(成员函数),通过对象实例化来封装数据和行为。 ...

    geohangman:GeoHangman是一款Android游戏,其中一个用户挑战其他人猜一个单词。 提示是图片,地图上的位置以及要猜测的单词的无序字母

    GeoHangman会提供单词中所有字母的列表,但这些字母是随机排列的,玩家需要通过组合字母,尝试拼出正确的单词。这一环节则主要考察玩家的语言逻辑能力和耐心,同时也有助于提高他们的记忆力。 在技术实现方面,...

    WordGame源码

    单词游戏通常是指玩家通过组合字母来创建正确的单词,以达到特定的目标,如解谜、竞争得分等。这种类型的游戏既可以锻炼玩家的语言能力,又能提高他们的思维敏捷度。WordGame可能包括各种模式,比如填字游戏、字谜、...

    matlab开发-BoggleV20

    在游戏开发中,MATLAB同样可以发挥其优势,如在本项目"BoggleV20"中,我们就看到了MATLAB用于实现哈斯布罗的传统拼图大师游戏的实例。这个项目不仅展示了MATLAB在游戏逻辑编程上的应用,也体现了其在图像处理和算法...

    小学英语单词按自然拼读.doc

    自然拼读法(Phonics)是英语学习中一种重要的方法,它帮助孩子们通过字母的发音来识别和拼写单词,极大地促进了阅读和写作能力...同时,教师应结合实例和游戏,让学生在实践中掌握这些规则,以使学习更加有趣和有效。

    C语言学习实例220例

    138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色模式...

    C语言源代码实例.rar

    138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色...

    C 语言实例解析精粹(第二版)(书+盘)

    138 正方形螺旋拼块图案 139 图形法绘制圆 140 递归法绘制三角形图案 141 图形法绘制椭圆 142 抛物样条曲线 143 Mandelbrot分形图案 144 绘制布朗运动曲线 145 艺术清屏 146 矩形区域的颜色填充 147 VGA256色...

    C源代码实例集

    第七部分 游戏篇 207 商人过河游戏 208 吃数游戏 209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推...

    c源代码经典案例集(有小游戏)

    209 解救人质游戏 210 打字训练游戏 211 双人竞走游戏 212 迷宫探险游戏 213 迷你撞球游戏 214 模拟扫雷游戏 215 推箱子游戏 216 五子棋游戏 第八部分 综合实例篇 ...

Global site tag (gtag.js) - Google Analytics