布局文件:

activity_main.xml:
1.<?xml version="1.0" encoding="utf-8"?>
2.<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3.    xmlns:app="http://schemas.android.com/apk/res-auto"
4.    xmlns:tools="http://schemas.android.com/tools"
5.    android:layout_width="match_parent"
6.    android:layout_height="match_parent"
7.    tools:context=".MainActivity">
8.
9.    <android.support.v7.widget.RecyclerView
10.        android:id="@+id/recyclerView"
11.        android:layout_width="0dp"
12.        android:layout_height="0dp"
13.        android:layout_marginStart="8dp"
14.        android:layout_marginLeft="8dp"
15.        android:layout_marginTop="8dp"
16.        android:layout_marginEnd="8dp"
17.        android:layout_marginRight="8dp"
18.        android:layout_marginBottom="8dp"
19.        app:layout_constraintBottom_toTopOf="@+id/linearLayout"
20.        app:layout_constraintEnd_toEndOf="parent"
21.        app:layout_constraintStart_toStartOf="parent"
22.        app:layout_constraintTop_toTopOf="parent" />
23.
24.    <LinearLayout
25.        android:id="@+id/linearLayout"
26.        android:layout_width="match_parent"
27.        android:layout_height="60dp"
28.        android:layout_marginStart="8dp"
29.        android:layout_marginLeft="8dp"
30.        android:layout_marginEnd="8dp"
31.        android:layout_marginRight="8dp"
32.        android:layout_marginBottom="8dp"
33.        android:orientation="horizontal"
34.        app:layout_constraintBottom_toBottomOf="parent"
35.        app:layout_constraintEnd_toEndOf="parent"
36.        app:layout_constraintStart_toStartOf="parent"
37.        app:layout_constraintTop_toBottomOf="@+id/recyclerView">
38.
39.        <TextView
40.            android:id="@+id/textView"
41.            android:layout_width="wrap_content"
42.            android:layout_height="wrap_content"
43.            android:layout_weight="1"
44.            android:text="score:" />
45.
46.        <Button
47.            android:id="@+id/button"
48.            android:layout_width="wrap_content"
49.            android:layout_height="wrap_content"
50.            android:onClick="reset"
51.            android:text="reset" />
52.
53.        <Button
54.            android:id="@+id/button2"
55.            android:layout_width="wrap_content"
56.            android:layout_height="wrap_content"
57.            android:onClick="showHistory"
58.            android:text="history" />
59.    </LinearLayout>
60.</android.support.constraint.ConstraintLayout>
activity_history.xml
1.<?xml version="1.0" encoding="utf-8"?>
2.<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3.    xmlns:app="http://schemas.android.com/apk/res-auto"
4.    xmlns:tools="http://schemas.android.com/tools"
5.    android:layout_width="match_parent"
6.    android:layout_height="match_parent"
7.    tools:context=".HistoryActivity">
8.
9.    <ListView
10.        android:id="@+id/listView"
11.        android:layout_width="0dp"
12.        android:layout_height="0dp"
13.        android:layout_marginStart="8dp"
14.        android:layout_marginLeft="8dp"
15.        android:layout_marginTop="8dp"
16.        android:layout_marginEnd="8dp"
17.        android:layout_marginRight="8dp"
18.        android:layout_marginBottom="8dp"
19.        app:layout_constraintBottom_toBottomOf="parent"
20.        app:layout_constraintEnd_toEndOf="parent"
21.        app:layout_constraintStart_toStartOf="parent"
22.        app:layout_constraintTop_toTopOf="parent" />
23.</android.support.constraint.ConstraintLayout>

Java文件

