java 打砖块,编程打砖块游戏怎么做
一个玩砖块游戏的算法,供你参考,具体内容如下
下面是一个玩砖块的游戏:小明面前有很多砖块,每块砖块都有一个角色。小明每打一块砖,就会产生一个分数,总分数就是这些分数之和。砖块上的字符可以是数字、符号或字母。每个字符的规则如下:
如果击中的砖块是一个数字,得分就是该数字的值。如果击中的砖块是“D”,则得分是先前得分的两倍。如果击中的砖块是“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, 乘以注意之前的C取消了三级,计算时不算,所以把之前的二级作为最后一级。 第六次打中数字9,得9分,总分-1 9=8,第七次打中符号,得9-4=5,总分8.5=13,第八次打中符号,得5 9=14,总分14.13=27。
算出总分27分。
省略分析过程,直接加载代码:
导入Java . util . *;导入Java . util . regex . matcher;导入Java . util . regex . pattern;public class Solution { public static int total score(String[]blocks,int n){ if(n=0)return 0;if(blocks.length!=n)返回0;int sum=0;Integer[] lastScores=新整数[n];Arrays.fill(lastScores,0);list integer score list=new ArrayList(n);for(int I=0;I n;i ) { if (C 。equals(blocks[I]){ sum-=last scores[1];score list . remove(last scores[1]);last scores[1]=score list . get(score list . size()-1);last scores[2]=score list . get(score list . size()-2);} else { last scores[0]=get score(blocks[I],lastScores[1],last scores[2]);sum=last scores[0];score list . add(last scores[0]);last scores[2]=last scores[1];last scores[1]=last scores[0];} }返回sum} private static int get score(String mark,int lastScore,int lastScore2) { if (null==mark 。equals(mark))返回0;if(is integer(mark)){ return integer . parse int(mark);} else if (D 。equals(mark)){ return last score * 2;} else if()。equals(mark)){ return last score last score 2;}返回0;}私有静态布尔is integer(string mark){ pattern pattern=pattern.compile(^-?[ d]$ );matcher matcher=pattern . matcher(mark);返回matcher . matches();} public static void main(String[]args){ String[]blocks={ 5 ,-2 , 4 , C , D , 9 , , };int n=blocks.lengthsystem . out . println(solution . total score(blocks,n));}}}以上就是本文的全部内容。希望对大家的学习有所帮助,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。