千家信息网

java如何实现打砖块游戏

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍了java如何实现打砖块游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java如何实现打砖块游戏文章都会有所收获,下面我们一起来看看吧。一个打砖块游戏
千家信息网最后更新 2026年11月01日java如何实现打砖块游戏

这篇文章主要介绍了java如何实现打砖块游戏的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇java如何实现打砖块游戏文章都会有所收获,下面我们一起来看看吧。

一个打砖块游戏算法,供大家参考,具体内容如下

这里有一个打砖块游戏:小明面前有很多砖块,每个砖块上有一个字符,小明每击中一个砖块,会产生一个分值,而总分即这些分值总和。砖块上的字符可以是数字,符号或者字母,每个字符的规则如下:

  • 如果击中的砖块上是数字,分数就是数字的值

  • 如果击中的砖块上是’D’,分数就是上一个分值的两倍

  • 如果击中的砖块上是’+’,分数就是前两个分值的和

  • 如果击中的砖块上是’C’,则取消上一次成绩,之后的统计中不计算上一次成绩

写一个算法,为小明的游戏过程计算总成绩。

要求

输入为两个参数,一个叫blocks,代表一个字符列表,另一个叫n,代表列表中字符数量。
输出为一个整数,代表对给定列表计算的总成绩。

例子

输入为:
blocks = [5, -2, 4, C, D, 9, +, +], n = 8
输出为
27

计算过程如下:

第一次打中数字5,得分5分,总成绩5分
第二次打中数字-2,得分-2分,总成绩5 - 2 = 3分
第三次打中数字4,得分4分,总成绩3 + 4 = 7分
第四次打中字母C,上次成绩作废,总成绩回到第二次时的3分
第五次打中字母D,取上次分值-2,乘以2即-4分,总成绩为-1分。注意之前的C把第三次成绩取消了,不计入计算,所以再之前的第二次的得分作为上次成绩。
第六次打中数字9,得9分,总成绩-1 + 9 = 8分
第七次打中符号+,得9 - 4 = 5分,总成绩8 + 5 = 13分
第八次打中符号+,得5 + 9 = 14分,总成绩14 + 13 = 27分

算出总成绩27分

分析过程略,直接上代码:

import java.util.*;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Solution {    public static int totalScore(String[] blocks, int n) {        if(n <= 0) return 0;        if(blocks.length != n) return 0;        int sum = 0;        Integer[] lastScores = new Integer[n];        Arrays.fill(lastScores, 0);        List scoreList = new ArrayList<>(n);        for (int i = 0; i < n; i++) {            if ("C".equals(blocks[i])) {                sum -= lastScores[1];                scoreList.remove(lastScores[1]);                lastScores[1] = scoreList.get(scoreList.size() - 1);                lastScores[2] = scoreList.get(scoreList.size() - 2);            } else {                lastScores[0] = getScore(blocks[i], lastScores[1], lastScores[2]);                sum += lastScores[0];                scoreList.add(lastScores[0]);                lastScores[2] = lastScores[1];                lastScores[1] = lastScores[0];            }        }        return sum;    }    private static int getScore(String mark, int lastScore, int lastScore2) {        if (null == mark || "".equals(mark)) return 0;        if (isInteger(mark)) {            return Integer.parseInt(mark);        } else if ("D".equals(mark)) {            return lastScore * 2;        } else if ("+".equals(mark)) {            return lastScore + lastScore2;        }        return 0;    }    private static boolean isInteger(String mark) {        Pattern pattern = Pattern.compile("^-?[\\d]+$");        Matcher matcher = pattern.matcher(mark);        return matcher.matches();    }    public static void main(String[] args) {        String[] blocks = {"5", "-2", "4", "C", "D", "9", "+", "+"};        int n = blocks.length;        System.out.println(Solution.totalScore(blocks, n));    }}

关于"java如何实现打砖块游戏"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"java如何实现打砖块游戏"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

砖块 总成 总成绩 数字 分值 字符 成绩 得分 代表 内容 分数 字母 就是 知识 符号 过程 小明 两个 算法 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 什么是科技互联网 中国互联网科技工作委员会毛军 关于新基建和互联网科技 北京互联网科技 贷财互联网科技 腾讯科技 互联网女皇 广州善班互联网科技 海南科技产业互联网平台 广州慧亚互联网科技怎么样 北京华百购互联网科技有限公司 青岛科技大学互联网大赛研究生 广西互联网科技孵化中心 畅思互联网科技 互联网科技和法律行业 世界互联网领先科技成果获奖 互联网企业科技类企业如何做账 广州百诚互联网科技有限公司官网 互联网安防科技感 萌小萌互联网科技河南有限公司 知域互联网科技有限公司官网 互联网科技巨头监管 厦门中拓互联网络科技有限公司 互联网科技公司怎么样 互联网科技宣传片 金融科技和互联网金融 哈尔滨新华互联网科技 互联网企业和科技型企业 千方科技属于互联网企业吗 玉溪新华互联网科技好不好 南博望互联网科技有限公司
0