MainActivity.java
1.package com.example.recyclercardgame2;
2.
3.import android.support.annotation.NonNull;
4.import android.support.v7.widget.RecyclerView;
5.import android.view.View;
6.import android.view.ViewGroup;
7.import android.widget.Button;
8.
9.import com.example.recyclercardgame2.model.Card;
10.import com.example.recyclercardgame2.model.CardMatchingGame;
11.
12.public class CardGameAdapter extends RecyclerView.Adapter<CardGameAdapter.ViewHolder> {
13.
14.    private CardMatchingGame game;
15.    private View.OnClickListener monClickListener;
16.
17.    public void setonClickListener(View.OnClickListener monClickListener) {
18.        this.monClickListener = monClickListener;
19.    }
20.
21.
22.    public CardGameAdapter(CardMatchingGame game) {
23.        this.game = game;
24.    }
25.
26.    @NonNull
27.    @Override
28.    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
29.        View view = new Button(viewGroup.getContext());
30.        view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,360));
31.        ViewHolder viewHolder = new ViewHolder(view);
32.        return viewHolder;
33.    }
34.
35.    @Override
36.    public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
37.        Card card = game.cardAtIndex(i);
38.
39.        viewHolder.cardButton.setAlpha(card.isMatched() ? (float)0.5: 1);
40.        if(card.isChosen()){
41.            viewHolder.cardButton.setBackgroundResource(R.drawable.blankcard);
42.            viewHolder.cardButton.setText(card.getContents());
43.        } else {
44.            viewHolder.cardButton.setBackgroundResource(R.drawable.stanfordtree);
45.            viewHolder.cardButton.setText("");
46.        }
47.
48.        viewHolder.cardButton.setOnClickListener(new View.OnClickListener() {
49.            @Override
50.            public void onClick(View v) {
51.                if (monClickListener != null ) {
52.                    v.setTag(i);
53.                    monClickListener.onClick(v);
54.                }
55.            }
56.        });
57.    }
58.
59.    @Override
60.    public int getItemCount() {
61.        return game.count();
62.    }
63.
64.    public class ViewHolder extends RecyclerView.ViewHolder {
65.        Button cardButton;
66.        public ViewHolder(@NonNull View itemView) {
67.            super(itemView);
68.            cardButton = (Button) itemView;
69.        }
70.    }
71.}
HistoryActivity .java
1.package com.example.recyclercardgame2;
2.
3.import android.content.Intent;
4.import android.support.v7.app.AppCompatActivity;
5.import android.os.Bundle;
6.import android.widget.ArrayAdapter;
7.import android.widget.ListView;
8.
9.import java.util.ArrayList;
10.
11.public class HistoryActivity extends AppCompatActivity {
12.
13.    @Override
14.    protected void onCreate(Bundle savedInstanceState) {
15.        super.onCreate(savedInstanceState);
16.        setContentView(R.layout.activity_history);
17.
18.        Intent intent = getIntent();
19.        ArrayList<String> playHistory = intent.getStringArrayListExtra("history");
20.
21.        ListView listView = findViewById(R.id.listView);
22.
23.        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,playHistory);
24.        listView.setAdapter(adapter);
25.
26.    }
27.
28.    @Override
29.    public void finish() {
30.        super.finish();
31.        overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
32.    }
33.}

CardGameAdapter.java

1.package com.example.recyclercardgame2;
2.
3.import android.support.annotation.NonNull;
4.import android.support.v7.widget.RecyclerView;
5.import android.view.View;
6.import android.view.ViewGroup;
7.import android.widget.Button;
8.
9.import com.example.recyclercardgame2.model.Card;
10.import com.example.recyclercardgame2.model.CardMatchingGame;
11.
12.public class CardGameAdapter extends RecyclerView.Adapter<CardGameAdapter.ViewHolder> {
13.
14.    private CardMatchingGame game;
15.    private View.OnClickListener monClickListener;
16.
17.    public void setonClickListener(View.OnClickListener monClickListener) {
18.        this.monClickListener = monClickListener;
19.    }
20.
21.
22.    public CardGameAdapter(CardMatchingGame game) {
23.        this.game = game;
24.    }
25.
26.    @NonNull
27.    @Override
28.    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
29.        View view = new Button(viewGroup.getContext());
30.        view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,360));
31.        ViewHolder viewHolder = new ViewHolder(view);
32.        return viewHolder;
33.    }
34.
35.    @Override
36.    public void onBindViewHolder(@NonNull ViewHolder viewHolder, final int i) {
37.        Card card = game.cardAtIndex(i);
38.
39.        viewHolder.cardButton.setAlpha(card.isMatched() ? (float)0.5: 1);
40.        if(card.isChosen()){
41.            viewHolder.cardButton.setBackgroundResource(R.drawable.blankcard);
42.            viewHolder.cardButton.setText(card.getContents());
43.        } else {
44.            viewHolder.cardButton.setBackgroundResource(R.drawable.stanfordtree);
45.            viewHolder.cardButton.setText("");
46.        }
47.
48.        viewHolder.cardButton.setOnClickListener(new View.OnClickListener() {
49.            @Override
50.            public void onClick(View v) {
51.                if (monClickListener != null ) {
52.                    v.setTag(i);
53.                    monClickListener.onClick(v);
54.                }
55.            }
56.        });
57.    }
58.
59.    @Override
60.    public int getItemCount() {
61.        return game.count();
62.    }
63.
64.    public class ViewHolder extends RecyclerView.ViewHolder {
65.        Button cardButton;
66.        public ViewHolder(@NonNull View itemView) {
67.            super(itemView);
68.            cardButton = (Button) itemView;
69.        }
70.    }
71.}

