功能实现
已知一副扑克牌有54张,去除大王和小王,剩余52张。在其中抽取4张牌,利用加减乘除进行计算得到24,除法必须能够除尽。编写程序从一副扑克牌,选择4张,进行计算是否能得到24。如果可以,排序列出可能的计算表达式,可能有多种计算形式。
设计思想
为每张扑克牌的视图都设置点击事件的函数chooseCard(),通过view.getId()可以知道对应的视图id,用switch和case来判断选择的扑克牌,并添加上扑克牌的取值信息。将已选区域的四个位置设成栈,遍历栈,如果当前位置是空的话,就将选择的牌进栈,同时通过view.setVisibility(View.INVISIBLE);语句,将扑克牌队列中相应的牌设置为不可见,用:
chooseCards.get(i).setBackground(getResources().getDrawable(curCardImage));语句在当前空位置上获得选中牌的ImageView,从而在已选区显示。
创建清空函数,将四个位置的背景信息重设成初始状态,并将他们获得的扑克牌值置为零,同时用栈弹出里面已选扑克牌的ImageView,来将这些ImageView设置成可见状态:
为Button “Calculate”设置点击事件弹窗函数,若为选满四张就点击,则提示"Please choose four cards!"。若有符合条件的24点表达式则遍历并显示出所有结果,并说明共有多少种结果。若不能产生24点则提示"Sorry! Your choice cannot make up to 24 points"。
关于24点的计算,先从四个数字中有序选择两个数进行加、减、乘、除,其中一种运算,得到的结果与剩下的两个数一起,再从这三个数中有序选择,得到的结果与剩下的数再运算,然后回溯所有情况,获得结果为24的情况。
程序结构
Java类
布局文件
程序流程图
运行结果展示
![]() | ![]() |
![]() | ![]() |
![]() |