24点游戏(代码版)

Point24

24点游戏的代码
文末附文本版链接

Piont24Dao

24点游戏的接口代码

package point24.dao;

import java.util.List;

/**
 * 24点游戏接口 
 * 其中声明了游戏介方法绍introtuct(),
 * 示例方法example(),
 * 玩家游戏方法play(),
 * 创建数字方法create(),
 * 列举结果方法enumerate(int[] nums)
 * 判断玩家得分的方法judge(List<String> numsList, List<String> result);
 * @author 莫得脑子
 *
 */
public interface Point24Dao {

	/**
	 * 游戏介绍
	 */
	public void introduce();

	/**
	 * 游戏示例
	 */
	public void example();

	/**
	 * 玩家游戏
	 * @return
	 * 返回玩家的答案
	 */
	public List<String> play();

	/**
	 * 创建4个随机数
	 * @return
	 * 返回创建的随机数
	 */
	public int[] create();

	/**
	 * * 传入创建的随机数
	 * 列举可能的结果
	 * @param nums
	 * @return
	 * * 返回列举结果
	 */
	public List<String> enumerate(int[] nums);

	/**
	 * 传入列举的结果和玩家输入的答案
	 * 判断玩家是否得分
	 * @param numsList
	 * @param result
	 * @return
	 * 返回玩家的生命值
	 */
	public int judge(List<String> numsList,List<String> result);

}

Point24DaoImpl

24点游戏接口的实现代码

package point24.dao.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import point24.dao.Point24Dao;

/**
 * 24点游戏接口的实现类
 * @author 莫得脑子
 *
 */
public class Point24DaoImpl implements Point24Dao{
	//玩家的生命值
	static int lifeValue=3;

	/**
	 * 游戏介绍
	 * 包含游戏简介和游戏规则
	 */
	@Override
	public void introduce() {

		//游戏简介
		System.out.println();
		System.out.println("简介:");
		System.out.println("\t24点是棋牌类益智游戏");
		System.out.println();
		System.out.println("\t它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受。");
		System.out.println(" 这种游戏方式简单易学,能健脑益智,是一项极为有益的活动。");
		System.out.println();
		
		//游戏规则
		System.out.println("规则:");
		System.out.println("\t随机生成4个数字(1~10),用加、减、乘、除(也可以用括号,开方乘方等数学运算)将四个数字计算成24");
		System.out.println("要求四个数字经过算术运算结果等于24");
		System.out.println("四个数字必须使用且只能使用一次");
		System.out.println();
	
	}

	/**
	 * 游戏示例
	 * 演示了24点游戏的界面,帮助玩家进一步了解游戏
	 */
	@Override
	public void example() {

		System.out.println("示例:");
		System.out.println();
		System.out.println("2   2   3   3"+"\t"+"请输入您的计算方法:");
		System.out.println("(2+2)*(3+3)");
		System.out.println("输入完成!");
	
	}

	/**
	 * 玩家游戏
	 * 玩家输入结果
	 * 返回玩家的输入结果
	 */
	@Override
	public List<String> play() {

		System.out.println("请输入您的计算方法:");
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		//创建集合
		//存储玩家的输入结果
		List<String> numsList = new ArrayList<String>();
		//将玩家的输入结果添加到集合中
		numsList.add(input);
		System.out.println(numsList);
		return numsList;
	
	}

	/**
	 * 创建随机数
	 * 创建游戏所需的4个随机数,
	 * 并将其返回
	 */
	@Override
	public int[] create() {

		System.out.println();
		System.out.println("四个随机数为:");
		//创建数组
		//存储生成的随机数
		int[] nums = new int[4];
		for (int i = 0; i < nums.length; i++) {
			nums[i]=(int) (Math.random()*10+1);
			System.out.print(nums[i]+"\t");
		}
		return nums;
	
	}

