首页 > 其他分享 >消消乐_中级代码

消消乐_中级代码

时间:2024-06-01 22:00:46浏览次数:23  
标签:中级 Level int 代码 元素 消消 static public 消除

本次消消乐会预先提供五个游戏地图,分别表示五关。五关的通关条件分别为:

  1. 消除⾄少6个A

  2. 消除⾄少6个B

  3. 消除⾄少3个B和⾄少3个C

  4. 总共消除9个元素(元素类型可以不同)

  5. 有两次消除操作满⾜:消除掉的元素个数⼤于5个(元素类型可以不同)

实现的功能:

功能1
游戏玩家识别出满⾜消除规则1的⼀组棋⼦,选择其中⼀个完成消除,并填补空缺。
如果选择的棋⼦在⽔平和垂直都有满⾜条件的相邻棋⼦构成直线,需要都消除。只⽤消除选择棋⼦所在的直
线,⽆需扩散消除。
注意此处的空缺填补⽅式为:消除棋⼦后,上⽅的棋⼦会下落填补空缺,然后在顶部的空缺随机产⽣新的棋
⼦。
功能2
如果两个相邻的棋⼦交换后能满⾜消除规则1,我们称为他们可交换。⽤户可以选择任何⼀颗棋⼦,程序按照
上下左右的步骤,找到第⼀个可交换的棋⼦,执⾏交换,应⽤功能1的规则更新棋盘。
功能3
显示棋盘当前状态
display命令显示当前关卡的信息,包括当前关卡的通关条件和进度。
功能4
重新开始游戏
restart
程序打印出总共消除的的元素的个数后,使⽤之前初始化的棋盘,重新开始⼀次新的游戏。注意:请考虑合
理使⽤构造函数,合理使⽤/避免使⽤ static。
功能5
退出游戏。
exit
分别有四类不同的特殊元素:
'|':在这个元素上触发clear时,消除所有纵向的元素;
'+':在这个元素上触发clear时,消除周围距离为⼩于等于1的(包括斜向)的所有元素;
⼩写的字⺟'a,b,c,d,e':消除所有对应的⼤写字⺟(如触发a则消除所有A)。
注意,此时为简化算法,如果'|'或'+'触发了其它特殊元素,不产⽣连锁反应。
元素随机⽣成:0.9的概率⽣成正常元素(P(A)=P(B)=P(C)=P(D)=P(E)=9/50);0.1的概率⽣成特殊元素
(P(|)=P(+)=P(a)=……=1/70)。
游戏开始时有2个锤子道具(注意是整个游戏开始时,而不是单个关卡开始时),可以击碎任意的元素,击碎后还是进行下移和随机生成元素的操作。道具使用后会消 耗掉。如果一次消除了5个或5个以上的元素可以获得一个锤子道具。tool:    输入后,print   出现有的道具名称及其道具数量(现道具只有hammer)
hammer x x:  输入后消除并只消除掉对应位置的任意元素(包括特殊元素)

直接代码展示:

Level.txt

C E B A C 
B A C C E 
A B A E A 
D A D A D 
E A D C B 

C E B A C 
B A C C E 
A B A E D 
D B D B D 
E A B A B 

C E B A C 
B A C C E 
A B A E D 
D B D C D 
E A D C B 

B E B A C 
B A C c E 
A + A E D 
D C D A D 
E C D E B 

C E B A C 
B a C C E 
A B A + D 
D B D C D 
E A D C | 

Level.java

package Matching;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Level {
	//读取level信息
	static int swapNumber = 0;//判断交换条件
	protected static int countA = 0;//A消除的个数
	protected static int countB2 = 0;//第二关B消除的个数
	protected static int countC = 0;//第三关C消除的个数
	protected static int countB3 = 0;//第三关B消除的个数
	protected static int count4 = 0;//第四关总消除数
	protected static int operation = 0;//第五关

	char[][] Board;
	public static int level = 1;//关卡
	static String[] L = new String[5];

	static {
		L[0] = "Level 1: " + countA + "/6 of A has been eliminated.";
		L[1] = "Level 2: " + countB2 + "/6 of B has been eliminated.";
		L[2] = "Level 3: " + countB3 + "/3 of B and " + countC + "/3 of C have been eliminated.";
		L[3] = "Level 4: " + count4 + "/9 of elements has been eliminated.";
		L[4] = "Level 5: " + operation + "/2 of clear operation meets the requirement.";
	}

	public Level(char[][] Board) {
		this.Board = Board;
	}


	public Level() {
	}

	public static Level[] LevelGame = new Level[5];

	public static char[][][] readFile(String path) {
		char[][][] boards = new char[5][5][5];
		File file = new File(path);
		if (file.exists()) {
			try {
				Scanner input = new Scanner(file);
				for (int h = 0; h < 5; h++) {
					for (int i = 0; i < 5; i++) {
						for (int j = 0; j < 5; j++) {
							if (input.hasNext()) {
								boards[h][i][j] = input.next().charAt(0);
							}
						}
						input.nextLine(); // 读取行尾
					}
				}
				input.close();
			} catch (FileNotFoundException ex) {
				System.out.println("File not found");
				System.exit(0);
			}
		} else {
			System.out.println("File does not exist");
			System.exit(0);
		}
		return boards;
	}

	public static void InitializeGame() {
		// 初始化关卡
		char[][][] boards = readFile("level.txt");
		for (int i = 0; i < boards.length; i++) {
			LevelGame[i] = new Level(boards[i]);
		}
	}
}

Game.java

package Matching;

import java.util.Random;

public class Game extends ChessBoard {
	static int count = 0;//指定消除的的元素的个数
	static int count1 = 1;//水平计数
	static int count2 = 1;//竖直计数
	static int hammer = 2;//初始锤子数量为2

	void special1(int x, int y) {
		//对|的操作
		for (int j = 0; j <= 4; j++) {
			if (Level.level == 1) {
				if

标签:中级,Level,int,代码,元素,消消,static,public,消除
From: https://blog.csdn.net/2401_84974736/article/details/139380144

相关文章