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.这其中应该还有问题的,希望大家可以给我指出.
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。