Card.java文件

1.package com.example.recyclercardgame2.model;
2.
3.import java.io.Serializable;
4.
5./**
6. * Created by lys on 19/3/20.
7. */
8.public abstract class Card implements Serializable {
9.    private boolean _chosen;
10.    private  boolean _matched;
11.    public abstract String getContents();
12.    public boolean isChosen(){
13.        return _chosen;
14.    }
15.    public void setChosen(boolean chosen){
16.        _chosen = chosen;
17.    }
18.    public boolean isMatched(){
19.        return _matched;
20.    }
21.    public void setMatched(boolean matched){
22.        _matched = matched;
23.    }
24.    public int match(Card[] otherCards){
25.        int score = 0;
26.        for (Card card : otherCards) {
27.           if (card.getContents().equals(this)){
28.               score = 1;
29.           }
30.        }
31.        return score;
32.    }
33.}

Deck.java文件

1.package com.example.recyclercardgame2.model;
2.
3.import java.util.ArrayList;
4.import java.util.Random;
5.
6./**
7. * Created by liguiyang on 16/3/7.
8. */
9.public class Deck {
10.    private ArrayList<Card> _cards = new ArrayList<>();
11.    private Random r = new Random();
12.
13.    public void addCard(Card card,boolean atTop){
14.        if (atTop) {
15.            _cards.add(0,card);
16.        }else{
17.            _cards.add(card);
18.        }
19.    }
20.
21.    public void addCard(Card card){
22.        addCard(card,false);
23.    }
24.
25.    public Card drawRandomCard(){
26.        Card randomCard = null;
27.        if (_cards.size()>0){
28.            randomCard = _cards.remove(r.nextInt(_cards.size()));
29.        }
30.        return randomCard;
31.    }
32.}

PlayingCard.java文件

1.package com.example.recyclercardgame2.model;
2.
3.import java.util.Arrays;
4.
5.public class PlayingCard extends Card{
6.    private String _suit;
7.    private int _rank;
8.
9.    public String getSuit(){
10.        return _suit;
11.    }
12.    public void setSuit(String suit){
13.        if(Arrays.asList(PlayingCard.validSuits()).contains(suit)){
14.            _suit =  suit;
15.        }
16.    }
17.    public int getRank(){
18.        return _rank;
19.    }
20.    public void setRank(int rank){
21.        if(rank <= PlayingCard.maxRank()) {
22.            _rank = rank;
23.        }
24.    }
25.    public static String[] validSuits(){
26.        return new String[]{"♥","♦","♠","♣"};
27.    }
28.    private static String[] rankStrings(){
29.        return new String[]{"?","A","2","3","4","5","6","7","8","9","10","J","Q","K"};
30.    }
31.
32.    public static int maxRank(){
33.        return PlayingCard.rankStrings().length - 1;
34.    }
35.
36.    @Override
37.    public int match(Card[] otherCards) {
38.        int score = 0;
39.        if(otherCards.length == 1){
40.            PlayingCard otherCard = (PlayingCard) otherCards[0];
41.            if(otherCard.getRank()==this.getRank()){
42.                score =  4;
43.            }else if (otherCard.getSuit().equals(this.getSuit())){
44.                score = 1;
45.            }
46.        }
47.
48.        return score;
49.    }
50.
51.    @Override
52.    public String getContents() {
53.        return PlayingCard.rankStrings()[_rank] + _suit;
54.    }
55.}

PlayingDeck.java文件

1.package com.example.recyclercardgame2.model;
2.
3.
4.public class PlayingDeck extends Deck{
5.    public PlayingDeck(){
6.        super();
7.        for (String suit :
8.                PlayingCard.validSuits()) {
9.            for (int rank = 1  ; rank <= PlayingCard.maxRank() ; rank++) {
10.                PlayingCard card = new PlayingCard();
11.                card.setRank(rank);
12.                card.setSuit(suit);
13.                addCard(card);
14.            }
15.        }
16.    }
17.}

运行结果:

