※ ChatGPTを利用し、要約された質問です(原文:パックマンプログラム)
パックマンプログラムの改良方法
このQ&Aのポイント
パックマンプログラムの壁にぶつかってゲームオーバーになる問題を解決する改良方法を教えてください。
プレイヤーとモンスターの距離が2以下の場合は上に移動するようにする。
プレイヤーの周囲のエサをチェックし、右、下、左の順でエサがあれば移動するようにする。エサがない場合は上に移動する。
パックマンプログラムを作っているんですが以下のように壁にぶつかってゲームオーバーになります。すべてのエサを食べさせたいんですがどのように以下のプログラムを改良すればいいですか?
map(MAPDATA型):マップの情報(通路・エさ・壁の位置)
p(POSITION型):プレイヤーの位置情報
e(POSITION型):モンスターの位置情報
0:通路
1:エサ
2:壁
プレイヤーのx座標:p.x,モンスターのy座標:e.y
MAP_WIDTH:マップの横幅 (19)
MAP_HEIGHT:マップの縦幅 (22)
NUM_FOOD:エサの最大数 (156)
#include <stdio.h>
#include "Info.h"
#include "math.h"
MOVEMENT playerAI(MAPDATA map, POSITION p, POSITION e)
{
if (abs(p.x - e.x) + abs(p.y - e.y) <= 2) { return UP; };
if (map[p.y][p.x + 1] == 1) { return RIGHT; }
else if (map[p.y + 1][p.x] == 1) { return DOWN; }
else if (map[p.y][p.x - 1] == 1) { return LEFT; }
else if (map[p.y - 1][p.x] == 1) { return UP; }
else { return STAY; }
Game.cpp
http://codepad.org/C2opgSUX
Red AI.cpp
http://codepad.org/zlwvnPTX
補足
何回も申し訳ないです。 壁がなかったらとは否定の!を使うんでしょうか?