Android实现寻觅红桃A的翻牌游戏
程序员文章站
2022-09-05 21:14:32
有一种游戏,在我们还小的时候,会经常和小伙伴玩耍,拿出几张扑克牌,其中包含红桃a,游戏中有两种身份,洗牌者和猜测者,洗牌者通过洗牌打乱顺序,然后将所有纸牌背部朝向猜测者,由...
有一种游戏,在我们还小的时候,会经常和小伙伴玩耍,拿出几张扑克牌,其中包含红桃a,游戏中有两种身份,洗牌者和猜测者,洗牌者通过洗牌打乱顺序,然后将所有纸牌背部朝向猜测者,由猜测者从中选择,如果抽出红桃a,则猜测成功,否则失败。这应该是最简单的扑克牌游戏了。那么如何在android程序中编写这个游戏功能呢?在本篇博客中,我将就这个需求完成寻觅红桃a的纸牌游戏。
逻辑分析:
1.纸牌应该体现在imageview控件上,在猜测时,统一显示纸牌背部花色,猜测之前应先随机改变纸牌的位置,猜测之后将纸牌翻转,提示用户成功或者失败。
2.可将纸牌内容放置到一个容器中进行统一管理,然后随机改变容器内元素的位置。
3.当用户点击选中某张纸牌时,设置三张纸牌翻转到正面,查看是否选中红桃a。
那么我们在代码中实现这个需求逻辑。
首先编写布局文件:activity_main.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" android:gravity="center_horizontal" android:padding="20dp"> <textview android:id="@+id/mtext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="猜猜紅心a是哪一張" android:textsize="18sp"/> <linearlayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="40dp" android:orientation="horizontal"> <imageview android:id="@+id/mimage01" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:src="@mipmap/p04"/> <imageview android:id="@+id/mimage02" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:src="@mipmap/p04"/> <imageview android:id="@+id/mimage03" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:src="@mipmap/p04"/> </linearlayout> <button android:id="@+id/mbutton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="重玩一次"/> </linearlayout>
效果图如下:
接下来,将处理逻辑的代码写入到activity界面当中。
import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.*; public class mainactivity extends activity { private imageview myimageview; private imageview myimageview2; private imageview myimageview3; private button mybutton; private boolean isplay =false; // 判断是否为猜测游戏过程的标志位 private int[] myimage={ r.mipmap.p01, r.mipmap.p02, r.mipmap.p03,}; /** 为每一个imageview设置点击事件*/ view.onclicklistener myimageclistener =new view.onclicklistener() { @override public void onclick(view v) { if(!isplay) { // 判断能够被点击 switch (v.getid()) { case r.id.mimage01: setimage(0,myimageview); break; case r.id.mimage02: setimage(1,myimageview2); break; case r.id.mimage03: setimage(2,myimageview3); break; default: break; } } } };; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); myimageview=(imageview)findviewbyid(r.id.mimage01); myimageview2=(imageview)findviewbyid(r.id.mimage02); myimageview3=(imageview)findviewbyid(r.id.mimage03); mybutton=(button)findviewbyid(r.id.mbutton); random(); myimageview.setonclicklistener(myimageclistener); myimageview2.setonclicklistener(myimageclistener); myimageview3.setonclicklistener(myimageclistener); mybutton.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if(isplay) { myimageview.setimageresource(r.mipmap.p04); myimageview2.setimageresource(r.mipmap.p04); myimageview3.setimageresource(r.mipmap.p04); myimageview.setalpha(255); myimageview2.setalpha(255); myimageview3.setalpha(255); random(); // 再次随机生成纸牌位置 isplay = false; } } }); } private void setimage(int temp, imageview ss) { // 揭晓隐藏在纸牌后的数字 myimageview.setimageresource(myimage[0]); myimageview2.setimageresource(myimage[1]); myimageview3.setimageresource(myimage[2]); myimageview.setalpha(100); // 设置透明度为半透明 myimageview2.setalpha(100); myimageview3.setalpha(100); ss.setalpha(255); //设置被点击view的为完全可见 if(myimage[temp]==r.mipmap.p01) { //判断选中的view对应的图片是否为红桃a toast.maketext(this, "恭喜你猜對了", toast.length_short).show(); }else { toast.maketext(this, "對不起你猜錯了", toast.length_short).show(); } isplay = true; //设置此时不能被点击 } /** 随机改变数组当中的元素位置,以确保纸牌发生变化*/ private void random() { for(int i=0;i<myimage.length;i++) { int temp=myimage[i]; int s=(int)(math.random()*2); //(数据类型)(最小值+math.random()*(最大值-最小值+1)) myimage[i]=myimage[s]; myimage[s]=temp; } } }
运行程序,就可以开始游戏了~
好了,这就是红桃a翻牌游戏了,大家编程时可以增加纸牌的数量提高游戏的难度,代码并不会有太大的改变,不信你试试!感谢您的阅读~
点击此处可下载相关项目代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
推荐阅读
-
Android利用ViewDragHelper轻松实现拼图游戏的示例
-
android游戏载入的activity跳转到游戏主菜单的activity具体实现
-
Android实现完整游戏循环的方法
-
android游戏载入的activity跳转到游戏主菜单的activity具体实现
-
Android利用ViewDragHelper轻松实现拼图游戏的示例
-
Android 实现抖音小游戏潜艇大挑战的思路详解
-
Android实现完整游戏循环的方法
-
Unity3D游戏引擎实现在Android中打开WebView的实例
-
Android实现寻觅红桃A的翻牌游戏
-
Android自定义View实现游戏摇杆键盘的方法示例