所以我正在用Java构建pacman游戏来自学游戏编程.
我有基本的游戏窗口与pacman精灵和鬼精灵绘制,pacman用箭头键移动,不移动超出窗口的墙壁,等等.现在我正在尝试建立迷宫,就像在这图片:
没有给我直接/完整的解决方案,有人可以指导我如何建立这个?我在这里只讨论边界和管道('T'标记),你无法通过它,你必须四处走动.不是pacman吃的点.
这是我的问题:
1)创建这个迷宫最有效的算法/方法是什么?是否必须在每次调用paint()方法时绘制它,或者只有在游戏开始时才能绘制它并且永远不会再绘制它?
2)这将如何实际绘制到屏幕上?我假设fillRect()
将使用?
3)任何关于碰撞检测的提示(所以pacman/ghosts不能穿过墙壁)会有所帮助.
4)关于如何计算管道之间的空隙以便在它们之间填充点的任何提示也将是非常有帮助的.
谢谢
我不这样做.
我绘制图形地图,然后创建一个代表地图的2D数据数组.数据图将负责确定碰撞,吃点,糖果在哪里以及鬼魂在哪里.一旦所有逻辑处理完毕,只需使用2D数组在图形地图上以正确的像素坐标显示所有内容.
例如,用户按下左键.首先确定pacman位于元素3,3.元素3,2包含表示墙的信息,因此您可以实现代码以使其忽略该命令.
编辑:
每个元素都代表一个点的位置.例如:
不,看着电路板,我会说阵列看起来像这样.
d,d,d,d,d,d,d,d,d,d,d,d,w,w,d,d,d,d,d,d,d,d,d,d,d,d d,w,w,w,w,d,w,w,w,w,w,d,w,w,d,w,w,w,w,w,d,w,w,w,w,d p,w,w,w,w,d,w,w,w,w,w,d,w,w,d,w,w,w,w,w,d,w,w,w,w,p d,w,w,w,w,d,w,w,w,w,w,d,w,w,d,w,w,w,w,w,d,w,w,w,w,d d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d,d
等等.您可能希望选择比字符更灵活的数据结构,但是因为某些区域需要包含一堆不同的信息.即使鬼魂产卵区空白,也不允许pacman在那里.鬼魂和pacman的移动对于侧逃是不同的,糖果产卵点是一个空白点,但如果你想保持灵活,你会想要表示这是在每个地图的基础上.
你要记住的另一件事是pacman和幽灵经常在点之间,因此包含表示在1,2和1,3之间占据的空间百分比的信息对于碰撞检测以及确定是重要的.当你想从板上移除点,通电和糖果时.
这是给你的提示:
alt text http://www.freeimagehosting.net/uploads/66e4131f59.jpg
正确使用此提示将允许您处理渲染和碰撞检测,并且还允许您以紧凑的方式表示迷宫.