android的猜扑克牌游戏,Android简单猜扑克牌

老夫正在课堂上昏昏欲睡,突然邻座同学推了我一把问我这鬼玩意怎么写??

那就写在这里给你们看好咯:

1.首先,作业要求实现扑克牌的按压效果,这里要先在drawable文件夹下新建一个on_click的xml文件,用于保存按压效果,代码如下:

android:drawable="@drawable/image_back_yes"

android:state_pressed="true"/>

android:drawable="@drawable/image_back"

android:state_pressed="false"/>

其中用state_pressed的true或者false属性来设置是否为按压;当属性为true时表示被按压,此时加载被按压时的图片,若为false则表示正常状态,即扑克牌的背面;

2.之后在layout中编写五个扑克牌:

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:textSize="20sp"

android:layout_margin="10sp"

android:id="@+id/tv1"

android:text="@string/tv1"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

android:id="@+id/pukePai"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_margin="10sp"

android:id="@+id/img_1"

android:layout_width="100sp"

android:layout_height="150sp"

android:src="@drawable/on_click"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:clickable="true"/>

android:layout_margin="10sp"

android:layout_toStartOf="@id/img_1"

android:layout_below="@+id/img_1"

android:id="@+id/img_2"

android:layout_width="100sp"

android:layout_height="150sp"

android:src="@drawable/on_click"

android:clickable="true"/>

android:layout_margin="10sp"

android:id="@+id/img_3"

android:layout_width="100sp"

android:layout_height="150sp"

android:layout_toEndOf="@id/img_2"

android:layout_below="@id/img_1"

android:src="@drawable/on_click"

android:clickable="true"/>

android:id="@+id/img_4"

android:layout_width="100sp"

android:layout_height="150sp"

android:layout_toEndOf="@id/img_3"

android:layout_below="@id/img_1"

android:src="@drawable/on_click"

android:layout_margin="10sp"

android:clickable="true"/>

android:layout_margin="10sp"

android:id="@+id/img_5"

android:layout_width="100sp"

android:layout_height="150sp"

android:layout_below="@id/img_3"

android:layout_toEndOf="@id/img_2"

android:src="@drawable/on_click"

android:clickable="true"/>

注意这里使用的是ImageView,设置图片时由于给定的图片素材大小不一样,于是没有使用wrap_content属性,而是指定了空间的长与宽,背景设置使用android:Src语句,即“android:src="@drawable/on_click",此处不直接引用单一图片,而是引用刚才的on_click的xml文件,使ImageView能达到按压显示不同图片效果。

(Tip:由于版本问题,部分编译器可能无法支持“ android:layout_toEndOf”以及“ android:layout_toStartOf”属性。此时只需要将End替换为Right,Start替换为Left即可。即“ android:layout_toEndOf”替换为“android:layout_toRightOf”)。

3.主代码MainActivity:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private ImageView[] views = new ImageView[5];//保存界面上的五个ImageView控件

private int[] viewsId = {R.id.img_1,R.id.img_2,R.id.img_3,R.id.img_4,R.id.img_5};

private int[] imgs = {R.mipmap.image_a,R.mipmap.image_j,R.mipmap.image_q,R.mipmap.image_k,R.mipmap.image_joke};

int j = 3;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.pukepai);

for (int i = 0; i < 5; i++) {

views[i] = (ImageView) findViewById(viewsId[i]);

views[i].setOnClickListener(this);

}

//打乱明牌数组,直接在此处引用Random方法即可。

Random();

}

@Override

public void onClick(View v) {

for (int i = 0; i < 5; i++) {

if (v.getId() == views[i].getId()){

//显示明牌

views[i].setImageResource(imgs[i]);

views[i].setEnabled(false);

if (imgs[i] == R.mipmap.image_a){

Ban();

Toast.makeText(this, "你猜对了,游戏结束,点击空白处重新开始游戏", Toast.LENGTH_SHORT).show();

}else {

j--;

if (j >= 1){

Toast.makeText(this, "你猜错了,还剩"+j+"次机会!", Toast.LENGTH_SHORT).show();

}

if (j == 0){

Ban();

Toast.makeText(this, "Sorry,三次均未猜中,此次游戏结束,点击空白处重新开始游戏,下次加油哦!",

Toast.LENGTH_LONG).show();

}

}

}

}

}

/**

* 初始化视图,实现五张扑克牌背部

*/

private void initViews(){

j =3;

for (int i = 0; i < 5; i++) {

views[i] = (ImageView) findViewById(viewsId[i]);

//此处必须引用写入了按压逻辑的xml页面,直接引用背部页面将没有按压效果

views[i].setImageResource(R.drawable.on_click);

views[i].setEnabled(true);

}

Random();

}

/**

* 获取随机数

*/

private void Random(){

for (int i = 0; i < imgs.length; i++) {

int temp = imgs[i];

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

imgs[i] = imgs[s];

imgs[s] = temp;

}

}

/**

* 点击除了5个ImageViews以外的地方重新开始

* @param event

* @return

*/

@Override

public boolean onTouchEvent(MotionEvent event) {

initViews();

return true;

}

/**

* 当出发三次错误或者点击正确时,游戏结束,取消所有ImageView的点击事件;建议自己写个for循环

*/

private void Ban(){

views[0].setEnabled(false);

views[1].setEnabled(false);

views[2].setEnabled(false);

views[3].setEnabled(false);

views[4].setEnabled(false);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值