猜牌游戏一开始不直接亮出三张牌,而是翻面洗牌之后直接请玩家来猜猜看红桃A是哪一张,游戏过程公平透明,不会出现诈赌情形。
开发提示及要求:
1,界面使用TextView、Button以及三个ImageView,一开始三个ImageView都默认显示扑克牌背面,当用户选择了其中一张牌时,三个ImageView同时翻到正面,程序会依照选择的对错通过Toast消息提示出来,并可以通过点击“重新玩一次”来重新开始游戏。
2,当游戏开始时,玩家从三张牌中单击一张,然后程序会一次翻开所有牌面,并将玩家没选择的牌面以灰暗效果处理。
3,将三张图片的id存入数组,定义一个方法将数组中的id顺序做随机的调换,以制造洗牌的效果,三个ImageView默认加载图片都为扑克牌背面。
4,代码量控制在100行左右。
参考代码:(如有雷同,纯属巧合)
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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="#111111"
tools:context=".MainActivity" >
<TextView
android:id="@+id/tvcai"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="72dp"
android:text="@string/cai"
android:textColor="#eeeeee"
android:textSize="18sp" />
<ImageView
android:id="@+id/puke1"
android:layout_width="71dp"
android:layout_height="96dp"
android:layout_alignTop="@+id/puke3"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/puke3"/>
<ImageView
android:id="@+id/puke2"
android:layout_width="71dp"
android:layout_height="96dp"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvcai"
android:layout_marginLeft="20dp"
android:layout_marginTop="36dp" />
<ImageView
android:id="@+id/puke3"
android:layout_width="71dp"
android:layout_height="96dp"
android:layout_alignTop="@+id/puke2"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/puke2" />
<Button
android:id="@+id/btnplayagian"
android:layout_width="120dp"
android:layout_height="30dp"
android:layout_below="@+id/puke2"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:background="#cdcdcd"
android:text="重新玩一次" />
</RelativeLayout>
main.xml 结束
MainActivity.java 开始
package com.ming.puke;
import java.util.ArrayList;
import java.util.Random;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btnplayagian;// 再玩一次
private ImageView puke1, puke2, puke3;// 三张扑克
private Drawable bg;// 扑克背面(用于判断是否开牌)
private int[] pks = { R.drawable.p01, R.drawable.p02, R.drawable.p03 };// 存放3张扑克
private ArrayList<Integer> ps = new ArrayList<Integer>();// 存放洗过的扑克(随机排列)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
puke1 = (ImageView) findViewById(R.id.puke1);
puke2 = (ImageView) findViewById(R.id.puke2);
puke3 = (ImageView) findViewById(R.id.puke3);
btnplayagian = (Button) findViewById(R.id.btnplayagian);
puke1.setOnClickListener(l);
puke2.setOnClickListener(l);
puke3.setOnClickListener(l);
btnplayagian.setOnClickListener(l);
}
protected void onResume() {
randomPuke();
super.onResume();
}
OnClickListener l = new OnClickListener() {
public void onClick(View v) {
switch (v.getId()) {
case R.id.puke1:
showPuke(0);
// 将玩家没选择的牌面以灰暗效果处理,设置透明度,取值范围为0~255,数值越小越透明。
puke2.setAlpha(100);
puke3.setAlpha(100);
break;
case R.id.puke2:
showPuke(1);
puke1.setAlpha(100);
puke3.setAlpha(100);
break;
case R.id.puke3:
showPuke(2);
puke1.setAlpha(100);
puke2.setAlpha(100);
break;
case R.id.btnplayagian:
randomPuke();
break;
}
}
};
/** 洗牌 */
public void randomPuke() {
// 所有牌翻到背面
puke1.setImageResource(R.drawable.p04);
puke2.setImageResource(R.drawable.p04);
puke3.setImageResource(R.drawable.p04);
bg = puke1.getDrawable();
// 实例化清空(收牌)
ps = new ArrayList<Integer>();
// 随机填充(发牌)
do {
int item = new Random().nextInt(3);// 随机出{0,1,2}中其中一个数
if (!ps.contains(pks[item])) {// 如果桌上没有这张牌才发这张牌
ps.add(pks[item]);
}
} while (ps.size() < 3);// 发完3张牌就不发牌了
}
/** 开牌 */
public void showPuke(int p) {
// 如果牌还没开才能开牌
if (puke1.getDrawable() == bg) {
puke1.setImageResource((Integer) ps.get(0));
puke2.setImageResource((Integer) ps.get(1));
puke3.setImageResource((Integer) ps.get(2));
Toast.makeText(
MainActivity.this,
R.drawable.p01 == (Integer) ps.get(p) ? "恭喜你猜对了" : "遗憾你猜错了",
1000).show();
}
}
}
MainActivity.java 结束
分享到:
相关推荐
1.程序功能说明: MATLAB实现多种群遗传算法(完整代码) 逼近C=[9,8,7,6,5,4,3,2,1]的9维向量. 2.代码说明:注释清晰,参数和变量说明清晰,方便更改、方便初学者使用,模块化编程,方便替换目标函数。运行环境Windows7及以上操作系统,MATLAB2014a及以上版本。 3.适用专业:计算机、电子信息工程、数学、物理、机械工程、土木工程等专业的大学生、研究生毕业设计,各类专业的课程设计、海外留学生作业等。 4作者介绍:资深算法工程师, 从事Matlab、Python算法仿真工作15年,专业研究遗传算法、粒子群算法、蚁群算法、鲸鱼算法、狼群算法等. 有问题联系QQ: 1579325979
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
免费JAVA毕业设计 2024成品源码+论文+录屏+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
小学元旦晚会PPT 模版
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
MATLAB中的语义分割技术探究与应用实践,matlab,语义分割 ,matlab; 语义分割,Matlab语义分割技术解析
免费JAVA毕业设计 2024成品源码+论文+数据库+启动教程 启动教程:https://www.bilibili.com/video/BV1SzbFe7EGZ 项目讲解视频:https://www.bilibili.com/video/BV1Tb421n72S 二次开发教程:https://www.bilibili.com/video/BV18i421i7Dx
1、文件内容:pulseaudio-10.0-6.el7_9.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/pulseaudio-10.0-6.el7_9.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
"基于OpenCV与深度学习的人脸表情识别系统:利用Python与PyQt构建的可视化实时检测工具",基于OpenCV的人脸表情识别系统 相关技术:python,opencv,pyqt,深度学习 (请自行安装向日葵远程软件,以便提供远程帮助) 可编译为.exe文件。 软件说明:摄像头实时检测,加载照片,视频均可。 有基础的同学,可自行修改完善。 第一张和第二张为运行截图。 ,基于OpenCV的人脸表情识别系统; Python; OpenCV; PyQt; 深度学习; 实时检测; 照片和视频支持; 可编译为.exe文件; 运行截图。,"基于OpenCV与深度学习的人脸表情识别系统"
,步进方案,步进源码,两相步进矢量控制,超前角控制两种模式,成熟产品方案 支持特殊功能定制
三相储能PCS双向能量流动与Matlab仿真控制研究——基于SVPWM调制技术的建模与应用,三相储能PCS(Matlab仿真) 1.可实现Grid to Battery,Battery to Grid的能量双向流动。 2.本仿真基于Matlab仿真建立的模型, 3.采用SVPWM进行控制 ,三相储能PCS; 双向能量流动; Matlab仿真; SVPWM控制,三相储能PCS:能量双向流Matlab仿真模型(SVPWM控制)
deepseek部署教程.md
nodejs010-nodejs-ansicolors-0.3.2-1.el6.centos.alt.noarch.rpm
基于三菱PLC的四路抢答器控制系统原理及实践:含带解释的梯形图与IO分配图解,三菱 MCGS 基于PLC的四路抢答器控制系统 带解释的梯形图接线图原理图图纸,io分配,组态画面 ,三菱MCGS; PLC四路抢答器; 控制系统; 梯形图接线图; 原理图图纸; IO分配; 组态画面。,三菱PLC四路抢答器控制系统原理图及组态画面解析
基于运动数据时空特征提取的人类运动片段.pdf
基于机器学习的选股模型及投资组合研究.pdf
ollama安装包。。。。。。。。。。。。。。。。。
nodejs010-nodejs-ansistyles-0.1.3-1.el6.centos.alt.x86_64.rpm
Screenshot_20250201_111207_com_tencent_mm_LauncherUI.jpg
基于时空Transformer的端到端的视频注视目标检测.pdf