	/**
	 * 列举游戏的正确解法
	 * 
	 * 传入create()创建的随机数
	 * 返回游戏正解
	 */
	@Override
	public List<String> enumerate(int[] nums) {
		
		//创建集合
		//存储游戏的可能结果
		List<String> result = new ArrayList<String>();
		//游戏的正确结果的组数(默认组数为0)
		int count = 0;
		//玩家得分情况,默认不得分
		Boolean flag = false;
		
		if (nums[0]+nums[1]+nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]+nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"+"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]+nums[1]+nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]+nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"+"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]+nums[1]+nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]+nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"+"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]+nums[1]+nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]+nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"+"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]+nums[1]-nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]-nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"-"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]+nums[1]-nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]-nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"-"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]+nums[1]-nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]-nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"-"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]+nums[1]-nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]-nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"-"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]+nums[1]*nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]*nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"*"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]+nums[1]*nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]*nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"*"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]+nums[1]*nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]*nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"*"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]+nums[1]*nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]*nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"*"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]+nums[1]/nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]/nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"/"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]+nums[1]/nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]/nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"/"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]+nums[1]/nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]/nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"/"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]+nums[1]/nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]+nums[1]/nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"+"+nums[1]+"/"+nums[2]+"/"+nums[3]);
		}
		
		if (nums[0]-nums[1]+nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]+nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"+"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]-nums[1]+nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]+nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"+"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]-nums[1]+nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]+nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"+"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]-nums[1]+nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]+nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"+"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]-nums[1]-nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]-nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"-"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]-nums[1]-nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]-nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"-"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]-nums[1]-nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]-nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"-"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]-nums[1]-nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]-nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"-"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]-nums[1]*nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]*nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"*"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]-nums[1]*nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]*nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"*"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]-nums[1]*nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]*nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"*"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]-nums[1]*nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]*nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"*"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]-nums[1]/nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]/nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"/"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]-nums[1]/nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]/nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"/"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]-nums[1]/nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]/nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"/"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]-nums[1]/nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]-nums[1]/nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"-"+nums[1]+"/"+nums[2]+"/"+nums[3]);
		}

		if (nums[0]*nums[1]+nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]+nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"+"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]*nums[1]+nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]+nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"+"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]*nums[1]+nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]+nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"+"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]*nums[1]+nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]+nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"+"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]*nums[1]-nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]-nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"-"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]*nums[1]-nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]-nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"-"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]*nums[1]-nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]-nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"-"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]*nums[1]-nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]-nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"-"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]*nums[1]*nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]*nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"*"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]*nums[1]*nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]*nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"*"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]*nums[1]*nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]*nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"*"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]*nums[1]*nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]*nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"*"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]*nums[1]/nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]/nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"/"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]*nums[1]/nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]/nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"/"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]*nums[1]/nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]/nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"/"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]*nums[1]/nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]*nums[1]/nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"*"+nums[1]+"/"+nums[2]+"/"+nums[3]);
		}

		if (nums[0]/nums[1]+nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]+nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"+"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]/nums[1]+nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]+nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"+"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]/nums[1]+nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]+nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"+"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]/nums[1]+nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]+nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"+"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]/nums[1]-nums[2]+nums[3]==24) {
		flag=true;
 		result.add("nums[0]/nums[1]-nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"-"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]/nums[1]-nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]-nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"-"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]/nums[1]-nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]-nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"-"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]/nums[1]-nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]-nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"-"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]/nums[1]*nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]*nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"*"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]/nums[1]*nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]*nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"*"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]/nums[1]*nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]*nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"*"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]/nums[1]*nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]*nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"*"+nums[2]+"/"+nums[3]);
		}
		if (nums[0]/nums[1]/nums[2]+nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]/nums[2]+nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"/"+nums[2]+"+"+nums[3]);
		}
		if (nums[0]/nums[1]/nums[2]-nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]/nums[2]-nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"/"+nums[2]+"-"+nums[3]);
		}
		if (nums[0]/nums[1]/nums[2]*nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]/nums[2]*nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"/"+nums[2]+"*"+nums[3]);
		}
		if (nums[0]/nums[1]/nums[2]/nums[3]==24) {
			flag=true;
			result.add("nums[0]/nums[1]/nums[2]/nums[3]");
			count++;
			System.out.println("第"+count+"组解为:"+nums[0]+"/"+nums[1]+"/"+nums[2]+"/"+nums[3]);
		}
		
		if (flag==true) {
			System.out.println("这组数字有"+count+"组解");
		}else {
			result.add("无解");
			System.out.println("这组数字无解");
	}
		return result;
	
	}

	/**
	 * 判断玩家是否得分
	 */
	@Override
	public int judge(List<String> numsList, List<String> result) {

		//游戏玩家输入结果为空的情况
		if (numsList.isEmpty()) {
			System.out.println("您未输入您的解答!");
			lifeValue--;
			System.out.println("对不起!您浪费了您的一条生命值!您要输入您的结果哟~");
		}else {
			if (result.contains("无解")&&numsList.contains("无解")) {
				lifeValue++;
				System.out.println("恭喜!你答对了!生命值+1");
			}else {
				if (result.contains(numsList)) {
					lifeValue++;
					System.out.println("恭喜!你答对了!生命值+1");
				}
				if (!result.contains(numsList)) {
					lifeValue--;
					System.out.println("对不起!你答错了!生命值-1");
				}
			}
		}
	
		System.out.println("您现在的生命值为:"+lifeValue);
		if (lifeValue==0) {
			System.out.println("抱歉!您的生命值已经耗尽!即将退出本游戏...");
			System.exit(0);
		}
	
		return lifeValue;
	
	}

}

