欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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>

效果图如下:

Android实现寻觅红桃A的翻牌游戏

接下来,将处理逻辑的代码写入到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;
  }
 }
}

运行程序,就可以开始游戏了~

Android实现寻觅红桃A的翻牌游戏

好了,这就是红桃a翻牌游戏了,大家编程时可以增加纸牌的数量提高游戏的难度,代码并不会有太大的改变,不信你试试!感谢您的阅读~

点击此处可下载相关项目代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。