android连连看1

android连连看:

?一、android连连看:

?好久没写android了,今天就练练手,正好上午的时候,看见同学在玩连连看,就决定写这个了,不过还没写完,实现了消除,音效,Activity直接的跳转,还有GridView的使用等.

?

?二、android连连看的操作:

?点击开始游戏的按钮,进入第一关,就之间可以玩了..也就写了这么多,后面的会继续优化,比如算法优化,现在的只是图片一样就可以消除,还有界面,效果等的优化.

?

?三、运行效果图:

?1.开始:

?
?

?2.第一关界面:

?
?

?消除:

?
?

??四、代码:

??1.MainActivity:

package com.example.test;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
     
    //点击开始,更多,关于游戏
    public void startClick(View v){
    	
    	int i = v.getId();
    	switch (i) {
		case R.id.button1://开始游戏
			
		  //设置intent	
		  Intent intent1 = new Intent();
			
		  //设置intent的源地址和目标地址
		  intent1.setClass(MainActivity.this, GuanKa1.class);
		  
		  //开始跳转
		  startActivity(intent1);
		  
		  //关闭当前activity
		  MainActivity.this.finish();
			break;

        case R.id.button2://关于游戏
			
			break;
			
        case R.id.button3://更多游戏
			
			break;	
		}
    	
    }

//    @Override
//    public boolean onCreateOptionsMenu(Menu menu) {
//        // Inflate the menu; this adds items to the action bar if it is present.
//        getMenuInflater().inflate(R.menu.main, menu);
//        return true;
//    }
    
}

??

??2.GuanKa1:

package com.example.test;

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;

public class GuanKa1 extends Activity {

	// 判断是不是第一次点击
	boolean ifFirstClick = false;
	// 用来保存两次得到的字符串
	String isFirstString;
	String isSecondString;
	// 用来保存两次得到的position
	int isPositon1;
	int isPositon2;

	GridView gv;
	MyAdapter my;

	// 音效:
	SoundPool sp;
	int myMusic;// 用来设置soundID

	// 图片数组;
	int[] imgs = { R.drawable.b_1_1, R.drawable.b_2_1, R.drawable.b_2_2,
			R.drawable.b_3_2, R.drawable.b_3_3, R.drawable.bl_2_1,
			R.drawable.bl_2_2, R.drawable.bl_3_2,

			R.drawable.b_1_1, R.drawable.b_2_1, R.drawable.b_2_2,
			R.drawable.b_3_2, R.drawable.b_3_3, R.drawable.bl_2_1,
			R.drawable.bl_2_2, R.drawable.bl_3_2 };

	String[] s = { "s1", "s2", "s3", "s4", "s5", "s6", "s7", "s8", "s1", "s2",
			"s3", "s4", "s5", "s6", "s7", "s8" };

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		// 设置view
		setContentView(R.layout.guanka1);

		// 音效初始化
		initMusic();

		// 得到girdView
		gv = (GridView) this.findViewById(R.id.Guanka1Gird);

		// 给gridView设置适配器
		my = new MyAdapter(this);
		gv.setAdapter(my);

		// 注册监听
		gv.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View v, int position,
					long id) {

				if (ifFirstClick == false) {

					isFirstString = my.getText(position);
					isPositon1 = position;
					ifFirstClick = true;

				} else {

					isSecondString = my.getText(position);
					isPositon2 = position;
					// 判断是否相同
					if (isFirstString == isSecondString
							&& isPositon1 != isPositon2) {
						my.xiaoChu(isPositon1, isPositon2);
					}
					ifFirstClick = false;
				}

			}

		});

	}

	/**
	 * 初始化音效
	 */
	public void initMusic() {

		// 1.第一个参数为同时播放数据流的最大个数
		// 2.第二个是数据流类型
		// 3.第三个是声音质量
		sp = new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);

		// 1.参数一是上下文对象
		// 2.参数二是资源文件
		// 3.参数三是音乐的优先级
		myMusic = sp.load(GuanKa1.this, R.raw.fitmusic, 1);
	}

	// 自己定义适配器
	class MyAdapter extends BaseAdapter {

		// 上下文对象
		private Context context;

		public MyAdapter(Context context) {

			this.context = context;
		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return imgs.length;
		}

		@Override
		public Object getItem(int item) {
			// TODO Auto-generated method stub
			return item;
		}

		@Override
		public long getItemId(int id) {
			// TODO Auto-generated method stub
			return id;
		}

		@Override
		public View getView(int positon, View convertView, ViewGroup parent) {
			// TODO Auto-generated method stub
			ImageView imageView;
			if (convertView == null) {
				imageView = new ImageView(context);
				// 设置imageView对象布局
				imageView.setLayoutParams(new GridView.LayoutParams(75, 75));
				// 设置边界对齐方式
				imageView.setAdjustViewBounds(false);
				imageView.setPadding(8, 8, 8, 8);
			} else {
				imageView = (ImageView) convertView;
			}

			// 设置图片资源
			// 在这里进行处理

			imageView.setImageResource(imgs[positon]);

			return imageView;
		}

		public void xiaoChu(int p1, int p2) {

			imgs[p1] = R.drawable.ccc;
			imgs[p2] = R.drawable.ccc;
			Random rd = new Random();

			// 把消除后的小格子的字符串设置为IsNot+p1;即唯一的
			s[p1] = "isNot" + p1;
			s[p2] = "isNot" + p2;

			sp.play(myMusic, 1, 1, 0, 0, 1);

			my.notifyDataSetChanged();

		}

		// 自己写的得到行和列
		public String getText(int positon) {

			String getString = s[positon];

			return getString;
		}

	}
}

?

?3.activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background1"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="107dp"
        android:layout_marginTop="71dp"
        android:onClick="startClick"
        android:text="开始游戏" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button2"
        android:layout_below="@+id/button2"
        android:layout_marginTop="56dp"
        android:onClick="startClick"
        android:text="更多游戏" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/button1"
        android:layout_below="@+id/button1"
        android:layout_marginTop="63dp"
        android:onClick="startClick"
        android:text="关于游戏" />

</RelativeLayout>

?

?4.guanka1.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <GridView
        android:id="@+id/Guanka1Gird"
        android:layout_width="wrap_content"
        android:layout_height="386dp"
        android:layout_weight="1.18"
        android:columnWidth="90dp"
        android:gravity="center"
        android:horizontalSpacing="10dp"
        android:numColumns="4"
        android:stretchMode="columnWidth"
        android:verticalSpacing="10dp" >
    </GridView>

    <LinearLayout
        android:id="@+id/guanka1Linear"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/pauseGuanKa1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.30"
            android:text="暂停" />

    </LinearLayout>

</LinearLayout>

?

?五、注意:

?Activity在跳转的时候,需要在清单文件里面注册一下的,

?

?六、总结:

?1.通过这个,对android慢慢熟悉了,可能是前段时间学c#的缘故,把基础又补了一点,今天写android很轻松的.同时这个项目也会不断完善的.

?2.这其中应该还有问题的,希望大家可以给我指出.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。