前几篇文章在这里
记忆翻牌游戏(一)
记忆翻牌游戏(二)
记忆翻牌游戏(三)

在上一篇中我们已经实现了记忆翻牌游戏的大部分功能,游戏也能正常运行。那我们怎样才能知道游戏已经结束了呢?还是需要给用户一点提示。
今天就来实现最后一点游戏结束功能

最终效果

当牌桌上所有的扑克牌都被消除时,给用户一个游戏结束的信息。

需要做的就是,在每一轮比较之后,检查桌面上是否还残存有扑克牌,若有,则游戏继续,若没有,则游戏结束。

if (cards.size() == 0) {            //配对的牌全部找到,游戏结束showText("Game Over!",300,200);Greenfoot.stop();
}

显示画面如下:


完整代码如下:

import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.ArrayList;
import java.util.Collections;/*** 牌桌类,提供游戏的运行场景*/
public class Table extends World{ArrayList<Card> cards = new ArrayList<Card>();  //声明一个保存扑克牌对象的集合cards //Table类的构造方法public Table() {   super(600, 400, 1);for (int i=1; i<=5; i++) {      //向集合cards中添加两组共10张5点以下的牌cards.add(new Card(i));cards.add(new Card(i));}Collections.shuffle(cards); //集合类Collections的混排算法,用于打乱集合cards中牌的顺序int x=100, y=100;   //牌桌上摆放牌的起点坐标for (int i=0; i<5; i++) {   //用for循环依次在牌桌上摆放每排5张,共两排的扑克牌addObject(cards.get(i) , x, y);addObject(cards.get(i+5) , x, y + cards.get(i).getImage().getHeight() + 20);x += cards.get(i).getImage().getWidth()+20;}}//act()方法是游戏单步执行的动作public void act() {     int count = 0, card1Value=0, card2Value=0;   //count表示牌桌上被翻开的第几张牌Card card1=null, card2=null;for (int i=0; i< cards.size(); i++) {   //用for循环遍历集合cards中的所有牌if (cards.get(i).getFaceup() == true) { //如果遍历到的这张牌是翻开的count++;       //用count将牌桌上翻开的牌数累加if (count == 1) {          //如果是第一张翻开的牌card1 = cards.get(i);  card1Value = card1.getValue(); //变量card1Value记录第一张翻开牌的点数}if (count == 2) {           //如果是第二张翻开的牌card2 = cards.get(i);card2Value = card2.getValue();   //变量card2Value记录第二张翻开牌的点数if (card1Value == card2Value) {   // 如果翻开的两张牌的点数是一样的 Greenfoot.playSound("WaterDrop.wav");Greenfoot.delay(10); //延迟10毫秒,游戏效果更好//移除翻开的两张同样的牌removeObject(card1);removeObject(card2);cards.remove(card1);cards.remove(card2);if (cards.size() == 0) {    //配对的牌全部找到,游戏结束showText("Game Over! ",  300, 200);Greenfoot.stop();}}else {   //如果翻开的两张牌不同Greenfoot.delay(15);// 将两张牌面朝下背朝上card1.turnFaceDown();card2.turnFaceDown();}break;  //两张牌如相同,则移除,如不同,则翻回来。剩下的牌不再遍历,结束for循环}}}}
}

至此,记忆翻牌游戏已全部完成,但只是实现了最基本的功能,还有改进和完善的地方。

  • 加入更多的扑克牌
  • 添加计数器和计时器,记录玩家翻牌的次数以及整个游戏用时
  • 添加更多的文字提示
  • 使用其他图像

