迷路、プレイヤー キャラクター、一定数の敵からなる小さなゲームを書いています。PCも敵もあるクラスに属しており、私が指定した基準に従って数ミリ秒ごとに動きを更新します。(これらの制限はすべて課題の一部です)。今、迷宮の壁で占められたマスに敵もPCも移動しないような条件を書こうとしています。このために、次のメソッドを使用しました (これらはすべて、私が作成している Game クラス内にあります)。
def isNotWall(self,x,y):
self.wallXI = 0
self.wallXF = 0
self.wallYI = 0
self.wallYF = 0
for wall in self.wallList:
self.wallXI = wall[0]*self.grid + 1
self.wallXF = (wall[0]+1)*self.grid
self.wallYI = wall[1]*self.grid + 1
self.wallYF = (wall[1]+1)*self.grid
if self.wallXI < x < self.wallXF and self.wallYI < y < self.wallYF:
return False
return True
ここで、wallList は配列座標内のすべての壁の x 座標と y 座標を含むリストであり、grid は各グリッド スクエアのサイズ (この場合は 32 ピクセル) です。
さて、私がこれをどのように実装したかの例として:
if snake[1] > self.heroe_x:
if self.isNotWall(snake[1] - 30,snake[2]):
snake[1] = snake[1] - 30 * segundos
ここで、snake[1] はピクセル単位の x 座標、snake[2] は y、segundos は経過したミリ秒数であるため、敵は適切な数のピクセルを移動します。
これによると、ヘビ (およびキャラクター) は、移動の最後の位置が壁で占められている場合、特定の方向に移動してはなりません。ただし、これは部分的にしか機能せず、動作が不安定で、一部の壁は一方向にしか機能せず、多くの場合、キャラクターは理由もなく壁の内側で動けなくなったり、停止したりします.
これらの欠陥を修正するための助けをいただければ幸いです。この質問はあまり簡潔ではないことは承知していますが、言語に慣れていないため、質問をより具体的にする方法が思いつきませんでした。以前の回答は役に立ちませんでした。前もって感謝します!