2015-06-01 3 views
2

У меня есть два разных уровня для моей игры в лабиринте для калькулятора ti-84, которые имеют одинаковый код. Хотя, один из уровней не заканчивается, когда персонаж достигает конца, и обрабатывает последнее пятно как стену.Как распознать, что персонаж находится в конце лабиринта?

ClrHome 
1→A 
1→B 
For(y,1,8 
For(x,1,16 
Output(y,x,sub(" XD", 1+[F](y,x),1 
End:End 
Repeat K=21 or [F](A,B)=2 
getkey→K 
If Ans 
Output(A,B," ") 
sum(△List(Ans={25,34})) 
A+Ans([F](A+Ans,B)≠1)→A 
sum(△List(K={24,26})) 
B+Ansnot([F](A,B+Ans)→B 
Output(A,Ans,"Θ") 
End 
ClrHome 
Display "You Win" 
Pause 
Goto 99 
+1

Если только один из ваших уровней не работает, и оба уровня используют один и тот же код, скорее всего, ошибка в матрице, которая поддерживает ваш лабиринт. Вы рассматриваете '1' как стену и' 2' как цель. Исправление, вероятно, делает квадрат цели обеих матриц '2' –

ответ

3

Проблема заключается в вашей логике для горизонтального перемещения, и я был бы готов поспорить, что в лабиринте, который работает, вы двигаетесь вверх или вниз на цели, в то время как в лабиринте, который не работает , вы двигаетесь вправо или влево на цель.

Ваш вертикальный коэффициент движения от Ans, ([F](A+Ans,B)≠1), оценивается как true, если текущая ячейка не 1, стена. С другой стороны, ваш коэффициент горизонтального движения Ans, not([F](A,B+Ans), оценивается как true, если текущая ячейка не 1 или 2, стена или цель. Измените его так, чтобы он был похож на вертикальную логику, ([F](A,B+Ans)≠1), и ваша игра должна быть исправлена.

Edit:

Кроме того, для выполнения, я бы рекомендовал вмещающее большую часть логики в случае того утверждения, потому что не нужно работать, если кнопка не нажата.

If K 
Then 
[Game Logic] 
End