利用Greenfoot制作简单的小游戏——记忆翻牌游戏(四)相关推荐

  1. 利用Python制作简单的小程序:IP查看器

    前言 说实话,查看电脑的IP,也挺无聊的,但是够简单,所以就从这里开始吧.IP地址在操作系统里就可以直接查看.但是除了IP地址,我们也想通过IP获取地理地址和网络运营商情况.IP地址和地理地址并没有固 ...

  2. 利用函数制作简单计算器小功能

    输入任意数字进行任意计算并输出结果. 注意: 要注意数据类型之间的转换: return返回的是值!

  3. android打地鼠设计报告,android开发中利用handler制作一个打地鼠小游戏

    android开发中利用handler制作一个打地鼠小游戏 发布时间:2020-11-25 15:21:11 来源:亿速云 阅读:136 作者:Leah 这期内容当中小编将会给大家带来有关androi ...

  4. python制作阴阳师脚本_利用python制作一个阴阳师小游戏

    利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...

  5. 利用YQL制作自己的小工具

    YQL服务可以实现对网上不同数据源的query,filter,combine(查询,过滤,合并). YQL说明类似SQL.下面的例子就是用YQL说明实现从Flickr上得到一系列text为cat的图片 ...

  6. 利用DW制作简单的LOGO / 以及对CSS选择器的了解

    利用DW制作简单的LOGO 创建新的文件夹(Ctrl+shift+N) 了解CSS选择器 1.CSS选择器的分类 其中第三种id选择器是用的最多的,今天我们也要用到id选择器. 2.CSS是什么呢? ...

  7. 利用PHP制作简单的内容采集器

    利用PHP制作简单的内容采集器 作者:yzxh24    阅读人次:--    文章来源:天极论坛整理    发布时间:2018/4/23    网友评论()条   采集器,通常又叫小偷程序,主要是用 ...

  8. 利用PHP制作简单的内容采集器的原理分析

    利用PHP制作简单的内容采集器的原理分析 2008-12-12 11:24 前几天做了个小说连载的程序,因为怕更新麻烦,顺带就写了个采集器,采集八路中文网的,功能比较简单,不能自定义规则,不过大概思路 ...

  9. 记忆翻牌游戏代码html,原生JS实现记忆翻牌游戏

    本文实例为大家分享了JS实现记忆翻牌游戏的具体代码,供大家参考,具体内容如下 html代码 css代码 * { padding: 0; margin: 0; } #game { width: 600p ...

  10. python连连看小游戏_利用Python制作一个连连看小游戏,边学边玩!

    导语 今天我们将制作一个连连看小游戏,让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: pygame模块: 以及一些Python自带的模块 环境搭建 安装Python并添加到环 ...

最新文章

  1. 收藏!一篇文章搞懂项目管理
  2. 2018新年快乐 !(附幸运读者名单)
  3. html5圣诞贺卡,2016圣诞节手工贺卡图片大全
  4. chrome谷歌浏览器用这种方式清除缓存比较方便了,必须是调试模式才行
  5. iOS进阶之协议Protocol(13)
  6. Winform中使用代码编写Button按钮的点击事件
  7. 大量多风格多功能后台管理模板
  8. Python从N个数中找到最大的K个数
  9. JDK内置的进制转换
  10. 计算机相关科幻小说,科幻小说家和计算机科学家总是用人工智能来迷惑我们,计算机可以...
  11. gps test free android,GPSTest | F-Droid - Free and Open Source Android App Repository
  12. 【Kafka】failed due to invalid credentials with broker older than 1.1.0
  13. 为什么说 Web 开发永远不会退出历史舞台?
  14. python模拟超市抹零_Python基础练习二超市存包柜模拟
  15. 软件开发中协议制定的注意事项
  16. 3dsMax2018注册问题
  17. Android重新分区parted,分区工具parted的详解及常用分区使用方法【转】
  18. 安科瑞电力监控系统在安徽华光有效薄膜太阳能电池高温玻璃项目的应用
  19. 103.219.29杭州DNS常见的的5个网络安全威胁
  20. c语言中char的赋值

热门文章

  1. 威联通NAS配置阿里云域名和SSL证书
  2. 安装杀毒软件是保障计算机安全,电脑安全都需要哪些杀毒软件
  3. T检验和F检验\自由度
  4. 硬件基础-开尔文电桥法
  5. oracle 统计标准误差,标准偏差和标准误差的区别
  6. Mysql 临时表详解(temporary table)
  7. 必应壁纸php,自动下载每日必应壁纸到指定文件夹php源码
  8. javascript中map和filter的区别
  9. 智能座舱Tier1“抢攻“ADAS,环视/泊车是第一突破口
  10. Linux日本云服务器安全设置的基本步骤