上课案列-翻牌游戏(重置、历史记录)相关推荐

  1. 用H5游戏进行节日营销案列分享

    用H5游戏进行节日营销案列分享 H5游戏现在多是用于营销活动,或者是节日营销,而节日营销可以说是商家营销的一个契机,用H5游戏推广活动这是比较常见的节日营销方式了.那么用H5游戏进行节日营销的案列有哪 ...

  2. 【新星计划python赛道】pygame让你一步步实现翻牌游戏(金币旋转、大头贴等),打造更有趣的新星之旅

    最近参加了新星计划,玩一下,然后我们的导师@梦想橡皮擦就提到,看能不能把我们赛道的博主的头像整成一个消消乐的翻牌游戏,我觉得挺好玩的,所以也就借这个机会试一把. 效果演示一把: 嘻嘻,有兴趣的朋友欢迎 ...

  3. 网站使用手机相机_孩子拿手机是在上课,还是玩游戏、看不良网站?4招查看使用记录...

    由于疫情影响,孩子们在家待了3个多月,家长们也是愁坏了.虽说一直都有安排孩子上网课,但毕竟是孩子,自控能力较弱,家长又不能时时陪伴在身边,监督他们学习,这也导致一部分不自觉的孩子,趁着上网课的时间,偷 ...

  4. 快速制作响应式的个人主页案列

    博哥教你使用纯CSS制作酷炫的个人名片效果 Author:博哥 时间:2023-01-11 前言 该文档对应的视频教程,请移步B站观看! 去B站播放该教程 一.需要掌握的前置知识和用的素材 1.1.前 ...

  5. Cocos别踩白块儿案列1

    Cocos  版本3.10 1.游戏介绍: <别踩白块儿>是由 Umoni Studio (Umoni Entertainment Limited 的前身)"制作的一款休闲益智游 ...

  6. Java基础再回首之设计模式系列①-----StrategyPattern 策略者模式(案列教程,附带demo)

    一.前言 自己学java学的也熟悉了.踏入工作的不归路之后,身为一个Android开发工程师,不仅要Java基础扎实,还要对其的设计模式有所掌握,最近在群听到<Head First>这本书 ...

  7. Android 电子签名,手写签名案列实现方法,并上传网页显示(base64)!

    最近说项目可能会用到一个电子签名,不需要识别的那种,只是一个单纯手写签名,然后以base64的格式提供给前端web页面.其实挺简单的,自定义一个手写view就上线了.Android 电子签名,手写签名 ...

  8. Unity非常简单的翻牌游戏教程,纯UI实现

    首先在场景中创建Canvas,加几个Button 为了排版方便,用了GridLayout 每个Button的结构是这样的,你要为Button里面加四个Image,我这样弄是为了省事,少写脚本 这四个I ...

  9. JavaScript 实战-翻牌游戏 - H5和CSS3 (1)

    前言 有段子说学习xxx语言从入门到放弃,当然这只是一句调侃,说明学习的门槛还是存在的,比如底层的C和汇编,难度不小,且需要更多基础知识,有时学起来少许枯燥,有编程天赋的人除外.如果想学得有趣不乏味, ...

最新文章

  1. 性能测试回归测试_自动网站性能回归测试
  2. [实验]自举?只不过是电容和二极管捣的乱
  3. AS3工程中的Loading的应用
  4. java 循环笔记_Java笔记之嵌套循环1
  5. Webrtc中stun和turn的理解
  6. 监狱数字化集成管理平台
  7. 使用Proteus 8.9仿真STM32F103流水灯实验
  8. 陈强老师公开课笔记3——中介效应的Stata操作
  9. 服务器用户与组没有everyone,一招教你为Windows 7共享文件夹设置Everyone权限
  10. 概率论与数理统计 基本概念
  11. 医院云PACS管理系统源码
  12. 计算机与u盘连接使用,u盘虽然与电脑连接,但是插上后却没有反应,这该如何解决?...
  13. datatable 属性介绍
  14. linux下的挂载点和分区是什么关系(详解挂载点)
  15. 函数模板和普通函数区别
  16. 计算机毕业设计Java抑郁症患者博客交流平台(系统+源码+mysql数据库+Lw文档)
  17. java中文括号转英文
  18. opencv3图像处理小程序(二)
  19. fcpx如何用光流法_熟悉这些fcpx剪辑技巧 快速提高你的剪辑效率
  20. 被尘封的故事技能点bug_热血传奇:当年的BUG技能玩法,战士这个技巧,现在还能用!...

热门文章

  1. Topic 12 临床预测模型之列线表 (Nomogram)
  2. [源码学习][知了开发]WebMagic-总体流程源码分析
  3. Linux下通过已连上无线的真机使虚拟机可上网
  4. python全角数字_python 半角全角的相互转换
  5. 微信开发 Weixin JS接口 隐藏微信中网页底部导航栏
  6. 小白采坑 非法反射警告 An illegal reflective access operation has occurred错误
  7. ​AAAI 2023 | 基于历史对比学习的时序知识图谱推理
  8. 求函数:x的n次方(函数递归)
  9. 如何利用Cacti监控机房温度
  10. 【教学类-30-04】10以内减法题不重复(一页两份)(包括6以内、7以内、8以内、9以内、10以内减法题 只抽取25个)