以下是一个Java实现的简单推箱子小游戏示例,其中使用二维数组表示游戏地图,通过不断移动箱子和人物来完成游戏:
import java.util.Scanner; public class SokobanGame { public static void main(String[] args) { char[][] map = { {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'}, {'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'}, {'#', ' ', ' ', ' ', '#', '#', '#', '#', ' ', '#'}, {'#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', '#'}, {'#', ' ', ' ', ' ', '#', 'O', ' ', ' ', ' ', '#'}, {'#', ' ', ' ', ' ', '#', 'X', ' ', ' ', ' ', '#'}, {'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'}, {'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'}, {'#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#'}, {'#', '#', '#', '#', '#', '#', '#', '#', '#', '#'} }; int playerRow = 4; int playerCol = 5; Scanner input = new Scanner(System.in); while (true) { for (char[] row : map) { for (char c : row) { System.out.print(c); } System.out.println(); } System.out.println("请移动方向键(上:W,下:S,左:A,右:D):"); char direction = input.next().charAt(0); int newRow = playerRow; int newCol = playerCol; switch (direction) { case 'w': case 'W': newRow--; break; case 's': case 'S': newRow++; break; case 'a': case 'A': newCol--; break; case 'd': case 'D': newCol++; break; default: System.out.println("无效的移动方向,请重新输入!"); continue; } if (map[newRow][newCol] == ' ') { map[playerRow][playerCol] = ' '; map[newRow][newCol] = '@'; playerRow = newRow; playerCol = newCol; } else if (map[newRow][newCol] == 'O') { int nextRow = newRow + (newRow - playerRow); int nextCol = newCol + (newCol - playerCol); if (map[nextRow][nextCol] == ' ') { map[playerRow][playerCol] = ' '; map[newRow][newCol] = '@'; map[nextRow][nextCol] = 'O'; playerRow = newRow; playerCol = newCol; } else { System.out.println("无法移动箱子,请重新输入移动方向!"); } } else { System.out.println("无法移动,请重新输入移动方向!"); } if (isGameCompleted(map)) { System.out.println("恭喜你成功完成了游戏!"); break; } } } public static boolean isGameCompleted(char[][] map) { for (char[] row : map) { for (char c : row) { if (c == 'X') { return false; } } } return true; } }
在上述推箱子小游戏示例中,我们创建了一个基于二维数组的推箱子小游戏。在游戏开始时,我们定义了地图(由#、空格、人物@、箱子O和目标点X等字符组成)和玩家起始位置。然后,我们使用Java的控制台输入功能来实现游戏的交互式操作。当玩家按下方向键时,程序将根据用户的输入来移动人物或箱子,并检查游戏是否完成。
注意:这只是一个简单的推箱子小游戏示例,您可以根据需要添加更多的功能和逻辑来创作自己的游戏项目。例如,您可以添加关卡选择、难度调整、地图编辑器等更高级的功能,使游戏更具挑战性和趣味性。
此外,您还可以通过使用JavaFX或其他游戏引擎来创建更丰富的游戏界面和交互效果。这些工具提供了更多的图形化控件和视觉效果,可以帮助您快速构建复杂的游戏场景和动画效果。
总之,推箱子小游戏是一个非常受欢迎的益智类游戏,它不仅可以提高玩家的空间想象能力和逻辑思维能力,也是学习Java编程语言和控制台应用程序开发的绝佳案例。
评论