有一种游戏,在我们还小的时候,会经常和小伙伴玩耍,拿出几张扑克牌,其中包含红桃A,游戏中有两种身份,洗牌者和猜测者,洗牌者通过洗牌打乱顺序,然后将所有纸牌背部朝向猜测者,由猜测者从中选择,如果抽出红桃A,则猜测成功,否则失败。这应该是最简单的扑克牌游戏了。那么如何在Android程序中编写这个游戏功能呢?在本篇博客中,我将就这个需求完成寻觅红桃A的纸牌游戏。

逻辑分析:

1.纸牌应该体现在ImageView控件上,在猜测时,统一显示纸牌背部花色,猜测之前应先随机改变纸牌的位置,猜测之后将纸牌翻转,提示用户成功或者失败。

2.可将纸牌内容放置到一个容器中进行统一管理,然后随机改变容器内元素的位置。

3.当用户点击选中某张纸牌时,设置三张纸牌翻转到正面,查看是否选中红桃A。

那么我们在代码中实现这个需求逻辑。

首先编写布局文件:activity_main.xml

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:gravity="center_horizontal"

android:padding="20dp">

android:id="@+id/mText"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="猜猜紅心A是哪一張"

android:textSize="18sp"/>

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="40dp"

android:orientation="horizontal">

android:id="@+id/mImage01"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:src="@mipmap/p04"/>

android:id="@+id/mImage02"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:src="@mipmap/p04"/>

android:id="@+id/mImage03"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:src="@mipmap/p04"/>

android:id="@+id/mButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="重玩一次"/>

效果图如下:

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

{

int temp=myImage[i];

int s=(int)(Math.random()*2);

//(数据类型)(最小值+Math.random()*(最大值-最小值+1))

myImage[i]=myImage[s];

myImage[s]=temp;

}

}

}

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

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

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

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

android 翻牌动画,Android实现寻觅红桃A的翻牌游戏相关推荐

  1. Android趣味课程:寻觅红桃A的翻牌游戏

    有一种游戏,在我们还小的时候,会经常和小伙伴玩耍,拿出几张扑克牌,其中包含红桃A,游戏中有两种身份,洗牌者和猜测者,洗牌者通过洗牌打乱顺序,然后将所有纸牌背部朝向猜测者,由猜测者从中选择,如果抽出红桃 ...

  2. android 属性翻牌动画,android scale实现翻牌动画效果

    简单流程: 这个翻牌其实并不是立体那种翻转,而是通过收缩和伸展来完成的. 有两张图片,一张为背面: 一张为正面: 以扑克牌本身的中心点为轴,两边像中心收缩: 当背面收缩到完全没有后,通过对动画的监听器 ...

  3. android 属性翻牌动画,Android通过动画实现翻牌效果

    实现效果如下: 实现原理:准备好两张图片,一张作为正面,一张作为背面,当点击图片的正面后,正面的图片的横坐标x进行收缩,直到缩为0%,当正面图片的横坐标x收缩为0之后图片切换为作为背面图片,背面图片的 ...

  4. android 属性翻牌动画,Android自定义动画--卡牌翻牌动画

    Android系统中自带了四种动画,但是都只是平面上的并不能实现我们很常见的翻牌动画,所以今天我们就要通过自定义动画来实现翻牌动画. 要实现翻牌动画,我们需要了解三个类,一个是matrix类,一个是c ...

  5. android jason动画,Android 动画之Lottie动画使用

    Android 动画之Lottie动画使用 一:简介 Lottie是Airbnb开源的一套跨平台的完整解决方案,设计师只需要使用After Effects(简称AE)设计动画之后,使用Lottic提供 ...

  6. android弹球动画,Android动画之自定义Evaluator实现弹球效果

    前言 今天给大家带来的是自定义Evaluator实现弹球效果,我们先给大家来个效果图. 下面我们介绍具体代码流程 1. 自定义Point类 public class Point { private i ...

  7. android decorview动画,Android窗口机制(二)Window,PhoneWindow,DecorView,setContentView源码理解...

    Android窗口机制系列 前篇文章中出现了PhoneWindow,DecorView这些类,如果是第一次见过的话,肯定会觉得陌生.这篇文章主要跟大家讲解Window,PhoneWindow,Deco ...

  8. android 减速动画,Android View Animation

    概述 可译为视图动画,分为 缩放动画 平移动画 渐变动画 旋转动画 Android系统中定义了一个抽象类Animation来定义这种视图动画,它的具体子类如下表: 动画名称 对应的子类 xml中标签 ...

  9. android 底部动画,Android实现360手机助手底部的动画菜单

    首先来看下我们实现的效果和360效果的对比: 360手机助手效果演示 本库实现的效果(Icon来自360手机助手,侵删) xml布局文件 注:为了美观,讲每个Button的高度以及固定,设置wrap_ ...

最新文章

  1. S3 exercise -- 文件操作函数
  2. 两款爱不释手的markdown编辑工具 1
  3. 腾讯视频如何移出其他观看腾讯视频的设备
  4. 转)VCSA 6.5重启无法访问,报错“503 Service Unavailable”的解决方法
  5. 日志分析工具Awstats实战之Apache篇-多站点日志分析
  6. map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
  7. 在SharePoint 2013中显示“以其他用户身份登录”
  8. 如何做好一个技术 TL
  9. 图解Windows下QT编程入门
  10. spyder下载python3.5_spyder python下载
  11. 编译libpng + zlib
  12. SPSS应用于均值检验
  13. linux 检查ntp版本,查看linux安装ntp服务器配置
  14. 有道无术,术可求;有术无道,止于术
  15. 源中瑞区块链baas平台一站式服务体系
  16. element组件官网
  17. ubuntu下高通平台模组串口驱动及使用
  18. 如何在Abaqus中用扫掠的方法画六面体网格
  19. 英语语言水平C级,国际通用的学生英语能力水平评测标准
  20. 志强CPU E5 E7参数,CPU内核参数对比图

热门文章

  1. 高层游戏引擎——基于OGRE所实现的高层游戏引擎框架(2)
  2. Ubuntu gnome安装Monaco字体,FontForge module is probably not installed
  3. Thread Specific Storage
  4. 浏览器不能打开html,浏览器的网页点不动是怎么回事?
  5. springboot+mysql城市房屋租赁管理系统设计与实现-计算机毕业设计源码01855
  6. python读取csv、xlsx文件
  7. 此生此月不常好,明年明月何处看
  8. 雅虎搜索助力阿里妈妈 双剑合璧推博客商业化
  9. 《三体2·黑暗森林》—— 读后总结
  10. 全球新冠疫情-多维度数据中国各省市疫情每日追踪数据