Point24Entity

24点游戏的实体类

package point24.entity;

import java.util.Arrays;
import java.util.List;
/**
 * 24点游戏的实体类
 * @author 莫得脑子
 *
 */
public class Point24 {
	
	//存储游戏创建的随机数
	int[] nums;
	//存储玩家的输入结果
	List<String> numsList;
	//存储游戏的可能结果
	List<String> result;
	
	/**
	 * 获得存储随机数的数组
	 * @return
	 */
	public int[] getNums() {
		return nums;
	}
	
	/**
	 * 设置随机数的数组
	 * @param nums
	 */
	public void setNums(int[] nums) {
		this.nums = nums;
	}
	
	/**
	 * 获得玩家输入结果的集合
	 * @return
	 */
	public List<String> getNumsList() {
		return numsList;
	}
	
	/**
	 * 设置玩家输入结果的集合
	 * @param numsList
	 */
	public void setNumsList(List<String> numsList) {
		this.numsList = numsList;
	}
	
	/**
	 * 获得游戏的可能结果的集合
	 * @return
	 */
	public List<String> getResult() {
		return result;
	}
	
	/**
	 * 设置游戏的可能结果的集合
	 * @param result
	 */
	public void setResult(List<String> result) {
		this.result = result;
	}
	
	/**
	 * 无参构造方法
	 */
	public Point24() {
		super();
	}
	
	/**
	 * 有参构造方法
	 * @param nums
	 * @param numsList
	 * @param result
	 */
	public Point24(int[] nums, List<String> numsList, List<String> result) {
		super();
		this.nums = nums;
		this.numsList = numsList;
		this.result = result;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + Arrays.hashCode(nums);
		result = prime * result + ((numsList == null) ? 0 : numsList.hashCode());
		result = prime * result + ((this.result == null) ? 0 : this.result.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Point24 other = (Point24) obj;
		if (!Arrays.equals(nums, other.nums))
			return false;
		if (numsList == null) {
			if (other.numsList != null)
				return false;
		} else if (!numsList.equals(other.numsList))
			return false;
		if (result == null) {
			if (other.result != null)
				return false;
		} else if (!result.equals(other.result))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "Point24 [nums=" + Arrays.toString(nums) + ", numsList=" + numsList + ", result=" + result + "]";
	}
	
	
}

Point24Test

24点游戏的测试类

package point24.test;

import java.util.Scanner;

import point24.dao.Point24Dao;
import point24.dao.impl.Point24DaoImpl;
import point24.entity.Point24;
/**
 * 24点游戏测试类
 * @author 莫得脑子
 *
 */
public class Point24Test {
	static Point24 p = new Point24();
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		/**
		 * 24点游戏界面
		 */
		while (true) {
			System.out.println("************************************************************");
			System.out.println("*********************   欢迎进入24点游戏          ********************");
			System.out.println("************************************************************");
			System.out.println("*************** 0.关于游戏       1.开始游戏        2.退出游戏 **************");
			System.out.println("************************************************************");
			System.out.println("   请选择菜单:      ");

			// 操作数
//			int choice = sc.nextInt();
			
			try {
				int choice = sc.nextInt();
				switch (choice) {
				case 0:
					System.out.println();
					System.out.println("******关于游戏******");
					//游戏介绍(简介,规则)
					introduce();
					//游戏示例
					example();
					System.out.println();
					break;
				case 1:
					System.out.println();
					System.out.println("******开始游戏******");
					// 创建游戏所需的4个数字
					create();
					// 玩家开始游戏
					play();
					//列举可能的结果
					emumerate();
					//判断玩家是否得分
					judge();
					System.out.println();
					break;
				case 2:
					System.out.println();
					System.out.println("******退出游戏******");
					//退出游戏
					System.out.println("退出成功!");
					System.exit(0);
					break;
				default:
					System.out.println();
					// 提示玩家操作有误
					System.out.println("操作错误!");
					System.out.println("请输入正确的操作数(0~2)");
					System.out.println();
					break;
				}
			} catch (Exception e) {
				System.out.println("操作错误!");
				System.out.println("您输入的操作数不是整数!");
				System.out.println("退出中...");
				System.exit(0);
			}
			
		}
	
	}

