您好,欢迎访问一九零五行业门户网

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<integer> 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如何实现打砖块游戏的详细内容。
其它类似信息

推荐信息