	private static void judge() {
		Point24Dao pd = new Point24DaoImpl();
		pd.judge(p.getNumsList(), p.getResult());
	}

	private static void emumerate() {
		Point24Dao pd = new Point24DaoImpl();
		p.setResult(pd.enumerate(p.getNums()));
	}

	private static void play() {
		Point24Dao pd = new Point24DaoImpl();
		p.setNumsList(pd.play());
	}

	private static void create() {
		Point24Dao pd = new Point24DaoImpl();
		p.setNums(pd.create());
	}

	private static void example() {
		Point24Dao pd = new Point24DaoImpl();
		pd.example();
	}

	private static void introduce() {
		Point24Dao pd = new Point24DaoImpl();
		pd.introduce();
	}
}

写在最后

  • 24点游戏写了好几天了,没写完时心里怪怪的,现在写完了,心里轻松了不少😊
  • 本博客所涉及的代码全部是本人(刚学习的小白)亲手敲击产生,非面向复制粘贴编程
  • 有些代码烂的自己都看不下去,但无奈技术不行不然我也不会把这么难看的代码拿出来 只能这么写
  • 接口的实现代码写的不怎么样(毕竟本人还是小白),有的地方写的不够全面

24点游戏文本版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 24点游戏代码实现 24点游戏是一款极富挑战性的游戏,它要求玩家利用随机给出的4个数字(0~9)的加减乘除的结果组成24。下面给出Python 24点游戏代码实现过程: 步骤1:安装random模块和operator模块。random模块用于产生随机的数字,operator模块用于定义加减乘除的函数 import random import operator 步骤2:定义一个函数generate_numbers(n)用于随机产生n个数字 def generate_numbers(n): numbers = [] for i in range(n): numbers.append(random.randint(0,9)) return numbers 步骤3:定义一个函数generate_expression()用于随机产生四则运算式 def generate_expression(): numbers = generate_numbers(4) operations = ('+', '-', '*', '/') expression = [] for i in range(3): expression.append(str(numbers[i])) expression.append(random.choice(operations)) expression.append(str(numbers[3])) return ''.join(expression) 步骤4:定义一个函数compute(expression)用于计算四则运算式的值 def compute(expression): return eval(expression) 步骤5:定义一个函数is_valid_expression(expression)用于判断计算结果是否等于24 def is_valid_expression(expression): try: return compute(expression) == 24 except ZeroDivisionError: return False 步骤6:主程序,利用while循环不断随机产生四则运算式,直到找到结果等于24为止 if __name__ == '__main__': while True: expression = generate_expression() if is_valid_expression(expression): print(expression) break 到这里,我们就完成了Python实现24点游戏代码,几行简单的代码即可实现这个有趣的小游戏。如果你感兴趣,请尝试着优化程序,让它更加高效、更加好玩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值